{"openapi":"3.0.0","paths":{"/v2/accounts/auto-extend":{"post":{"description":"Accept auto extend barrier option","operationId":"AccountsController_acceptAutoExtend_v2","parameters":[],"responses":{"200":{"description":"Auto extended accepted.","content":{"application/json":{"example":{"success":true,"message":"Auto extended accepted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Accept auto extend","tags":["accounts"]}},"/v2/accounts/profile":{"get":{"description":"Get self account profile data","operationId":"AccountsController_profile_v2","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/AccountDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get profile","tags":["accounts"]},"patch":{"description":"Update self account profile data","operationId":"AccountsController_updateProfile[1]_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/AccountDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update profile","tags":["accounts"]}},"/v2/accounts":{"patch":{"description":"Update self account profile data","operationId":"AccountsController_updateProfile[0]_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/AccountDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update profile","tags":["accounts"]},"post":{"description":"This endpoint allows the user to create accounts","operationId":"AccountsController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/AccountDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create accounts","tags":["accounts"]},"get":{"description":"This endpoint allows the user to list all accounts","operationId":"AccountsController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"email":{"summary":"Filter by email","value":["email:eq:john.doe@example.com"]},"id":{"summary":"Filter by id","value":["id:eq:1"]},"accountRoleId":{"summary":"Filter by account_role_id","value":["account_role_id:eq:1"]},"accountName":{"summary":"Filter by account_name","value":["account_name:eq:Acme Inc"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]},"emailAscending":{"summary":"Sort by email ascending","value":["email:asc"]},"emailDescending":{"summary":"Sort by email descending","value":["email:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AccountDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all accounts","tags":["accounts"]}},"/v2/accounts/product-counts":{"get":{"description":"Get produt count for authorized account","operationId":"AccountsController_getProductCountForProfile_v2","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ActiveProductsDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get product count","tags":["accounts"]}},"/v2/accounts/connect":{"post":{"description":"Register an account using Connect application","operationId":"AccountsController_registerConnect_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupDto"}}}},"responses":{"200":{"description":"Email with instructions on how to confirm your email has been sent. Please check your email.","content":{"application/json":{"example":{"success":true,"message":"Email with instructions on how to confirm your email has been sent. Please check your email."}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"summary":"Register connect accounts","tags":["accounts"]}},"/v2/accounts/{id}/product-counts":{"get":{"description":"Get produt count for accounts by id","operationId":"AccountsController_getProductCountForAccount_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ActiveProductsDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get product count for accounts","tags":["accounts"]}},"/v2/accounts/product-licenses":{"get":{"description":"Get product licenses for authorized account","operationId":"AccountsController_getProductLicensesForProfile_v2","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ProductLicenseSummaryDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}}},"security":[{"bearer":[]}],"summary":"Get product licenses for account","tags":["accounts"]}},"/v2/accounts/{id}/sync-invoice":{"post":{"description":"Manually trigger an invoice generation","operationId":"AccountsController_syncInvoicing_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/MessageDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}}},"security":[{"bearer":[]}],"summary":"Sync invoices","tags":["accounts"]}},"/v2/accounts/{id}/product-licenses":{"get":{"description":"Get product count by account ids","operationId":"AccountsController_getProductLicensesCountForAccount_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ActiveProductsDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get product count by account","tags":["accounts"]}},"/v2/accounts/{id}/account-users":{"get":{"description":"This endpoint allows the user to list all account users for account","operationId":"AccountsController_getAccountUsers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"email":{"summary":"Filter by email","value":["email:eq:john.doe@example.com"]},"accountUserRoleId":{"summary":"Filter by account_user_role_id","value":["account_user_role_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]},"emailAscending":{"summary":"Sort by email ascending","value":["email:asc"]},"emailDescending":{"summary":"Sort by email descending","value":["email:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AccountUserDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all account users for account","tags":["accounts"]}},"/v2/accounts/{id}":{"get":{"description":"This endpoint allows the user to get accounts by id","operationId":"AccountsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/AccountDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get accounts","tags":["accounts"]},"patch":{"description":"This endpoint allows the user to update accounts by id","operationId":"AccountsController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/AccountDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update accounts","tags":["accounts"]},"delete":{"description":"This endpoint allows the user to delete accounts by id","operationId":"AccountsController_delete_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete accounts","tags":["accounts"]}},"/v2/lots/{id}/managers":{"get":{"description":"This endpoint allows the user to list all lot managers","operationId":"LotsController_findManagersByLot_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"email":{"summary":"Filter by email","value":["email:eq:john.doe@example.com"]},"name":{"summary":"Filter by name","value":["name:eq:defualt lot"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"emailAscending":{"summary":"Sort by email ascending","value":["email:asc"]},"emailDescending":{"summary":"Sort by email descending","value":["email:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ListLotManagersDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all lot managers","tags":["lots"]},"patch":{"description":"This endpoint allows the user to update lot managers by id","operationId":"LotsController_updateManagers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLotManagersDto"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"example":{"success":true,"data":[{"success":true,"id":1,"account_user_id":1}]}}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update lot managers","tags":["lots"]}},"/v2/lots/{id}/managers/{managerId}":{"delete":{"description":"This endpoint allows the user to delete lot managers by id","operationId":"LotsController_removeLotManager_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"managerId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete lot managers","tags":["lots"]}},"/v2/lots":{"post":{"description":"This endpoint allows the user to create lots","operationId":"LotsController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLotDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create lots","tags":["lots"]},"get":{"description":"This endpoint allows the user to list all lots","operationId":"LotsController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"anprPresence":{"summary":"Filter by anpr_presence","value":["anpr_presence:eq:true"]},"detectionImplementationStatus":{"summary":"Filter by detection_implementation_status","value":["detection_implementation_status:eq:true"]},"lotParkingDetection":{"summary":"Filter by lot_parking_detection","value":["lot_parking_detection:eq:true"]},"name":{"summary":"Filter by name","value":["name:eq:defualt lot"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LotDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all lots","tags":["lots"]}},"/v2/lots/{id}":{"patch":{"description":"This endpoint allows the user to update lots by id","operationId":"LotsController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLotDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotDto"}}}]}}}},"400":{"description":"You cannot update lot detection parameters without an valid lot detection on the lot. Please add parking detection to the lot first.","content":{"application/json":{"example":{"errors":[{"code":304,"message":"No Parking detection active for lot."}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update lots","tags":["lots"]},"delete":{"description":"This endpoint allows the user to delete lots by id","operationId":"LotsController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete lots","tags":["lots"]},"get":{"description":"This endpoint allows the user to get lots by id","operationId":"LotsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get lots","tags":["lots"]}},"/v2/lots/{id}/rgbCount":{"get":{"description":"This endpoint allows the user to get the free space count by lot ids for the RGB display.","operationId":"LotsController_getRgbCount_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns free spot count for the RGB display","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LotFreeSpotsDto"}}}}},"summary":"Get free space count for lot","tags":["lots"]}},"/v2/parking-place-changes/export":{"get":{"description":"This endpoint allows the user to get the parking place changes CSV file","operationId":"ParkingPlaceChangesController_exportToCSV_v2","parameters":[{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"duration":{"summary":"Filter by duration","value":["duration:eq:3600"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"lotIds":{"summary":"Filter by lot_ids","value":["lot_ids:eq:1,2,3"]},"parkingPlaceId":{"summary":"Filter by parking_place_id","value":["parking_place_id:eq:1"]},"parkingPlaceIds":{"summary":"Filter by parking_place_ids","value":["parking_place_ids:eq:1,2,3"]},"occupancyStatus":{"summary":"Filter by occupancy_status","value":["occupancy_status:eq:occupied"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"zoneIds":{"summary":"Filter by zone_ids","value":["zone_ids:eq:1,2,3"]},"createdAt":{"summary":"Filter by created_at","value":["created_at:eq:2024-01-01T00:00:00.000Z"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get parking place changes CSV file","tags":["parking place changes"]}},"/v2/parking-place-changes":{"get":{"description":"This endpoint allows the user to list all parking place changes","operationId":"ParkingPlaceChangesController_findAll_v2","parameters":[{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"createdAt":{"summary":"Filter by created_at","value":["created_at:eq:2024-01-01T00:00:00.000Z"]},"duration":{"summary":"Filter by duration","value":["duration:eq:3600"]},"endTime":{"summary":"Filter by end_time","value":["end_time:eq:2024-01-31T00:00:00.000Z"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"lotIds":{"summary":"Filter by lot_ids","value":["lot_ids:eq:1,2,3"]},"parkingPlaceName":{"summary":"Filter by parking_place_name","value":["parking_place_name:eq:john doe"]},"occupancyStatus":{"summary":"Filter by occupancy_status","value":["occupancy_status:eq:occupied"]},"parkingPlaceId":{"summary":"Filter by parking_place_id","value":["parking_place_id:eq:1"]},"parkingPlaceIds":{"summary":"Filter by parking_place_ids","value":["parking_place_ids:eq:1,2,3"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"zoneIds":{"summary":"Filter by zone_ids","value":["zone_ids:eq:1,2,3"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ParkingPlaceChangeDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all parking place changes","tags":["parking place changes"]}},"/v2/parking-place-changes/{id}":{"get":{"description":"This endpoint allows the user to get parking place changes by id","operationId":"ParkingPlaceChangesController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ParkingPlaceChangeDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get parking place changes","tags":["parking place changes"]}},"/v2/account-users/password-reset":{"post":{"description":"Send a password reset email","operationId":"AccountUsersController_passwordReset_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResetPasswordDto"}}}},"responses":{"201":{"description":"Email with the instructions on how to reset your password has been sent. Please check your email.","content":{"application/json":{"example":{"success":true,"message":"Email with the instructions on how to reset your password has been sent. Please check your email."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"summary":"Create a password reset email","tags":["account users"]}},"/v2/account-users/password-reset/confirmation":{"post":{"description":"Confirm your email after resting the passowrd","operationId":"AccountUsersController_passwordResetConfirm_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmPasswordResetDto"}}}},"responses":{"201":{"description":"Password successfully changed.","content":{"application/json":{"example":{"success":true,"message":"Password successfully changed."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"422":{"description":"Link that the user clicked on has either expired or the signature is invalid meaning someone purposefully changed it.","content":{"application/json":{"example":{"errors":[{"code":10,"message":"Invalid URL signature."}]}}}}},"summary":"Confirm password reset email","tags":["account users"]}},"/v2/account-users/email-activation":{"post":{"description":"Confirm your email after registering","operationId":"AccountUsersController_activateEmail_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResetPasswordDto"}}}},"responses":{"201":{"description":"Data for creating a password reset email","content":{"application/json":{"example":{"success":true,"message":"Data for creating a password reset email"}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"summary":"Email activation confirmation","tags":["account users"]}},"/v2/account-users/email-activation/confirmation":{"post":{"description":"Confirm account creation","operationId":"AccountUsersController_emailActivationConfirm_v2","parameters":[],"responses":{"200":{"description":"Email successfully confirmed.","content":{"application/json":{"example":{"success":true,"message":"Email successfully confirmed."}}}}},"summary":"Confirm account creation","tags":["account users"]}},"/v2/account-users/profile":{"get":{"description":"Get self account user data","operationId":"AccountUsersController_profile_v2","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/AccountUserDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get self account user","tags":["account users"]},"patch":{"description":"This endpoint allows the user to update account users profile by id","operationId":"AccountUsersController_updateSelf_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProfileDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/AccountUserDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update account users profile","tags":["account users"]}},"/v2/account-users/space-invoice-login":{"get":{"description":"You can use this endpoint to acquire a space invoice token for further authorisation","operationId":"AccountUsersController_getSpaceInvoiceToken_v2","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/SpaceInvoiceTokenDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get space invoice login token","tags":["account users"]}},"/v2/account-users":{"post":{"description":"Invite an account user to Parklio™ system under specific account user role","operationId":"AccountUsersController_inviteAccountUer_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteAccountUserDto"}}}},"responses":{"200":{"description":"Account user successfully invited.","content":{"application/json":{"example":{"success":true,"message":"Account user successfully invited."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Invite Account user","tags":["account users"]},"get":{"description":"This endpoint allows the user to list all account users","operationId":"AccountUsersController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"email":{"summary":"Filter by email","value":["email:eq:john.doe@example.com"]},"accountRoleId":{"summary":"Filter by account_role_id","value":["account_role_id:eq:1"]},"accountName":{"summary":"Filter by account_name","value":["account_name:eq:Acme Inc"]},"lots":{"summary":"Filter by lots","value":["lots:eq:1,2,3"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]},"emailAscending":{"summary":"Sort by email ascending","value":["email:asc"]},"emailDescending":{"summary":"Sort by email descending","value":["email:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AccountUserDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all account users","tags":["account users"]}},"/v2/account-users/{id}":{"get":{"description":"This endpoint allows the user to get account users by id","operationId":"AccountUsersController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/AccountUserDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get account users","tags":["account users"]},"patch":{"description":"This endpoint allows the user to update account users by id","operationId":"AccountUsersController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountUserDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/AccountUserDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update account users","tags":["account users"]},"delete":{"description":"This endpoint allows the user to delete account users by id","operationId":"AccountUsersController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"400":{"description":"This is a generic bad request error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"errors":[{"code":33,"message":"This is a generic bad request error"}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete account users","tags":["account users"]}},"/v2/auth/login":{"post":{"description":"Login using Parklio™ Connect","operationId":"AuthController_login[0]_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LoginResponseDto"}}}]}}}},"403":{"description":"User has entered a wrong password. Due to security reason we should not specify this and instead say that the email/password combination is wrong.","content":{"application/json":{"example":{"errors":[{"code":8,"message":"Wrong email/password combination."}]}}}}},"summary":"Login","tags":["auth"]}},"/v2/auth/account/login":{"post":{"description":"Login using Parklio™ Connect","operationId":"AuthController_login[1]_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LoginResponseDto"}}}]}}}},"403":{"description":"User has entered a wrong password. Due to security reason we should not specify this and instead say that the email/password combination is wrong.","content":{"application/json":{"example":{"errors":[{"code":8,"message":"Wrong email/password combination."}]}}}}},"summary":"Login","tags":["auth"]}},"/v2/auth/account/social":{"post":{"description":"Login using supported third party providers","operationId":"AuthController_socialLogin[0]_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialLoginDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LoginResponseDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"summary":"Social login","tags":["auth"]}},"/v2/auth/social":{"post":{"description":"Login using supported third party providers","operationId":"AuthController_socialLogin[1]_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialLoginDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LoginResponseDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"summary":"Social login","tags":["auth"]}},"/v2/api-tokens":{"post":{"description":"This endpoint allows the user to create api-tokens","operationId":"ApiTokenController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiTokenDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/CreateApiTokenDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create api-tokens","tags":["api tokens"]},"get":{"description":"This endpoint allows the user to list all api-tokens","operationId":"ApiTokenController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]},"createdAtAscending":{"summary":"Sort by created_at ascending","value":["created_at:asc"]},"createdAtDescending":{"summary":"Sort by created_at descending","value":["created_at:desc"]},"updatedAtAscending":{"summary":"Sort by updated_at ascending","value":["updated_at:asc"]},"updatedAtDescending":{"summary":"Sort by updated_at descending","value":["updated_at:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ApiTokenDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all api-tokens","tags":["api tokens"]}},"/v2/api-tokens/{id}":{"get":{"description":"This endpoint allows the user to get api-tokens by id","operationId":"ApiTokenController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ApiTokenDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get api-tokens","tags":["api tokens"]},"delete":{"description":"This endpoint allows the user to delete api-tokens by id","operationId":"ApiTokenController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete api-tokens","tags":["api tokens"]}},"/v2/gateways/assign-to-user":{"post":{"description":"This endpoint serves the purpose of associating a gateway \n    with a particular lot and user. To establish this association, \n    the user must obtain the gateway challenge by scanning the \n    Bluetooth advertisement data emitted by the gateway while it is in pairing mode.\n    ","operationId":"GatewaysController_assignToUser_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignGatewayToUserDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/GatewayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Assigns a gateway to an lot and the lot owner","tags":["gateways"]}},"/v2/gateways/{id}/operation":{"post":{"description":"This endpoint serves as the command center for managing a \n      gateway device, enabling users to execute essential operations such as\n      rebooting, info or forcing a scan.\n    ","operationId":"GatewaysController_runOperation_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayOperationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/GatewayOperationResponseDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Run a operation on a gateway","tags":["gateways"]}},"/v2/gateways":{"post":{"description":"This endpoint is allows Parklio internal users, to add a\n     Parklio Gateway to the Parklio ecosystem.\n    ","operationId":"GatewaysController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGatewayDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/GatewayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create a gateway","tags":["gateways"]},"get":{"description":"This endpoint allows the user to list all gateways","operationId":"GatewaysController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"status":{"summary":"Filter by status","value":["status:eq:online"]},"uuid":{"summary":"Filter by uuid","value":["uuid:eq:123e4567-e89b-12d3-a456-426614174000"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]},"createdAtAscending":{"summary":"Sort by created_at ascending","value":["created_at:asc"]},"createdAtDescending":{"summary":"Sort by created_at descending","value":["created_at:desc"]},"updatedAtAscending":{"summary":"Sort by updated_at ascending","value":["updated_at:asc"]},"updatedAtDescending":{"summary":"Sort by updated_at descending","value":["updated_at:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/GatewayDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all gateways","tags":["gateways"]}},"/v2/gateways/{id}":{"get":{"description":"This endpoint allows the user to get gateways by id","operationId":"GatewaysController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/GatewayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get gateways","tags":["gateways"]},"patch":{"description":"This endpoint allows the user to update gateways by id","operationId":"GatewaysController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGatewayDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/GatewayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update gateways","tags":["gateways"]},"delete":{"description":"This endpoint allows the user to delete gateways by id","operationId":"GatewaysController_unassign_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Gateway successfuly unassigned.","content":{"application/json":{"example":{"success":true,"message":"Gateway successfuly unassigned."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete gateways","tags":["gateways"]}},"/v2/zones":{"post":{"description":"This endpoint allows the user to create zones","operationId":"ZonesController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateZoneDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ZoneDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create zones","tags":["zones"]},"get":{"description":"This endpoint allows the user to list all zones","operationId":"ZonesController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"anprPresence":{"summary":"Filter by anpr_presence","value":["anpr_presence:eq:true"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"lotIds":{"summary":"Filter by lot_ids","value":["lot_ids:eq:1,2,3"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ZoneDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all zones","tags":["zones"]}},"/v2/zones/{id}":{"get":{"description":"This endpoint allows the user to get zones by id","operationId":"ZonesController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ZoneDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get zones","tags":["zones"]},"patch":{"description":"This endpoint allows the user to update zones by id","operationId":"ZonesController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateZoneDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ZoneDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update zones","tags":["zones"]},"delete":{"description":"This endpoint allows the user to delete zones by id","operationId":"ZonesController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete zones","tags":["zones"]}},"/v2/zones/{id}/rgbCount":{"get":{"description":"This endpoint allows the user to get the free space count by lot ids for the RGB display.","operationId":"ZonesController_getRgbCount_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns free spot count for the RGB display","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZoneFreeSpotsDto"}}}}},"summary":"Get free space count for zone","tags":["zones"]}},"/v2/zones/{id}/vector":{"get":{"description":"Returns the zone's vector map as a raw SVG, with each parking place dot colored according to its current occupancy status.","operationId":"ZonesController_getVector_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"The populated vector map SVG"},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get populated vector map for a zone","tags":["zones"]}},"/v2/zones/{id}/tariffs/{tariffId}":{"put":{"description":"This endpoint allows the user to assign zone tariffs by id","operationId":"ZonesController_assignMember_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}},{"name":"tariffId","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ZoneDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Assign zone tariffs","tags":["zones"]},"delete":{"description":"This endpoint allows the user to unassign zone tariffs by id","operationId":"ZonesController_unassignMember_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"tariffId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ZoneDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Unassign zone tariffs","tags":["zones"]}},"/v2/zones/{id}/tariffs":{"post":{"description":"This endpoint allows the user to bulk assign zone tariffs by using their ids","operationId":"ZonesController_assignMembers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignTariffsToZoneDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ZoneDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk assign zone tariffs","tags":["zones"]},"delete":{"description":"This endpoint allows the user to bulk unassign zone tariffs by using their ids","operationId":"ZonesController_unassignMembers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnssignTariffsFromZoneDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ZoneDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk unassign zone tariffs","tags":["zones"]},"put":{"description":"This endpoint allows the user to replace zone tariffs by id","operationId":"ZonesController_replaceMembers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceTariffsForZone"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ZoneDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Replace zone tariffs","tags":["zones"]}},"/v2/zones/{zone_id}/tariffs/{tariff_id}":{"patch":{"description":"This endpoint allows the user to update zone tariff order by id","operationId":"ZonesController_updateOrder_v2","parameters":[{"name":"zone_id","required":true,"in":"path","schema":{"type":"string"}},{"name":"tariff_id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTariffOrderDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ZoneDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update zone tariff order","tags":["zones"]}},"/v2/tariffs":{"post":{"description":"This endpoint allows the user to create tariffs","operationId":"TariffsController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTariffDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TariffDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create tariffs","tags":["tariffs"]},"get":{"description":"This endpoint allows the user to list all tariffs","operationId":"TariffsController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"createdAt":{"summary":"Filter by created_at","value":["created_at:eq:2024-01-01T00:00:00.000Z"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TariffDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all tariffs","tags":["tariffs"]}},"/v2/tariffs/{id}":{"get":{"description":"This endpoint allows the user to get tariffs by id","operationId":"TariffsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TariffDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get tariffs","tags":["tariffs"]},"put":{"description":"This endpoint allows the user to replace tariffs by id","operationId":"TariffsController_replaceOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceTariffDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TariffDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Replace tariffs","tags":["tariffs"]},"patch":{"description":"This endpoint allows the user to update tariffs by id","operationId":"TariffsController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTariffDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TariffDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update tariffs","tags":["tariffs"]},"delete":{"description":"This endpoint allows the user to delete tariffs by id","operationId":"TariffsController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete tariffs","tags":["tariffs"]}},"/v2/tariffs/{id}/groups/{groupId}":{"put":{"description":"This endpoint allows the user to assign tariff groups by id","operationId":"TariffsController_assignMember_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}},{"name":"groupId","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TariffDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Assign tariff groups","tags":["tariffs"]},"delete":{"description":"This endpoint allows the user to unassign tariff groups by id","operationId":"TariffsController_unassignMember_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"groupId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TariffDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Unassign tariff groups","tags":["tariffs"]}},"/v2/tariffs/{id}/groups":{"post":{"description":"This endpoint allows the user to bulk assign tariff groups by using their ids","operationId":"TariffsController_assignMembers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignGroupsToTariffDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TariffDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk assign tariff groups","tags":["tariffs"]},"delete":{"description":"This endpoint allows the user to bulk unassign tariff groups by using their ids","operationId":"TariffsController_unassignMembers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignGroupsToTariffDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TariffDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk unassign tariff groups","tags":["tariffs"]},"put":{"description":"This endpoint allows the user to replace tariff groups by id","operationId":"TariffsController_replaceMembers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceGroupsForTariffDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TariffDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Replace tariff groups","tags":["tariffs"]}},"/v2/groups":{"post":{"description":"This endpoint allows the user to create groups","operationId":"GroupsController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGroupDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/GroupDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create groups","tags":["groups"]},"get":{"description":"This endpoint allows the user to list all groups","operationId":"GroupsController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"createdAt":{"summary":"Filter by created_at","value":["created_at:eq:2024-01-01T00:00:00.000Z"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/GroupDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all groups","tags":["groups"]}},"/v2/groups/{id}":{"get":{"description":"This endpoint allows the user to get groups by id","operationId":"GroupsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/GroupDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get groups","tags":["groups"]},"put":{"description":"This endpoint allows the user to replace groups by id","operationId":"GroupsController_replaceOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceGroupDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/GroupDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Replace groups","tags":["groups"]},"patch":{"description":"This endpoint allows the user to update groups by id","operationId":"GroupsController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGroupDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/GroupDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update groups","tags":["groups"]},"delete":{"description":"This endpoint allows the user to delete groups by id","operationId":"GroupsController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete groups","tags":["groups"]}},"/v2/groups/{id}/members/{memberId}":{"put":{"description":"This endpoint allows the user to assign group members by id","operationId":"GroupsController_assignMember_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}},{"name":"memberId","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/GroupDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Assign group members","tags":["groups"]},"delete":{"description":"This endpoint allows the user to unassign group members by id","operationId":"GroupsController_unassignMember_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"memberId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/GroupDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Unassign group members","tags":["groups"]}},"/v2/groups/{id}/members":{"post":{"description":"This endpoint allows the user to bulk assign group members by using their ids","operationId":"GroupsController_assignMembers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignMembersToGroupDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/GroupDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk assign group members","tags":["groups"]},"delete":{"description":"This endpoint allows the user to bulk unassign group members by using their ids","operationId":"GroupsController_unassignMembers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignMembersToGroupDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/GroupDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk unassign group members","tags":["groups"]},"put":{"description":"This endpoint allows the user to replace group members by id","operationId":"GroupsController_replaceMembers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceMembersForGroupDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/GroupDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Replace group members","tags":["groups"]}},"/v2/members":{"post":{"description":"This endpoint allows the user to create members","operationId":"MembersController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMemberDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/MemberDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create members","tags":["members"]},"get":{"description":"This endpoint allows the user to list all members","operationId":"MembersController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"licensePlate":{"summary":"Filter by license_plate","value":["license_plate:eq:AB123CD"]},"email":{"summary":"Filter by email","value":["email:eq:john.doe@example.com"]},"createdAt":{"summary":"Filter by created_at","value":["created_at:eq:2024-01-01T00:00:00.000Z"]},"groupId":{"summary":"Filter by group_id","value":["group_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MemberDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all members","tags":["members"]}},"/v2/members/upload":{"post":{"operationId":"MembersController_createFromFile_v2","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"Upload a CSV file"}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/FileUploadResponse"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Create new members from a CSV file","tags":["members"]}},"/v2/members/sample/export":{"get":{"description":"This endpoint provides a sample CSV file formatted for creating new members. Use this file as a template for uploading members.","operationId":"MembersController_exportSampleCSV_v2","parameters":[],"responses":{"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Download members sample CSV file","tags":["members"]}},"/v2/members/{id}":{"get":{"description":"This endpoint allows the user to get members by id","operationId":"MembersController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/MemberDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get members","tags":["members"]},"put":{"description":"This endpoint allows the user to replace members by id","operationId":"MembersController_replaceOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceMemberDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/MemberDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Replace members","tags":["members"]},"patch":{"description":"This endpoint allows the user to update members by id","operationId":"MembersController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/MemberDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update members","tags":["members"]},"delete":{"description":"This endpoint allows the user to delete members by id","operationId":"MembersController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete members","tags":["members"]}},"/v2/lpr-cameras":{"post":{"description":"This endpoint serves the purpose of assigning a parklio lpr\n    camera to the account of the authorised user. Assigning is done by scanning\n    the UUID sticker located on the LPR Camera.","operationId":"LprCamerasController_assign_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignLprCameraDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LprCameraDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Assign a new LPR Camera to an account","tags":["lpr cameras"]},"get":{"description":"This endpoint allows the user to list all lpr cameras","operationId":"LprCamerasController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"position":{"summary":"Filter by position","value":["position:eq:in"]},"status":{"summary":"Filter by status","value":["status:eq:online"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]},"updatedAtAscending":{"summary":"Sort by updated_at ascending","value":["updated_at:asc"]},"updatedAtDescending":{"summary":"Sort by updated_at descending","value":["updated_at:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LprCameraDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all lpr cameras","tags":["lpr cameras"]}},"/v2/lpr-cameras/axis":{"post":{"description":"This endpoint serves the purpose of assigning a parklio lpr\n    camera to the account of the authorised user. Assigning is done by scanning\n    the UUID sticker located on the LPR Camera.","operationId":"LprCamerasController_axisAssign_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignAxisLprCameraDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LprCameraDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"LPR has owner already set and trying to set another one won't work. User should first unassign LPR owner before trying again.","content":{"application/json":{"example":{"errors":[{"code":223,"message":"Lpr camera owner already set."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Assign a new Axis LPR Camera to an account","tags":["lpr cameras"]}},"/v2/lpr-cameras/{id}/state-changes":{"get":{"description":"This endpoint allows the user to list all lpr camera state changes","operationId":"LprCamerasController_findStateChanges_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]},"createdAtAscending":{"summary":"Sort by created_at ascending","value":["created_at:asc"]},"createdAtDescending":{"summary":"Sort by created_at descending","value":["created_at:desc"]},"statusAscending":{"summary":"Sort by status ascending","value":["status:asc"]},"statusDescending":{"summary":"Sort by status descending","value":["status:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LprCameraStateChangeDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all lpr camera state changes","tags":["lpr cameras"]}},"/v2/lpr-cameras/{id}":{"get":{"description":"This endpoint allows the user to get lpr cameras by id","operationId":"LprCamerasController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LprCameraDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get lpr cameras","tags":["lpr cameras"]},"patch":{"description":"This endpoint allows the user to update lpr cameras by id","operationId":"LprCamerasController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLprCameraDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LprCameraDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have sufficient account role to perform the desired action. Parklio could upgrade his account role.","content":{"application/json":{"example":{"errors":[{"code":11,"message":"Not allowed for undefined account role."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update lpr cameras","tags":["lpr cameras"]},"delete":{"description":"This endpoint allows the user to delete lpr cameras by id","operationId":"LprCamerasController_unassign_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have sufficient account role to perform the desired action. Parklio could upgrade his account role.","content":{"application/json":{"example":{"errors":[{"code":11,"message":"Not allowed for undefined account role."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete lpr cameras","tags":["lpr cameras"]}},"/v2/lpr-cameras/initial":{"post":{"description":"This endpoint allows the user to create lpr cameras","operationId":"LprCamerasController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLprCameraDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LprCameraDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"summary":"Create lpr cameras","tags":["lpr cameras"]}},"/v2/lpr-cameras/{id}/informations":{"get":{"description":"This endpoint returns the credentials used for the LPR Camera\n    setup. Using this information, the camera can be authenticated to the\n    Parklio Server","operationId":"LprCamerasController_getInformation_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/InformationLprCameraDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get the setup information for the LPR Camera.","tags":["lpr cameras"]}},"/v2/lpr-cameras/{id}/state":{"post":{"description":"This enpoint sends a OPEN operation to the camera. The open\n      operation will trigger a signal on the LPR Camera output which can be\n      used as input into any supported hardware, triggering an operation on the\n      device. For example, if the LPR Cameras output is connected to a Gate\n      input, it will trigger a change of state on the Gate.","operationId":"LprCamerasController_changeState_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeLprCameraStateDto"}}}},"responses":{"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"503":{"description":"LPR camera is not connected.","content":{"application/json":{"example":{"errors":[{"code":802,"message":"LPR camera is offline."}]}}}}},"security":[{"bearer":[]}],"summary":"Send the open signal to the camera","tags":["lpr cameras"]}},"/v2/lpr-cameras/{id}/reboot":{"post":{"description":"This enpoint sends a REBOOT comand to the LPR Camera, the\n    camera will reboot and come back online after a minute. Useful when an\n    problem happens with the camera.","operationId":"LprCamerasController_reboot_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"503":{"description":"LPR camera is not connected.","content":{"application/json":{"example":{"errors":[{"code":802,"message":"LPR camera is offline."}]}}}}},"security":[{"bearer":[]}],"summary":"Reboot the LPR Camera","tags":["lpr cameras"]}},"/v2/logs/lpr-remote-controls":{"get":{"description":"This endpoint allows the user to list all lpr remote controls","operationId":"LprRemoteControlLogsController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"lprCameraDeviceId":{"summary":"Filter by lpr_camera_device_id","value":["lpr_camera_device_id:eq:1"]},"lprCameraName":{"summary":"Filter by lpr_camera_name","value":["lpr_camera_name:eq:john doe"]},"accountUserId":{"summary":"Filter by account_user_id","value":["account_user_id:eq:1"]},"accountUserName":{"summary":"Filter by account_user_name","value":["account_user_name:eq:john doe"]},"operation":{"summary":"Filter by operation","value":["operation:eq:open"]},"dateFrom":{"summary":"Filter by date_from","value":["date_from:eq:2024-01-01T00:00:00.000Z"]},"dateTo":{"summary":"Filter by date_to","value":["date_to:eq:2024-01-31T00:00:00.000Z"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LprRemoteControlLogDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all lpr remote controls","tags":["logs"]}},"/v2/logs/lpr-remote-controls/{id}":{"get":{"description":"This endpoint allows the user to get lpr remote controls by id","operationId":"LprRemoteControlLogsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LprRemoteControlLogDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get lpr remote controls","tags":["logs"]}},"/v2/plate-readings":{"get":{"description":"This endpoint allows the user to list all plate-readings","operationId":"PlateReadingsController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accessDecision":{"summary":"Filter by access_decision","value":["access_decision:eq:triggered"]},"accessDecisionReason":{"summary":"Filter by access_decision_reason","value":["access_decision_reason:eq:tariff"]},"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"plate":{"summary":"Filter by plate","value":["plate:eq:DTPLATE-2"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"lprCameraId":{"summary":"Filter by lpr_camera_id","value":["lpr_camera_id:eq:1"]},"direction":{"summary":"Filter by direction","value":["direction:eq:in"]},"type":{"summary":"Filter by type","value":["type:eq:car"]},"createdAt":{"summary":"Filter by created_at","value":["created_at:eq:2024-01-01T00:00:00.000Z"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"createdAtAscending":{"summary":"Sort by created_at ascending","value":["created_at:asc"]},"createdAtDescending":{"summary":"Sort by created_at descending","value":["created_at:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PlateReadingDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all plate-readings","tags":["plate readings"]}},"/v2/plate-readings/{id}":{"get":{"description":"This endpoint allows the user to get plate-readings by id","operationId":"PlateReadingsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/PlateReadingDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get plate-readings","tags":["plate readings"]},"patch":{"description":"This endpoint allows the user to update plate-readings by id","operationId":"PlateReadingsController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePlateReadingDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/PlateReadingDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update plate-readings","tags":["plate readings"]}},"/v2/proactive-alerts/{id}/receivers":{"post":{"description":"This endpoint allows the user to bulk create proactive alerts","operationId":"ProactiveAlertsController_assignReceivers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignProactiveAlertReciversDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ProactiveAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk create proactive alerts","tags":["proactive alerts"]},"put":{"description":"This endpoint allows the user to bulk put proactive alerts","operationId":"ProactiveAlertsController_replaceReceivers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignProactiveAlertReciversDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ProactiveAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk put proactive alerts","tags":["proactive alerts"]},"delete":{"description":"This endpoint allows the user to bulk unassign proactive alert receivers by using their ids","operationId":"ProactiveAlertsController_unassignRecivers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnassignReceiversProacticeAlertDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ProactiveAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk unassign proactive alert receivers","tags":["proactive alerts"]}},"/v2/proactive-alerts/{alertId}/receivers/{receiverId}":{"put":{"description":"This endpoint allows the user to put proactive alerts receivers by id","operationId":"ProactiveAlertsController_assignSingle_v2","parameters":[{"name":"alertId","required":true,"in":"path","schema":{"type":"string"}},{"name":"receiverId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ProactiveAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Put proactive alerts receivers","tags":["proactive alerts"]}},"/v2/proactive-alerts/{id}":{"put":{"description":"This endpoint allows the user to put proactive alerts by id","operationId":"ProactiveAlertsController_replaceAlerts_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceProactiveAlertsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ProactiveAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Put proactive alerts","tags":["proactive alerts"]},"get":{"description":"This endpoint allows the user to get proactive alerts by id","operationId":"ProactiveAlertsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ProactiveAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get proactive alerts","tags":["proactive alerts"]},"patch":{"description":"This endpoint allows the user to update proactive alerts by id","operationId":"ProactiveAlertsController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProactiveAlertDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ProactiveAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update proactive alerts","tags":["proactive alerts"]},"delete":{"description":"This endpoint allows the user to delete proactive alerts by id","operationId":"ProactiveAlertsController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete proactive alerts","tags":["proactive alerts"]}},"/v2/proactive-alerts":{"post":{"description":"This endpoint allows the user to create proactive alerts","operationId":"ProactiveAlertsController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProactiveAlertDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ProactiveAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create proactive alerts","tags":["proactive alerts"]},"get":{"description":"This endpoint allows the user to list all proactive alerts","operationId":"ProactiveAlertsController_findAll_v2","parameters":[{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"createdAt":{"summary":"Filter by created_at","value":["created_at:eq:2024-01-01T00:00:00.000Z"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ProactiveAlertDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all proactive alerts","tags":["proactive alerts"]}},"/v2/proactive-alerts/{id}/receivers/{reciverId}":{"delete":{"description":"This endpoint allows the user to unassign proactive alert receivers by id","operationId":"ProactiveAlertsController_unassignSingleReciver_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"reciverId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ProactiveAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Unassign proactive alert receivers","tags":["proactive alerts"]}},"/v2/sessions":{"post":{"description":"This endpoint allows the user to create sessions","operationId":"SessionsController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreateSessionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/SessionDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create sessions","tags":["sessions"]},"get":{"description":"This endpoint allows the user to list all sessions","operationId":"SessionsController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"createdAt":{"summary":"Filter by created_at","value":["created_at:eq:2024-01-01T00:00:00.000Z"]},"endedAt":{"summary":"Filter by ended_at","value":["ended_at:eq:2024-01-31T00:00:00.000Z"]},"licensePlate":{"summary":"Filter by license_plate","value":["license_plate:eq:AB123CD"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"lprCameraId":{"summary":"Filter by lpr_camera_id","value":["lpr_camera_id:eq:1"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"publicId":{"summary":"Filter by public_id","value":["public_id:eq:123e4567-e89b-12d3-a456-426614174000"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"createdAtAscending":{"summary":"Sort by created_at ascending","value":["created_at:asc"]},"createdAtDescending":{"summary":"Sort by created_at descending","value":["created_at:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]},"endedAtAscending":{"summary":"Sort by ended_at ascending","value":["ended_at:asc"]},"endedAtDescending":{"summary":"Sort by ended_at descending","value":["ended_at:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SessionDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all sessions","tags":["sessions"]}},"/v2/sessions/vehicle-analytics":{"get":{"description":"Returns paginated analytics grouped by license plate, including visit count, total/average/longest stay duration, and last seen time.","operationId":"SessionsController_vehiclesAnalytics_v2","parameters":[{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"plateAscending":{"summary":"Sort by plate ascending","value":["plate:asc"]},"plateDescending":{"summary":"Sort by plate descending","value":["plate:desc"]},"visitsAscending":{"summary":"Sort by visits ascending","value":["visits:asc"]},"visitsDescending":{"summary":"Sort by visits descending","value":["visits:desc"]},"totalTimeSecondsAscending":{"summary":"Sort by total_time_seconds ascending","value":["total_time_seconds:asc"]},"totalTimeSecondsDescending":{"summary":"Sort by total_time_seconds descending","value":["total_time_seconds:desc"]},"avgStaySecondsAscending":{"summary":"Sort by avg_stay_seconds ascending","value":["avg_stay_seconds:asc"]},"avgStaySecondsDescending":{"summary":"Sort by avg_stay_seconds descending","value":["avg_stay_seconds:desc"]},"longestStaySecondsAscending":{"summary":"Sort by longest_stay_seconds ascending","value":["longest_stay_seconds:asc"]},"longestStaySecondsDescending":{"summary":"Sort by longest_stay_seconds descending","value":["longest_stay_seconds:desc"]},"lastSeenAscending":{"summary":"Sort by last_seen ascending","value":["last_seen:asc"]},"lastSeenDescending":{"summary":"Sort by last_seen descending","value":["last_seen:desc"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"createdAt":{"summary":"Filter by created_at","value":["created_at:eq:2024-01-01T00:00:00.000Z"]},"plate":{"summary":"Filter by plate","value":["plate:eq:AB123CD"]},"lotIds":{"summary":"Filter by lot_ids","value":["lot_ids:eq:1,2,3"]},"zoneIds":{"summary":"Filter by zone_ids","value":["zone_ids:eq:1,2,3"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Paginated vehicle analytics, grouped by plate.","content":{"application/json":{"schema":{"example":{"success":true,"data":[{"plate":"DTPLATE2","vehicle_label":"Red Peugeot 206SW","visits":3,"total_time_seconds":10800,"avg_stay_seconds":5400,"longest_stay_seconds":7200,"last_seen":"2026-08-24T14:00:00.000Z"}],"meta":{"total":1,"perPage":10,"currentPage":1,"lastPage":1,"firstPage":1,"firstPageUrl":"/?page=1","lastPageUrl":"/?page=1","nextPageUrl":null,"previousPageUrl":null}}}}}}},"security":[{"bearer":[]}],"summary":"Get vehicle analytics","tags":["sessions"]}},"/v2/sessions/vehicle-analytics/export":{"get":{"description":"This endpoint allows the user to get the vehicle analytics CSV file","operationId":"SessionsController_exportVehiclesAnalyticsToCSV_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"createdAt":{"summary":"Filter by created_at","value":["created_at:eq:2024-01-01T00:00:00.000Z"]},"plate":{"summary":"Filter by plate","value":["plate:eq:DTPLATE-2"]},"lotIds":{"summary":"Filter by lot_ids","value":["lot_ids:eq:1,2,3"]},"zoneIds":{"summary":"Filter by zone_ids","value":["zone_ids:eq:1,2,3"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"plateAscending":{"summary":"Sort by plate ascending","value":["plate:asc"]},"plateDescending":{"summary":"Sort by plate descending","value":["plate:desc"]},"visitsAscending":{"summary":"Sort by visits ascending","value":["visits:asc"]},"visitsDescending":{"summary":"Sort by visits descending","value":["visits:desc"]},"totalTimeSecondsAscending":{"summary":"Sort by total_time_seconds ascending","value":["total_time_seconds:asc"]},"totalTimeSecondsDescending":{"summary":"Sort by total_time_seconds descending","value":["total_time_seconds:desc"]},"avgStaySecondsAscending":{"summary":"Sort by avg_stay_seconds ascending","value":["avg_stay_seconds:asc"]},"avgStaySecondsDescending":{"summary":"Sort by avg_stay_seconds descending","value":["avg_stay_seconds:desc"]},"longestStaySecondsAscending":{"summary":"Sort by longest_stay_seconds ascending","value":["longest_stay_seconds:asc"]},"longestStaySecondsDescending":{"summary":"Sort by longest_stay_seconds descending","value":["longest_stay_seconds:desc"]},"lastSeenAscending":{"summary":"Sort by last_seen ascending","value":["last_seen:asc"]},"lastSeenDescending":{"summary":"Sort by last_seen descending","value":["last_seen:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get vehicle analytics CSV file","tags":["sessions"]}},"/v2/sessions/analytics":{"get":{"description":"Returns parking analytics data based on the provided filters.\n\n---\n\n### Metrics (`metric` filter)\n\n| Metric | Description |\n|--------|-------------|\n| `entry_count` |  The total number of vehicles that entered over a given period |\n| `exit_count` | The total number of vehicles that exited over a given period |\n| `peak_entry_time` | The hour of the day (0–23) with the highest number of vehicle entries |\n| `peak_exit_time` | The hour of the day (0–23) with the highest number of vehicle exits |\n\n---\n\n### Scopes (`scope` filter)\n\n| Scope | Description | ID filter |\n|-------|-------------|-----------|\n| `lot` | Aggregates data per parking lot | `lot_ids` |\n| `zone` | Aggregates data per zone within a lot | `zone_ids` |\n| *(none)* | No scope provided — returns a single aggregated result across all matched entities | — |\n\n---\n\n### Intervals (`interval` filter)\n\n| Interval | Description | Response shape |\n|----------|-------------|----------------|\n| *(none)* | No interval — returns a single cumulative value | `number` |\n| `hour` | Breaks data down by hour of the day | `number[]` with 24 values (index 0 = midnight, 23 = 11PM) |\n| `day` | Breaks data down by day of the week | `number[]` with 7 values (index 0 = Sunday, 6 = Saturday) |\n| `month` | Breaks data down by month of the year | `number[]` with 12 values (index 0 = January, 11 = December) |\n\n---\n\n> **Note:** `peak_entry_time and peak_exit_time` does not support intervals — it always returns a single `number | null` value regardless of the `interval` filter.","operationId":"SessionsController_getAnalytics_v2","parameters":[{"name":"filter","required":true,"in":"query","description":"Filter in the format key:eq:value","schema":{"example":["scope:eq:zone","lot_ids:eq:1,2,3","zone_ids:eq:1,2,3","created_at:gte:2025-09-17T10:15:25","created_at:lte:2025-09-18T10:15:25","metric:eq:entry_count","interval:eq:hour"],"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Returns analytics data based on the provided filters.","content":{"application/json":{"schema":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/LotScopeNoIntervalExitCountResponseDto"},{"$ref":"#/components/schemas/LotScopeHourIntervalExitCountResponseDto"},{"$ref":"#/components/schemas/LotScopeDayIntervalExitCountResponseDto"},{"$ref":"#/components/schemas/LotScopeMonthIntervalExitCountResponseDto"},{"$ref":"#/components/schemas/ZoneScopeNoIntervalExitCountResponseDto"},{"$ref":"#/components/schemas/ZoneScopeHourIntervalExitCountResponseDto"},{"$ref":"#/components/schemas/ZoneScopeDayIntervalExitCountResponseDto"},{"$ref":"#/components/schemas/ZoneScopeMonthIntervalExitCountResponseDto"},{"$ref":"#/components/schemas/LotScopeNoIntervalEntryCountResponseDto"},{"$ref":"#/components/schemas/LotScopeHourIntervalEntryCountResponseDto"},{"$ref":"#/components/schemas/LotScopeDayIntervalEntryCountResponseDto"},{"$ref":"#/components/schemas/LotScopeMonthIntervalEntryCountResponseDto"},{"$ref":"#/components/schemas/ZoneScopeNoIntervalEntryCountResponseDto"},{"$ref":"#/components/schemas/ZoneScopeHourIntervalEntryCountResponseDto"},{"$ref":"#/components/schemas/ZoneScopeDayIntervalEntryCountResponseDto"},{"$ref":"#/components/schemas/ZoneScopeMonthIntervalEntryCountResponseDto"},{"$ref":"#/components/schemas/LotScopePeakEntryTimeResponseDto"},{"$ref":"#/components/schemas/ZoneScopePeakEntryTimeResponseDto"},{"$ref":"#/components/schemas/NoScopePeakEntryTimeResponseDto"},{"$ref":"#/components/schemas/LotScopePeakExitTimeResponseDto"},{"$ref":"#/components/schemas/ZoneScopePeakExitTimeResponseDto"},{"$ref":"#/components/schemas/NoScopePeakExitTimeResponseDto"}]}}}}}},"security":[{"bearer":[]}],"summary":"Get session analytics","tags":["sessions"]}},"/v2/sessions/export":{"get":{"description":"This endpoint allows the user to get the sessions CSV file","operationId":"SessionsController_exportToCSV_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"lotIds":{"summary":"Filter by lot_ids","value":["lot_ids:eq:1,2,3"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"zoneIds":{"summary":"Filter by zone_ids","value":["zone_ids:eq:1,2,3"]},"createdAt":{"summary":"Filter by created_at","value":["created_at:eq:2024-01-01T00:00:00.000Z"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get sessions CSV file","tags":["sessions"]}},"/v2/sessions/{id}":{"get":{"description":"This endpoint allows the user to get sessions by id","operationId":"SessionsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/SessionDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get sessions","tags":["sessions"]},"patch":{"description":"This endpoint allows the user to update sessions by id","operationId":"SessionsController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSessionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/SessionDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update sessions","tags":["sessions"]}},"/v2/sessions/{id}/close":{"post":{"description":"This endpoint allows the user to close a session by id.","operationId":"SessionsController_close_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/SessionDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Close session","tags":["sessions"]}},"/v2/terminals":{"post":{"description":"This endpoint allows the user to create terminals","operationId":"TerminalsController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTerminalDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TerminalDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"security":[{"bearer":[]}],"summary":"Create terminals","tags":["terminals"]},"get":{"description":"This endpoint allows the user to list all terminals","operationId":"TerminalsController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"deviceId":{"summary":"Filter by device_id","value":["device_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"isMaster":{"summary":"Filter by is_master","value":["is_master:eq:true"]},"posSerialNumber":{"summary":"Filter by pos_serial_number","value":["pos_serial_number:eq:SN-123456"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]},"createdAtAscending":{"summary":"Sort by created_at ascending","value":["created_at:asc"]},"createdAtDescending":{"summary":"Sort by created_at descending","value":["created_at:desc"]},"updatedAtAscending":{"summary":"Sort by updated_at ascending","value":["updated_at:asc"]},"updatedAtDescending":{"summary":"Sort by updated_at descending","value":["updated_at:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TerminalDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"security":[{"bearer":[]}],"summary":"Get all terminals","tags":["terminals"]}},"/v2/terminals/{id}":{"get":{"description":"This endpoint allows the user to get terminals by id","operationId":"TerminalsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TerminalDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"security":[{"bearer":[]}],"summary":"Get terminals","tags":["terminals"]},"patch":{"description":"This endpoint allows the user to update terminals by id","operationId":"TerminalsController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTerminalDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TerminalDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"security":[{"bearer":[]}],"summary":"Update terminals","tags":["terminals"]},"delete":{"description":"This endpoint allows the user to delete terminals by id","operationId":"TerminalsController_unassign_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Terminal successfuly unassigned.","content":{"application/json":{"example":{"success":true,"message":"Terminal successfuly unassigned."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"security":[{"bearer":[]}],"summary":"Delete terminals","tags":["terminals"]}},"/v2/terminals/{id}/operate":{"post":{"description":"This endpoint allows the user to send an operation (e.g. open, close, stay open) to a terminal by id.","operationId":"TerminalsController_operate_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperateTerminalRequestDto"}}}},"responses":{"200":{"description":"The operation command was accepted by the terminal.","content":{"application/json":{"schema":{"example":{"success":true,"data":{"meta":{"request_id":"cgIqGKScprT7j8zF"},"status":200,"data":{"gate_position":"opened","stay_open":false,"ap_id":1},"errors":null}}}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"summary":"Operate terminal","tags":["terminals"]}},"/v2/terminals/{id}/reboot":{"post":{"description":"This endpoint allows the user to reboot a terminal by id.","operationId":"TerminalsController_reboot_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"The reboot command was accepted by the terminal.","content":{"application/json":{"schema":{"example":{"success":true,"data":{"meta":{"request_id":"cgIqGKSc4jk7j8zF"},"status":200}}}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"summary":"Reboot terminal","tags":["terminals"]}},"/v2/terminals/{id}/sessions/{session_id}/details":{"get":{"description":"This endpoint allows the user to get terminal sessions details by id","operationId":"TerminalsController_getSessionDetials_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"session_id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/SessionDetailsDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"security":[{"bearer":[]}],"summary":"Get terminal sessions details","tags":["terminals"]}},"/v2/terminals/{id}/sessions":{"get":{"description":"This endpoint allows the user to list all sessions from terminal","operationId":"TerminalsController_getSession_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"sessionId":{"summary":"Filter by session_id","value":["session_id:eq:1"]},"startedAt":{"summary":"Filter by started_at","value":["started_at:eq:2024-01-01T00:00:00.000Z"]},"endedAt":{"summary":"Filter by ended_at","value":["ended_at:eq:2024-01-31T00:00:00.000Z"]},"entryType":{"summary":"Filter by entry_type","value":["entry_type:eq:TICKET"]},"duration":{"summary":"Filter by duration","value":["duration:eq:3600"]},"payments.paidAt":{"summary":"Filter by payments.paid_at","value":["payments.paid_at:eq:2024-01-15T00:00:00.000Z"]},"licensePlate":{"summary":"Filter by license_plate","value":["license_plate:eq:AB123CD"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"sessionIdAscending":{"summary":"Sort by session_id ascending","value":["session_id:asc"]},"sessionIdDescending":{"summary":"Sort by session_id descending","value":["session_id:desc"]},"durationAscending":{"summary":"Sort by duration ascending","value":["duration:asc"]},"durationDescending":{"summary":"Sort by duration descending","value":["duration:desc"]},"endedAtAscending":{"summary":"Sort by ended_at ascending","value":["ended_at:asc"]},"endedAtDescending":{"summary":"Sort by ended_at descending","value":["ended_at:desc"]},"startedAtAscending":{"summary":"Sort by started_at ascending","value":["started_at:asc"]},"startedAtDescending":{"summary":"Sort by started_at descending","value":["started_at:desc"]},"licensePlateAscending":{"summary":"Sort by license_plate ascending","value":["license_plate:asc"]},"licensePlateDescending":{"summary":"Sort by license_plate descending","value":["license_plate:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TerminalDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"security":[{"bearer":[]}],"summary":"Get all sessions from terminal","tags":["terminals"]}},"/v2/terminals/{id}/lpr-cameras":{"get":{"description":"This endpoint allows the user to list all lpr cameras by terminal ids","operationId":"TerminalsController_listLprCameras_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"direction":{"summary":"Filter by direction","value":["direction:eq:IN"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"sn":{"summary":"Filter by sn","value":["sn:eq:L12345678"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TerminalLprCameraDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"security":[{"bearer":[]}],"summary":"Get all lpr cameras by terminal ids","tags":["terminals"]}},"/v2/terminals/{id}/lpr-cameras/{lprCameraId}/live/{size}":{"get":{"description":"This endpoint allows the user to get lpr cameras live feed by terminal and lpr cameras ids by id","operationId":"TerminalsController_getLprCameraLiveImage_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"lprCameraId","required":true,"in":"path","schema":{"type":"string"}},{"name":"size","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TerminalLprCameraDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"security":[{"bearer":[]}],"summary":"Get lpr cameras live feed by terminal and lpr cameras ids","tags":["terminals"]}},"/v2/terminals/{id}/plate-readings":{"get":{"description":"This endpoint allows the user to list all plater readings by terminal id","operationId":"TerminalsController_getLicensePlates_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"direction":{"summary":"Filter by direction","value":["direction:eq:IN"]},"plate":{"summary":"Filter by plate","value":["plate:eq:DTPLATE-2"]},"sessionId":{"summary":"Filter by session_id","value":["session_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"createdAtAscending":{"summary":"Sort by created_at ascending","value":["created_at:asc"]},"createdAtDescending":{"summary":"Sort by created_at descending","value":["created_at:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]},"plateAscending":{"summary":"Sort by plate ascending","value":["plate:asc"]},"plateDescending":{"summary":"Sort by plate descending","value":["plate:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TerminalSessionDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"security":[{"bearer":[]}],"summary":"Get all plater readings by terminal id","tags":["terminals"]}},"/v2/terminals/{id}/plate-readings/{plateid}/{size}":{"get":{"description":"Endpoint allows the user to get all the sessions associated with that terminal","operationId":"TerminalsController_getLicensePlateImage_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"plateid","required":true,"in":"path","schema":{"type":"string"}},{"name":"size","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TerminalSessionDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"security":[{"bearer":[]}],"summary":"Get terminal camera reading pictures","tags":["terminals"]}},"/v2/terminals/{id}/session":{"post":{"description":"This endpoint allows the user to create terminal sessions","operationId":"TerminalsController_createSession_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTerminalSessionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TerminalSessionDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"security":[{"bearer":[]}],"summary":"Create terminal sessions","tags":["terminals"]}},"/v2/terminals/{terminal_id}/sessions/{session_id}/payments":{"post":{"description":"This endpoint allows the user to create session payments","operationId":"TerminalsController_createSessionPayment_v2","parameters":[{"name":"terminal_id","required":true,"in":"path","schema":{"type":"string"}},{"name":"session_id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTerminalSessionPaymentDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TerminalSessionPaymentDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"security":[{"bearer":[]}],"summary":"Create session payments","tags":["terminals"]}},"/v2/terminals/{id}/sessions/{sessionId}":{"patch":{"description":"This endpoint allows the user to update terminal sessions by id","operationId":"TerminalsController_updateSession_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"sessionId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTerminalSessionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/TerminalSessionDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"security":[{"bearer":[]}],"summary":"Update terminal sessions","tags":["terminals"]}},"/v2/terminals/{id}/remote-control":{"post":{"description":"This endpoint allows the user to send a remote control command (e.g. prompt payment) to a terminal by id.","operationId":"TerminalsController_remoteControl_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteControlDto"}}}},"responses":{"200":{"description":"The remote control command was accepted by the terminal.","content":{"application/json":{"schema":{"example":{"success":true,"data":{"meta":{"request_id":"Dnaa1YZJglZPHOVK"},"status":200}}}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"503":{"description":"the device might not be connected or an internal error happened","content":{"application/json":{"example":{"errors":[{"code":40,"message":"the message to the remote device timed out"}]}}}}},"summary":"Remote control terminal","tags":["terminals"]}},"/v2/lot-entries":{"get":{"deprecated":true,"description":"This endpoint allows the user to list all lot entries","operationId":"LotEntriesController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"direction":{"summary":"Filter by direction","value":["direction:eq:in"]},"endTime":{"summary":"Filter by end_time","value":["end_time:eq:2024-01-31T00:00:00.000Z"]},"licensePlate":{"summary":"Filter by license_plate","value":["license_plate:eq:AB123CD"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"lprCameraId":{"summary":"Filter by lpr_camera_id","value":["lpr_camera_id:eq:1"]},"startTime":{"summary":"Filter by start_time","value":["start_time:eq:2024-01-01T00:00:00.000Z"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LotEntryDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all lot entries","tags":["lot entries"]}},"/v2/lot-entries/export":{"get":{"deprecated":true,"description":"This endpoint allows the user to get the lot entries CSV file","operationId":"LotEntriesController_exportToCSV_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"startTime":{"summary":"Filter by start_time","value":["start_time:eq:2024-01-01T00:00:00.000Z"]},"endTime":{"summary":"Filter by end_time","value":["end_time:eq:2024-01-31T00:00:00.000Z"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"lotIds":{"summary":"Filter by lot_ids","value":["lot_ids:eq:1,2,3"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"zoneIds":{"summary":"Filter by zone_ids","value":["zone_ids:eq:1,2,3"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get lot entries CSV file","tags":["lot entries"]}},"/v2/lot-entries/{id}":{"get":{"deprecated":true,"description":"This endpoint allows the user to get lot entries by id","operationId":"LotEntriesController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotEntryDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get lot entries","tags":["lot entries"]},"patch":{"deprecated":true,"description":"This endpoint allows the user to update lot entries by id","operationId":"LotEntriesController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLotEntryDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotEntryDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update lot entries","tags":["lot entries"]}},"/v2/lot-entries/{id}/image":{"get":{"deprecated":true,"description":"This endpoint allows the user to get the lot entry image by id","operationId":"LotEntriesController_getEntryImage_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get lot entry image","tags":["lot entries"]}},"/v2/lot-whitelists":{"post":{"description":"This endpoint allows the user to bulk create lot whitelists","operationId":"LotWhitelistController_create[0]_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLotWhitelistDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/CreatedLotWhitelists"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User is trying to create an entity where end time is before start time.","content":{"application/json":{"example":{"errors":[{"code":405,"message":"End time is before start time."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk create lot whitelists","tags":["lot whitelists"]},"get":{"description":"This endpoint allows the user to list all lot whitelists","operationId":"LotWhitelistController_findAll[0]_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"endTime":{"summary":"Filter by end_time","value":["end_time:eq:2024-01-31T00:00:00.000Z"]},"licensePlate":{"summary":"Filter by license_plate","value":["license_plate:eq:DTPLATE-2"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"startTime":{"summary":"Filter by start_time","value":["start_time:eq:2024-01-01T00:00:00.000Z"]},"status":{"summary":"Filter by status","value":["status:eq:active"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LotWhitelistDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all lot whitelists","tags":["lot whitelists"]}},"/v2/lot-license-plates":{"post":{"description":"This endpoint allows the user to bulk create lot whitelists","operationId":"LotWhitelistController_create[1]_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLotWhitelistDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/CreatedLotWhitelists"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User is trying to create an entity where end time is before start time.","content":{"application/json":{"example":{"errors":[{"code":405,"message":"End time is before start time."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk create lot whitelists","tags":["lot whitelists"]},"get":{"description":"This endpoint allows the user to list all lot whitelists","operationId":"LotWhitelistController_findAll[1]_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"endTime":{"summary":"Filter by end_time","value":["end_time:eq:2024-01-31T00:00:00.000Z"]},"licensePlate":{"summary":"Filter by license_plate","value":["license_plate:eq:DTPLATE-2"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"startTime":{"summary":"Filter by start_time","value":["start_time:eq:2024-01-01T00:00:00.000Z"]},"status":{"summary":"Filter by status","value":["status:eq:active"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LotWhitelistDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all lot whitelists","tags":["lot whitelists"]}},"/v2/lot-whitelists/upload/lot/{id}":{"post":{"operationId":"LotWhitelistController_createFromFile[0]_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"Upload a CSV file"}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/FileUploadResponse"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Create new lot whitelists from a CSV file","tags":["lot whitelists"]}},"/v2/lot-license-plates/upload/lot/{id}":{"post":{"operationId":"LotWhitelistController_createFromFile[1]_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"Upload a CSV file"}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/FileUploadResponse"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Create new lot whitelists from a CSV file","tags":["lot whitelists"]}},"/v2/lot-whitelists/export":{"get":{"description":"This endpoint allows the user to get the lot whitelists CSV file","operationId":"LotWhitelistController_exportToCSV[0]_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"startTime":{"summary":"Filter by start_time","value":["start_time:eq:2024-01-01T00:00:00.000Z"]},"endTime":{"summary":"Filter by end_time","value":["end_time:eq:2024-01-31T00:00:00.000Z"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get lot whitelists CSV file","tags":["lot whitelists"]}},"/v2/lot-license-plates/export":{"get":{"description":"This endpoint allows the user to get the lot whitelists CSV file","operationId":"LotWhitelistController_exportToCSV[1]_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"startTime":{"summary":"Filter by start_time","value":["start_time:eq:2024-01-01T00:00:00.000Z"]},"endTime":{"summary":"Filter by end_time","value":["end_time:eq:2024-01-31T00:00:00.000Z"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get lot whitelists CSV file","tags":["lot whitelists"]}},"/v2/lot-whitelists/sample/export":{"get":{"description":"This endpoint provides a sample CSV file formatted for creating new lot whitelists. Use this file as a template for uploading lot whitelists.","operationId":"LotWhitelistController_exportSampleCSV[0]_v2","parameters":[],"responses":{"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Download lot whitelists sample CSV file","tags":["lot whitelists"]}},"/v2/lot-license-plates/sample/export":{"get":{"description":"This endpoint provides a sample CSV file formatted for creating new lot whitelists. Use this file as a template for uploading lot whitelists.","operationId":"LotWhitelistController_exportSampleCSV[1]_v2","parameters":[],"responses":{"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Download lot whitelists sample CSV file","tags":["lot whitelists"]}},"/v2/lot-whitelists/{id}":{"get":{"description":"This endpoint allows the user to get lot whitelists by id","operationId":"LotWhitelistController_findOne[0]_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotWhitelistDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get lot whitelists","tags":["lot whitelists"]},"patch":{"description":"This endpoint allows the user to update lot whitelists by id","operationId":"LotWhitelistController_update[0]_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLotWhitelistDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotWhitelistDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Update lot whitelists","tags":["lot whitelists"]},"delete":{"description":"This endpoint allows the user to delete lot whitelists by id","operationId":"LotWhitelistController_remove[0]_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete lot whitelists","tags":["lot whitelists"]}},"/v2/lot-license-plates/{id}":{"get":{"description":"This endpoint allows the user to get lot whitelists by id","operationId":"LotWhitelistController_findOne[1]_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotWhitelistDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get lot whitelists","tags":["lot whitelists"]},"patch":{"description":"This endpoint allows the user to update lot whitelists by id","operationId":"LotWhitelistController_update[1]_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLotWhitelistDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotWhitelistDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Update lot whitelists","tags":["lot whitelists"]},"delete":{"description":"This endpoint allows the user to delete lot whitelists by id","operationId":"LotWhitelistController_remove[1]_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete lot whitelists","tags":["lot whitelists"]}},"/v2/lot-whitelists/bulk":{"delete":{"description":"This endpoint allows the user to bulk delete lot whitelists by using their ids","operationId":"LotWhitelistController_bulkRemove[0]_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteLotWhitelistDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Bulk delete lot whitelists","tags":["lot whitelists"]}},"/v2/lot-license-plates/bulk":{"delete":{"description":"This endpoint allows the user to bulk delete lot whitelists by using their ids","operationId":"LotWhitelistController_bulkRemove[1]_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteLotWhitelistDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Bulk delete lot whitelists","tags":["lot whitelists"]}},"/v2/logs/lot-whitelists":{"get":{"description":"This endpoint allows the user to list all logs","operationId":"LogsController_findAllLotWhitelists_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"accountUserId":{"summary":"Filter by account_user_id","value":["account_user_id:eq:1"]},"accountUserName":{"summary":"Filter by account_user_name","value":["account_user_name:eq:john doe"]},"licensePlate":{"summary":"Filter by license_plate","value":["license_plate:eq:AB123CD"]},"operation":{"summary":"Filter by operation","value":["operation:eq:added"]},"startTime":{"summary":"Filter by start_time","value":["start_time:eq:2024-01-01T00:00:00.000Z"]},"endTime":{"summary":"Filter by end_time","value":["end_time:eq:2024-01-31T00:00:00.000Z"]},"isUnlimited":{"summary":"Filter by is_unlimited","value":["is_unlimited:eq:true"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LotWhitelistLogDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all logs","tags":["logs"]}},"/v2/logs/lot-whitelists/{id}":{"get":{"description":"This endpoint allows the user to get logs by id","operationId":"LogsController_findOneLotWhitelist_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotWhitelistLogDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get logs","tags":["logs"]}},"/v2/license-plate-alerts/{id}/receivers":{"post":{"description":"This endpoint allows the user to bulk create license plate alerts","operationId":"LicensePlateAlertsController_assignReceivers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignLicensePlateAlertReciversDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LicensePlateAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk create license plate alerts","tags":["license plate alerts"]},"put":{"description":"This endpoint allows the user to bulk put license plate alerts","operationId":"LicensePlateAlertsController_replaceReceivers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignLicensePlateAlertReciversDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LicensePlateAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk put license plate alerts","tags":["license plate alerts"]},"delete":{"description":"This endpoint allows the user to bulk unassign license plate alert receivers by using their ids","operationId":"LicensePlateAlertsController_unassignRecivers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnassignReceiversLicensePlateAlertDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LicensePlateAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk unassign license plate alert receivers","tags":["license plate alerts"]}},"/v2/license-plate-alerts/{alertId}/receivers/{receiverId}":{"put":{"description":"This endpoint allows the user to put license plate alerts receivers by id","operationId":"LicensePlateAlertsController_assignSingle_v2","parameters":[{"name":"alertId","required":true,"in":"path","schema":{"type":"string"}},{"name":"receiverId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LicensePlateAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Put license plate alerts receivers","tags":["license plate alerts"]}},"/v2/license-plate-alerts/{id}":{"put":{"description":"This endpoint allows the user to put license plate alerts by id","operationId":"LicensePlateAlertsController_replaceAlerts_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceLicensePlateAlertsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LicensePlateAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Put license plate alerts","tags":["license plate alerts"]},"get":{"description":"This endpoint allows the user to get license plate alerts by id","operationId":"LicensePlateAlertsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LicensePlateAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get license plate alerts","tags":["license plate alerts"]},"patch":{"description":"This endpoint allows the user to update license plate alerts by id","operationId":"LicensePlateAlertsController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLicensePlateAlertDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LicensePlateAlertDto"}}}]}}}},"400":{"description":"Cannot be moved between different lots.","content":{"application/json":{"example":{"errors":[{"code":1000,"message":"Cannot move to different lot."}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update license plate alerts","tags":["license plate alerts"]},"delete":{"description":"This endpoint allows the user to delete license plate alerts by id","operationId":"LicensePlateAlertsController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete license plate alerts","tags":["license plate alerts"]}},"/v2/license-plate-alerts":{"post":{"description":"This endpoint allows the user to create license plate alerts","operationId":"LicensePlateAlertsController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLicensePlateAlertDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Create license plate alerts","tags":["license plate alerts"]},"get":{"description":"This endpoint allows the user to list all license plate alerts","operationId":"LicensePlateAlertsController_findAll_v2","parameters":[{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]},"plateAscending":{"summary":"Sort by plate ascending","value":["plate:asc"]},"plateDescending":{"summary":"Sort by plate descending","value":["plate:desc"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"plate":{"summary":"Filter by plate","value":["plate:eq:DTPLATE-2"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LicensePlateAlertDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all license plate alerts","tags":["license plate alerts"]}},"/v2/license-plate-alerts/{id}/receivers/{reciverId}":{"delete":{"description":"This endpoint allows the user to unassign license plate alert receivers by id","operationId":"LicensePlateAlertsController_unassignSingleReciver_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"reciverId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LicensePlateAlertDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Unassign license plate alert receivers","tags":["license plate alerts"]}},"/v2/key-invitations":{"get":{"description":"This endpoint allows the user to list all key invitations","operationId":"KeyInvitationsController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"productId":{"summary":"Filter by product_id","value":["product_id:eq:1"]},"status":{"summary":"Filter by status","value":["status:eq:pending"]},"receiverIdentifier":{"summary":"Filter by receiver_identifier","value":["receiver_identifier:eq:john.doe@example.com"]},"dateFrom":{"summary":"Filter by date_from","value":["date_from:eq:2024-01-01T00:00:00.000Z"]},"dateTo":{"summary":"Filter by date_to","value":["date_to:eq:2024-01-31T00:00:00.000Z"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"statusAscending":{"summary":"Sort by status ascending","value":["status:asc"]},"statusDescending":{"summary":"Sort by status descending","value":["status:desc"]},"receiverIdentifierAscending":{"summary":"Sort by receiver_identifier ascending","value":["receiver_identifier:asc"]},"receiverIdentifierDescending":{"summary":"Sort by receiver_identifier descending","value":["receiver_identifier:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/KeyInvitationDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all key invitations","tags":["key invitations"]},"patch":{"description":"This endpoint allows the user to bulk update key invitations by using their ids","operationId":"KeyInvitationsController_bulkUpdate_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateKeyInvitationDto"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"example":{"success":true,"data":[{"success":true,"id":1}]}}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk update key invitations","tags":["key invitations"]}},"/v2/key-invitations/receiver-emails":{"get":{"description":"This endpoint allows the user to list all key log receiver emails","operationId":"KeyInvitationsController_receiverEmails_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ReceiverEmailsDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all key log receiver emails","tags":["key invitations"]}},"/v2/key-invitations/{id}":{"get":{"description":"This endpoint allows the user to get key invitations by id","operationId":"KeyInvitationsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/KeyInvitationDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get key invitations","tags":["key invitations"]},"patch":{"description":"This endpoint allows the user to update key invitations by id","operationId":"KeyInvitationsController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateKeyInvitationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/KeyInvitationDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update key invitations","tags":["key invitations"]},"delete":{"description":"This endpoint allows the user to delete key invitations by id","operationId":"KeyInvitationsController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete key invitations","tags":["key invitations"]}},"/v2/key-invitations/resend":{"post":{"description":"This endpoint allows the user to resend key invitations by ids","operationId":"KeyInvitationsController_resendInvites_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestResendKeysDto"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"example":{"success":true,"data":[{"success":true,"id":1}]}}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Resend key invitations","tags":["key invitations"]}},"/v2/key-logs":{"get":{"description":"This endpoint allows the user to list all key logs","operationId":"KeyLogsController_findAll_v2","parameters":[{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"dateFrom":{"summary":"Filter by date_from","value":["date_from:eq:2024-01-01T00:00:00.000Z"]},"dateTo":{"summary":"Filter by date_to","value":["date_to:eq:2024-01-31T00:00:00.000Z"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"productId":{"summary":"Filter by product_id","value":["product_id:eq:1"]},"receiverIdentifier":{"summary":"Filter by receiver_identifier","value":["receiver_identifier:eq:john.doe@example.com"]},"status":{"summary":"Filter by status","value":["status:eq:blocked"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/KeyLogDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Get all key logs","tags":["key logs"]},"patch":{"description":"This endpoint allows the user to bulk update key logs by using their ids","operationId":"KeyLogsController_bulkUpdate_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateKeyLogsDto"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"example":{"success":true,"data":[{"success":true,"id":1}]}}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk update key logs","tags":["key logs"]}},"/v2/key-logs/receiver-emails":{"get":{"description":"This endpoint allows the user to list all key invitation receiver emails","operationId":"KeyLogsController_receiverEmails_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ReceiverEmailsDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all key invitation receiver emails","tags":["key logs"]}},"/v2/key-logs/{id}":{"get":{"description":"This endpoint allows the user to get key logs by id","operationId":"KeyLogsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/KeyLogDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get key logs","tags":["key logs"]},"patch":{"description":"This endpoint allows the user to update key logs by id","operationId":"KeyLogsController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateKeyLogDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/KeyLogDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update key logs","tags":["key logs"]},"delete":{"description":"This endpoint allows the user to delete key logs by id","operationId":"KeyLogsController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete key logs","tags":["key logs"]}},"/v2/key-logs/resend":{"post":{"description":"Resend key logs","operationId":"KeyLogsController_resend_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResendKeyDto"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"example":{"success":true,"data":[{"success":true,"id":1}]}}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Resend key logs","tags":["key logs"]}},"/v2/operation-keys/sample/export":{"get":{"description":"This endpoint provides a sample CSV file formatted for creating new operation keys. Use this file as a template for uploading operation keys.","operationId":"OperationKeysController_exportSampleCSV_v2","parameters":[],"responses":{"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Download operation keys sample CSV file","tags":["operation keys"]}},"/v2/operation-keys/file/upload":{"post":{"operationId":"OperationKeysController_createFromFile_v2","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"Upload a CSV file"}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/FileUploadResponse"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Create new operation keys from a CSV file","tags":["operation keys"]}},"/v2/operation-keys/single":{"post":{"description":"This endpoint allows the user to create single operation keys","operationId":"OperationKeysController_createOne_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOneOperationKeyDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/OperationKeyDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"summary":"Create single operation keys","tags":["operation keys"]}},"/v2/operation-keys":{"post":{"description":"This endpoint allows the user to create operations keys","operationId":"OperationKeysController_createMany_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOperationKeyDto"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"example":{"email":"example@example.com","invited":true}}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"summary":"Create operations keys","tags":["operation keys"]},"get":{"description":"This endpoint allows the user to list all operation keys","operationId":"OperationKeysController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"dateFrom":{"summary":"Filter by date_from","value":["date_from:eq:2024-01-01T00:00:00.000Z"]},"dateTo":{"summary":"Filter by date_to","value":["date_to:eq:2024-01-31T00:00:00.000Z"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"productId":{"summary":"Filter by product_id","value":["product_id:eq:1"]},"receiverEmail":{"summary":"Filter by receiver_email","value":["receiver_email:eq:john.doe@example.com"]},"receiverId":{"summary":"Filter by receiver_id","value":["receiver_id:eq:1"]},"senderEmail":{"summary":"Filter by sender_email","value":["sender_email:eq:john.doe@example.com"]},"senderId":{"summary":"Filter by sender_id","value":["sender_id:eq:1"]},"status":{"summary":"Filter by status","value":["status:eq:active"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OperationKeyDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all operation keys","tags":["operation keys"]}},"/v2/operation-keys/{id}":{"get":{"description":"This endpoint allows the user to get operation keys by id","operationId":"OperationKeysController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/OperationKeyDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get operation keys","tags":["operation keys"]},"patch":{"description":"This endpoint allows the user to update operation keys by id","operationId":"OperationKeysController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOperationKeyDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/OperationKeyDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update operation keys","tags":["operation keys"]},"delete":{"description":"This endpoint allows the user to delete operation keys by id","operationId":"OperationKeysController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete operation keys","tags":["operation keys"]}},"/v2/operation-tokens":{"post":{"description":"This endpoint allows the user to create operation tokens","operationId":"OperationTokensController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOperationTokenDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/OperationTokenDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create operation tokens","tags":["operation tokens"]},"get":{"description":"This endpoint allows the user to list all operation tokens","operationId":"OperationTokensController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"productId":{"summary":"Filter by product_id","value":["product_id:eq:1"]},"status":{"summary":"Filter by status","value":["status:eq:active"]},"dateFrom":{"summary":"Filter by date_from","value":["date_from:eq:2024-01-01T00:00:00.000Z"]},"dateTo":{"summary":"Filter by date_to","value":["date_to:eq:2024-01-31T00:00:00.000Z"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OperationTokenDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all operation tokens","tags":["operation tokens"]}},"/v2/operation-tokens/{id}":{"get":{"description":"This endpoint allows the user to get operation tokens by id","operationId":"OperationTokensController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/OperationTokenDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get operation tokens","tags":["operation tokens"]},"patch":{"description":"This endpoint allows the user to update operation tokens by id","operationId":"OperationTokensController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOperationTokenDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/OperationTokenDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update operation tokens","tags":["operation tokens"]},"delete":{"description":"This endpoint allows the user to delete operation tokens by id","operationId":"OperationTokensController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete operation tokens","tags":["operation tokens"]}},"/v2/products/bind-licenses":{"post":{"description":"This endpoint binds the product to the license plate. When the license\n    plate is scanned it will trigger an operation on this product","operationId":"ProductsController_bindLicenseForProducts_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BindLicensesDto"}}}},"responses":{"200":{"description":"Bind success","content":{"application/json":{"example":{"success":true,"message":"Bind success"}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}}},"security":[{"bearer":[]}],"summary":"Bind Products to License Plates","tags":["products"]}},"/v2/products/{id}/bind-licenses":{"post":{"description":"This endpoint binds the product to the license plate. When the license\n    plate is scanned it will trigger an operation on this product","operationId":"ProductsController_bindLicenseForProduct_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BindLicenseDto"}}}},"responses":{"200":{"description":"Bind success","content":{"application/json":{"example":{"success":true,"message":"Bind success"}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Binds a Product to License Plates","tags":["products"]}},"/v2/products/{id}/bound-licenses":{"get":{"description":"Endpoint returns all the license plates bound to the product.","operationId":"ProductsController_findAllBinds_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]},"createdAtAscending":{"summary":"Sort by created_at ascending","value":["created_at:asc"]},"createdAtDescending":{"summary":"Sort by created_at descending","value":["created_at:desc"]},"updatedAtAscending":{"summary":"Sort by updated_at ascending","value":["updated_at:asc"]},"updatedAtDescending":{"summary":"Sort by updated_at descending","value":["updated_at:desc"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotWhitelistLicenseDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"List all bound license plates on a product","tags":["products"]}},"/v2/products/bound-licenses/{licenseId}":{"delete":{"description":"This endpoint unbinds multiple products from a license","operationId":"ProductsController_unbindLicensesForProducts_v2","parameters":[{"name":"licenseId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnbindProductsDto"}}}},"responses":{"200":{"description":"Licenses have been unbound","content":{"application/json":{"example":{"success":true,"message":"Licenses have been unbound"}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Unbinds multiple Products from a License Plate","tags":["products"]}},"/v2/products/{id}/bound-licenses/{licenseId}":{"delete":{"description":"This endpoint unbinds a product from a license","operationId":"ProductsController_unbindLicenseForProduct_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"licenseId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Licence has been unbound","content":{"application/json":{"example":{"success":true,"message":"Licence has been unbound"}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Unbinds a Product from a License Plate","tags":["products"]}},"/v2/products/errors":{"get":{"description":"This endpoint returns all the errors accross all of the\n                  products.","operationId":"ProductsController_findAllProductErrors_v2","parameters":[{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]},"createdAtAscending":{"summary":"Sort by created_at ascending","value":["created_at:asc"]},"createdAtDescending":{"summary":"Sort by created_at descending","value":["created_at:desc"]},"updatedAtAscending":{"summary":"Sort by updated_at ascending","value":["updated_at:asc"]},"updatedAtDescending":{"summary":"Sort by updated_at descending","value":["updated_at:desc"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"productTypeId":{"summary":"Filter by product_type_id","value":["product_type_id:eq:1"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"deviceId":{"summary":"Filter by device_id","value":["device_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ProductErrorDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all product errors","tags":["products"]}},"/v2/products/{id}/state":{"post":{"description":"This endpoint allows the user to change the state of a product\n       assigned to his account using a parklio gateway","operationId":"ProductsController_changeState_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeProductStateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/EventDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Change a product state","tags":["products"]}},"/v2/products/{id}/settings":{"post":{"description":"This endpoint allows the user to change the setting of a\n                  product assigned to his account using a parklio gateway","operationId":"ProductsController_changeSettings_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeProductSettingsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ProductDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Change a product setting","tags":["products"]}},"/v2/products":{"get":{"description":"This endpoint allows the user to list all the products\n    assigned to his account. Products are assigned to a account by doing the\n    initial setup of exchaning master keys using the Parklio Connect App.","operationId":"ProductsController_findAll_v2","parameters":[{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]},"createdAtAscending":{"summary":"Sort by created_at ascending","value":["created_at:asc"]},"createdAtDescending":{"summary":"Sort by created_at descending","value":["created_at:desc"]},"updatedAtAscending":{"summary":"Sort by updated_at ascending","value":["updated_at:asc"]},"updatedAtDescending":{"summary":"Sort by updated_at descending","value":["updated_at:desc"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"productTypeId":{"summary":"Filter by product_type_id","value":["product_type_id:eq:1"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"deviceId":{"summary":"Filter by device_id","value":["device_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ProductDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all products","tags":["products"]}},"/v2/products/{id}":{"get":{"description":"This endpoint allows the user to get a product assigned to his account","operationId":"ProductsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ProductDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get a product","tags":["products"]},"patch":{"description":"This endpoint allows the user to patch a product assigned to his account","operationId":"ProductsController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProductDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ProductDto"}}}]}}}},"400":{"description":"Cannot be moved between different lots.","content":{"application/json":{"example":{"errors":[{"code":1000,"message":"Cannot move to different lot."}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Patch a product","tags":["products"]},"delete":{"description":"This endpoint allows the user to unassign a product from his\n    account. Allowing the other users to add it to their accounts.","operationId":"ProductsController_unassign_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Unassign a product","tags":["products"]}},"/v2/logs/product/operation/{id}":{"get":{"description":"This endpoint allows the user to get logs/product/operation by id","operationId":"ProductLogsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ProductLogDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get logs/product/operation","tags":["logs"]}},"/v2/logs/product/operation":{"get":{"description":"This endpoint allows the user to list all logs/product/operation","operationId":"ProductLogsController_findAllLogs_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"accountUserEmail":{"summary":"Filter by account_user_email","value":["account_user_email:eq:john.doe@example.com"]},"accountUserId":{"summary":"Filter by account_user_id","value":["account_user_id:eq:1"]},"accountUserName":{"summary":"Filter by account_user_name","value":["account_user_name:eq:john doe"]},"accountUserRoleId":{"summary":"Filter by account_user_role_id","value":["account_user_role_id:eq:1"]},"createdAt":{"summary":"Filter by created_at","value":["created_at:eq:2024-01-01T00:00:00.000Z"]},"deviceId":{"summary":"Filter by device_id","value":["device_id:eq:1"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"operationType":{"summary":"Filter by operation_type","value":["operation_type:eq:open"]},"productId":{"summary":"Filter by product_id","value":["product_id:eq:1"]},"typeOfAccess":{"summary":"Filter by type_of_access","value":["type_of_access:eq:app"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ProductLogDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all logs/product/operation","tags":["logs"]}},"/v2/weblinks":{"post":{"description":"This endpoint allows the user to bulk create weblinks","operationId":"WeblinksController_bulkCreate_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkCreateWeblinkDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/WeblinkDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User is trying to operate product as if it was a v1 barrier but it is not.","content":{"application/json":{"example":{"errors":[{"code":203,"message":"Not a v1 barrier."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk create weblinks","tags":["weblinks"]},"get":{"description":"This endpoint allows the user to list all weblinks","operationId":"WeblinksController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"productId":{"summary":"Filter by product_id","value":["product_id:eq:1"]},"receiverIdentifier":{"summary":"Filter by receiver_identifier","value":["receiver_identifier:eq:john.doe@example.com"]},"receiverIdentifierType":{"summary":"Filter by receiver_identifier_type","value":["receiver_identifier_type:eq:email"]},"dateFrom":{"summary":"Filter by date_from","value":["date_from:eq:2024-01-01T00:00:00.000Z"]},"dateTo":{"summary":"Filter by date_to","value":["date_to:eq:2024-01-31T00:00:00.000Z"]},"status":{"summary":"Filter by status","value":["status:eq:active"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WeblinkDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all weblinks","tags":["weblinks"]},"patch":{"description":"This endpoint allows the user to bulk update weblinks by using their ids","operationId":"WeblinksController_bulkUpdate_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateWeblinkDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/BulkUpdateWeblinkDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk update weblinks","tags":["weblinks"]}},"/v2/weblinks/metadata":{"get":{"description":"This endpoint allows the user to get weblinks metadata.","operationId":"WeblinksController_metadata_v2","parameters":[{"name":"token","required":false,"in":"query","schema":{"example":"jQgwb9uY7Jxqa78nD9hjplshrZ3pRf","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WeblinkMetadataDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User is trying to use a product weblink that has expired or has a wrong signature. User should request a new product weblink.","content":{"application/json":{"example":{"errors":[{"code":212,"message":"Product weblink not valid."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"summary":"Get weblinks metadata","tags":["weblinks"]}},"/v2/weblinks/{id}":{"get":{"description":"This endpoint allows the user to get weblinks by id","operationId":"WeblinksController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/WeblinkDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get weblinks","tags":["weblinks"]},"patch":{"description":"This endpoint allows the user to update weblinks by id","operationId":"WeblinksController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWeblinkDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/WeblinkDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update weblinks","tags":["weblinks"]},"delete":{"description":"This endpoint allows the user to delete weblinks by id","operationId":"WeblinksController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete weblinks","tags":["weblinks"]}},"/v2/weblinks/resend":{"post":{"description":"This endpoint allows the user to resend weblinks by ids","operationId":"WeblinksController_resend_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResendWeblinkDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/BulkUpdateWeblinksSuccessResponseDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Resend weblinks","tags":["weblinks"]}},"/v2/weblinks/{id}/operation":{"post":{"description":"Use the weblink to operate a Parklio™ product","operationId":"WeblinksController_operation_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"operation","required":true,"in":"query","schema":{"example":"open","type":"string"}},{"name":"token","required":true,"in":"query","schema":{"example":"sometokenvalue","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperateWeblinkDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/SuccessResponseDto"}}}]}}}},"403":{"description":"Product operation was not emitted due to no rssi signal. Gateway does not have a good enough signal with the product.","content":{"application/json":{"example":{"errors":[{"code":704,"message":"No rssi signal."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"summary":"Operate product with the weblink","tags":["weblinks"]}},"/v2/qr-codes":{"post":{"description":"This endpoint allows the user to create qr codes","operationId":"QrCodesController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateQrCodeDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/QrCodeDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create qr codes","tags":["qr codes"]},"get":{"description":"This endpoint allows the user to list all qr codes","operationId":"QrCodesController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountUserId":{"summary":"Filter by account_user_id","value":["account_user_id:eq:1"]},"productId":{"summary":"Filter by product_id","value":["product_id:eq:1"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"startTime":{"summary":"Filter by start_time","value":["start_time:eq:2024-01-01T00:00:00.000Z"]},"endTime":{"summary":"Filter by end_time","value":["end_time:eq:2024-01-31T00:00:00.000Z"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/QrCodeDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all qr codes","tags":["qr codes"]}},"/v2/qr-codes/{id}":{"get":{"description":"This endpoint allows the user to get qr codes by id","operationId":"QrCodesController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/QrCodeDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get qr codes","tags":["qr codes"]},"delete":{"description":"This endpoint allows the user to delete qr codes by id","operationId":"QrCodesController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete qr codes","tags":["qr codes"]}},"/v2/qr-codes/render/{uuid}":{"get":{"description":"Generates and streams a JPEG image of the QR code identified by uuid, rendered with an optional timezone offset used for any time-based content in the code.","operationId":"QrCodesController_findByUuid_v2","parameters":[{"name":"uuid","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Render a QR code image","tags":["qr codes"]}},"/v2/qr-codes/bulk":{"delete":{"description":"This endpoint allows the user to bulk delete qr codes by using their ids","operationId":"QrCodesController_bulkRemove_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteQrCodeDto"}}}},"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk delete qr codes","tags":["qr codes"]}},"/v2/webhooks/flow-detect/heartbeat":{"post":{"description":"Refresh heartbeat","operationId":"FlowDetectionWebhookController_heartbeat_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlowHeartbeatDto"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"success":true,"message":"OK"}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"summary":"Refresh heartbeat","tags":["webhooks"]}},"/v2/webhooks/flow-detect/occupancy-change":{"post":{"description":"Update parking places occupancy status and count","operationId":"FlowDetectionWebhookController_changeOccupancyStatusAndCount_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlowOccupancyChangeDto"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"success":true,"message":"OK"}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"summary":"Update occupancy change","tags":["webhooks"]}},"/v2/webhooks/flow-detect/camera-frame":{"post":{"description":"Set camera frame","operationId":"FlowDetectionWebhookController_cameraFrame_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlowCameraFrameDto"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"success":true,"message":"OK"}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"summary":"Set camera frame","tags":["webhooks"]}},"/v2/webhooks/flow-detect/occupied-spot-count":{"post":{"description":"Update occupied spot count","operationId":"FlowDetectionWebhookController_changeSpotCount_v2","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"success":true,"message":"OK"}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"summary":"Update occupied spot count","tags":["webhooks"]}},"/v2/webhooks/flow-detect/violation-zone-event":{"post":{"description":"Create violation zone events","operationId":"FlowDetectionWebhookController_createViolationZone_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlowViolationZoneEventDto"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"success":true,"message":"OK"}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"summary":"Create violation zone events","tags":["webhooks"]}},"/v2/parking-detection-cameras":{"post":{"description":"This endpoint allows the user to create parking detection cameras","operationId":"ParkingDetectionCamerasController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateParkingDetectionCameraDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ParkingDetectionCameraDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create parking detection cameras","tags":["parking detection cameras"]},"get":{"description":"This endpoint allows the user to list all parking detection cameras","operationId":"ParkingDetectionCamerasController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"uuid":{"summary":"Filter by uuid","value":["uuid:eq:123e4567-e89b-12d3-a456-426614174000"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ParkingDetectionCameraDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all parking detection cameras","tags":["parking detection cameras"]}},"/v2/parking-detection-cameras/{id}":{"get":{"description":"This endpoint allows the user to get parking detection cameras by id","operationId":"ParkingDetectionCamerasController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ParkingDetectionCameraDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get parking detection cameras","tags":["parking detection cameras"]},"patch":{"description":"This endpoint allows the user to update parking detection cameras by id","operationId":"ParkingDetectionCamerasController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateParkingDetectionCameraDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ParkingDetectionCameraDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update parking detection cameras","tags":["parking detection cameras"]},"delete":{"description":"This endpoint allows the user to delete parking detection cameras by id","operationId":"ParkingDetectionCamerasController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete parking detection cameras","tags":["parking detection cameras"]}},"/v2/parking-detection-cameras/{id}/frame":{"get":{"description":"Get parking detection camera frame by id","operationId":"ParkingDetectionCamerasController_frame_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ParkingDetectionCameraDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get camera frame","tags":["parking detection cameras"]}},"/v2/parking-detection-cameras/{id}/upload-view-schema":{"post":{"description":"Upload view schema to detection camera frame by id","operationId":"ParkingDetectionCamerasController_uploadViewSchema_v2","parameters":[{"name":"id","required":true,"in":"path","description":"Parking detection camera ID","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ParkingDetectionCameraDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"The file uploaded is not valid or corrupted","content":{"application/json":{"example":{"errors":[{"code":27,"message":"The file you uploaded is malformed"}]}}}}},"security":[{"bearer":[]}],"summary":"Upload view schema by id","tags":["parking detection cameras"]}},"/v2/parking-detection-gateways":{"post":{"description":"This endpoint allows the user to create parking detection gateways","operationId":"ParkingDetectionGatewaysController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateParkingDetectionGatewayDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ParkingDetectionGatewayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create parking detection gateways","tags":["parking detection gateways"]},"get":{"description":"This endpoint allows the user to list all parking detection gateways","operationId":"ParkingDetectionGatewaysController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"uuid":{"summary":"Filter by uuid","value":["uuid:eq:123e4567-e89b-12d3-a456-426614174000"]},"status":{"summary":"Filter by status","value":["status:eq:online"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ParkingDetectionGatewayDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all parking detection gateways","tags":["parking detection gateways"]}},"/v2/parking-detection-gateways/{id}":{"get":{"description":"This endpoint allows the user to get parking detection gateways by id","operationId":"ParkingDetectionGatewaysController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ParkingDetectionGatewayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get parking detection gateways","tags":["parking detection gateways"]},"patch":{"description":"This endpoint allows the user to update parking detection gateways by id","operationId":"ParkingDetectionGatewaysController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateParkingDetectionGatewayDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ParkingDetectionGatewayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update parking detection gateways","tags":["parking detection gateways"]},"delete":{"description":"This endpoint allows the user to delete parking detection gateways by id","operationId":"ParkingDetectionGatewaysController_removeParkingDetectionGateways_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete parking detection gateways","tags":["parking detection gateways"]}},"/v2/parking-detection-gateways/{id}/token":{"get":{"description":"This endpoint allows the user to get parking detection tokens by id","operationId":"ParkingDetectionGatewaysController_getTokenForGateway_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ParkingDetectionGatewayTokenDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get parking detection tokens","tags":["parking detection gateways"]}},"/v2/parking-places":{"post":{"description":"This endpoint allows the user to bulk create parking places","operationId":"ParkingPlacesController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateParkingPlaceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ParkingPlaceDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Requested zone resource does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":303,"message":"Zone not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk create parking places","tags":["parking places"]},"get":{"description":"This endpoint allows the user to list all parking places","operationId":"ParkingPlacesController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"lotIds":{"summary":"Filter by lot_ids","value":["lot_ids:eq:1,2,3"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"occupancyStatus":{"summary":"Filter by occupancy_status","value":["occupancy_status:eq:occupied"]},"uuid":{"summary":"Filter by uuid","value":["uuid:eq:123e4567-e89b-12d3-a456-426614174000"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"zoneIds":{"summary":"Filter by zone_ids","value":["zone_ids:eq:1,2,3"]},"externalId":{"summary":"Filter by external_id","value":["external_id:eq:EXT-12345"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ParkingPlaceDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all parking places","tags":["parking places"]}},"/v2/parking-places/{id}":{"get":{"description":"This endpoint allows the user to get parking places by id","operationId":"ParkingPlacesController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ParkingPlaceDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get parking places","tags":["parking places"]},"patch":{"description":"This endpoint allows the user to update parking places by id","operationId":"ParkingPlacesController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateParkingPlaceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ParkingPlaceDto"}}}]}}}},"400":{"description":"Cannot be moved between different lots.","content":{"application/json":{"example":{"errors":[{"code":1000,"message":"Cannot move to different lot."}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update parking places","tags":["parking places"]},"delete":{"description":"This endpoint allows the user to delete parking places by id","operationId":"ParkingPlacesController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete parking places","tags":["parking places"]}},"/v2/violation-zone-events":{"get":{"description":"This endpoint allows the user to list all violation zone events","operationId":"ViolationZoneEventsController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"color":{"summary":"Filter by color","value":["color:eq:red"]},"licensePlate":{"summary":"Filter by license_plate","value":["license_plate:eq:DTPLATE-2"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"model":{"summary":"Filter by model","value":["model:eq:206SW"]},"parkingDetectionCameraId":{"summary":"Filter by parking_detection_camera_id","value":["parking_detection_camera_id:eq:1"]},"startTime":{"summary":"Filter by start_time","value":["start_time:eq:2024-01-01T00:00:00.000Z"]},"endTime":{"summary":"Filter by end_time","value":["end_time:eq:2024-01-31T00:00:00.000Z"]},"stationaryTimeAbove":{"summary":"Filter by stationary_time_above","value":["stationary_time_above:eq:300"]},"stationaryTimeBellow":{"summary":"Filter by stationary_time_bellow","value":["stationary_time_bellow:eq:600"]},"violationZoneId":{"summary":"Filter by violation_zone_id","value":["violation_zone_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ViolationZoneEventDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all violation zone events","tags":["violation zone events"]}},"/v2/violation-zone-events/{id}":{"get":{"description":"This endpoint allows the user to get violation zone events by id","operationId":"ViolationZoneEventsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ViolationZoneEventDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get violation zone events","tags":["violation zone events"]}},"/v2/violation-zones":{"post":{"description":"This endpoint allows the user to create violation zones","operationId":"ViolationZonesController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateViolationZoneDto"}}}},"responses":{"201":{"description":""}},"summary":"Create violation zones","tags":["violation zones"]},"get":{"description":"This endpoint allows the user to list all violation zones","operationId":"ViolationZonesController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"uuid":{"summary":"Filter by uuid","value":["uuid:eq:123e4567-e89b-12d3-a456-426614174000"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ViolationZoneDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all violation zones","tags":["violation zones"]}},"/v2/violation-zones/{id}":{"get":{"description":"This endpoint allows the user to get violation zones by id","operationId":"ViolationZonesController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ViolationZoneDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get violation zones","tags":["violation zones"]},"patch":{"description":"This endpoint allows the user to update violation zones by id","operationId":"ViolationZonesController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateViolationZoneDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/ViolationZoneDto"}}}]}}}},"400":{"description":"Cannot be moved between different lots.","content":{"application/json":{"example":{"errors":[{"code":1000,"message":"Cannot move to different lot."}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update violation zones","tags":["violation zones"]},"delete":{"description":"This endpoint allows the user to delete violation zones by id","operationId":"ViolationZonesController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete violation zones","tags":["violation zones"]}},"/v2/statistics/remote-control":{"get":{"description":"This endpoint allows the user to list all remote control logs","operationId":"RemoteControlLogsController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountUserId":{"summary":"Filter by account_user_id","value":["account_user_id:eq:1"]},"productId":{"summary":"Filter by product_id","value":["product_id:eq:1"]},"operation":{"summary":"Filter by operation","value":["operation:eq:open"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RemoteControlLogDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all remote control logs","tags":["statistics"]}},"/v2/rotaries/parking-places":{"post":{"description":"This endpoint allows the user to create rotaries parking places","operationId":"RotariesController_createRotaryParkingPlaces_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRotaryParkingPlaceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RotaryParkingPlaceDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create rotaries parking places","tags":["rotaries"]},"get":{"description":"This endpoint allows the user to list all rotaries parking places","operationId":"RotariesController_findAllRotaryParkingPlaces_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"rotaryId":{"summary":"Filter by rotary_id","value":["rotary_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RotaryParkingPlaceDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all rotaries parking places","tags":["rotaries"]},"patch":{"description":"This endpoint updates the values of a rotary parking place by ids","operationId":"RotariesController_bulkUpdate_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateRotaryParkingPlaceDto"}}}},"responses":{"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Bulk update a rotary parking places","tags":["rotaries"]}},"/v2/rotaries/parking-places/{id}":{"get":{"description":"This endpoint allows the user to get rotaries parking places by id","operationId":"RotariesController_findOneRotaryParkingPlaces_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RotaryParkingPlaceDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get rotaries parking places","tags":["rotaries"]},"patch":{"description":"This endpoint allows the user to update rotaries parking places by id","operationId":"RotariesController_updateRotaryParkingPlaces_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRotaryParkingPlaceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RotaryParkingPlaceDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update rotaries parking places","tags":["rotaries"]},"delete":{"description":"This endpoint allows the user to delete rotaries parking places by id","operationId":"RotariesController_removeRotaryParkingPlaces_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete rotaries parking places","tags":["rotaries"]}},"/v2/rotaries":{"post":{"description":"This endpoint allows the user to create rotaries","operationId":"RotariesController_createRotaries_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRotaryDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RotaryDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create rotaries","tags":["rotaries"]},"get":{"description":"This endpoint allows the user to list all rotaries","operationId":"RotariesController_findAllRotaries_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RotaryDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all rotaries","tags":["rotaries"]}},"/v2/rotaries/{id}":{"get":{"description":"This endpoint allows the user to get rotaries by id","operationId":"RotariesController_findOneRotaries_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RotaryDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get rotaries","tags":["rotaries"]},"patch":{"description":"This endpoint allows the user to update rotaries by id","operationId":"RotariesController_updateRotaries_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRotaryDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/UpdateRotaryDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update rotaries","tags":["rotaries"]},"delete":{"description":"This endpoint allows the user to delete rotaries by id","operationId":"RotariesController_removeRotaries_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete rotaries","tags":["rotaries"]}},"/v2/parking-analytics":{"get":{"description":"Returns parking analytics data based on the provided filters.\n\n---\n\n### Metrics (`metric` filter)\n\n| Metric | Description |\n|--------|-------------|\n| `average_duration` | The average time (in minutes) a vehicle spends parked |\n| `average_duration_percentage` | The average duration as a percentage of the maximum allowed parking time |\n| `total_duration` | The total cumulative time (in minutes) all vehicles spent parked |\n| `turnover_rate` | The number of different vehicles that occupied a spot over a given period |\n| `peak_occupancy_hour` | The hour of the day (0–23) with the highest occupancy |\n\n---\n\n### Scopes (`scope` filter)\n\n| Scope | Description | ID filter |\n|-------|-------------|-----------|\n| `lot` | Aggregates data per parking lot | `lot_ids` |\n| `zone` | Aggregates data per zone within a lot | `zone_ids` |\n| `place` | Aggregates data per individual parking place | `parking_place_ids` |\n| *(none)* | No scope provided — returns a single aggregated result across all matched entities | — |\n\n---\n\n### Intervals (`interval` filter)\n\n| Interval | Description | Response shape |\n|----------|-------------|----------------|\n| *(none)* | No interval — returns a single cumulative value | `number` |\n| `hour` | Breaks data down by hour of the day | `number[]` with 24 values (index 0 = midnight, 23 = 11PM) |\n| `day` | Breaks data down by day of the week | `number[]` with 7 values (index 0 = Sunday, 6 = Saturday) |\n| `month` | Breaks data down by month of the year | `number[]` with 12 values (index 0 = January, 11 = December) |\n\n---\n\n> **Note:** `peak_occupancy_hour` does not support intervals — it always returns a single `number | null` value regardless of the `interval` filter.","operationId":"ParkingAnalyticsController_getAnalytics_v2","parameters":[{"name":"filter","required":true,"in":"query","description":"Filter in the format key:eq:value","schema":{"example":["scope:eq:zone","lot_ids:eq:1,2,3","zone_ids:eq:1,2,3","parking_place_ids:eq:1,2,3","created_at:gte:2025-09-17T10:15:25","created_at:lte:2025-09-18T10:15:25","metric:eq:average_duration","interval:eq:hour"],"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Returns analytics data based on the provided filters.","content":{"application/json":{"schema":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/LotScopeNoIntervalAverageDurationResponseDto"},{"$ref":"#/components/schemas/LotScopeHourIntervalAverageDurationResponseDto"},{"$ref":"#/components/schemas/LotScopeDayIntervalAverageDurationResponseDto"},{"$ref":"#/components/schemas/LotScopeMonthIntervalAverageDurationResponseDto"},{"$ref":"#/components/schemas/ZoneScopeNoIntervalAverageDurationResponseDto"},{"$ref":"#/components/schemas/ZoneScopeHourIntervalAverageDurationResponseDto"},{"$ref":"#/components/schemas/ZoneScopeDayIntervalAverageDurationResponseDto"},{"$ref":"#/components/schemas/ZoneScopeMonthIntervalAverageDurationResponseDto"},{"$ref":"#/components/schemas/PlaceScopeNoIntervalAverageDurationResponseDto"},{"$ref":"#/components/schemas/PlaceScopeHourIntervalAverageDurationResponseDto"},{"$ref":"#/components/schemas/PlaceScopeDayIntervalAverageDurationResponseDto"},{"$ref":"#/components/schemas/PlaceScopeMonthIntervalAverageDurationResponseDto"},{"$ref":"#/components/schemas/LotScopeNoIntervalAverageDurationPercentageResponseDto"},{"$ref":"#/components/schemas/LotScopeHourIntervalAverageDurationPercentageResponseDto"},{"$ref":"#/components/schemas/LotScopeDayIntervalAverageDurationPercentageResponseDto"},{"$ref":"#/components/schemas/LotScopeMonthIntervalAverageDurationPercentageResponseDto"},{"$ref":"#/components/schemas/ZoneScopeNoIntervalAverageDurationPercentageResponseDto"},{"$ref":"#/components/schemas/ZoneScopeHourIntervalAverageDurationPercentageResponseDto"},{"$ref":"#/components/schemas/ZoneScopeDayIntervalAverageDurationPercentageResponseDto"},{"$ref":"#/components/schemas/ZoneScopeMonthIntervalAverageDurationPercentageResponseDto"},{"$ref":"#/components/schemas/PlaceScopeNoIntervalAverageDurationPercentageResponseDto"},{"$ref":"#/components/schemas/PlaceScopeHourIntervalAverageDurationPercentageResponseDto"},{"$ref":"#/components/schemas/PlaceScopeDayIntervalAverageDurationPercentageResponseDto"},{"$ref":"#/components/schemas/PlaceScopeMonthIntervalAverageDurationPercentageResponseDto"},{"$ref":"#/components/schemas/LotScopeNoIntervalTotalDurationResponseDto"},{"$ref":"#/components/schemas/LotScopeHourIntervalTotalDurationResponseDto"},{"$ref":"#/components/schemas/LotScopeDayIntervalTotalDurationResponseDto"},{"$ref":"#/components/schemas/LotScopeMonthIntervalTotalDurationResponseDto"},{"$ref":"#/components/schemas/ZoneScopeNoIntervalTotalDurationResponseDto"},{"$ref":"#/components/schemas/ZoneScopeHourIntervalTotalDurationResponseDto"},{"$ref":"#/components/schemas/ZoneScopeDayIntervalTotalDurationResponseDto"},{"$ref":"#/components/schemas/ZoneScopeMonthIntervalTotalDurationResponseDto"},{"$ref":"#/components/schemas/PlaceScopeNoIntervalTotalDurationResponseDto"},{"$ref":"#/components/schemas/PlaceScopeHourIntervalTotalDurationResponseDto"},{"$ref":"#/components/schemas/PlaceScopeDayIntervalTotalDurationResponseDto"},{"$ref":"#/components/schemas/PlaceScopeMonthIntervalTotalDurationResponseDto"},{"$ref":"#/components/schemas/LotScopeNoIntervalTurnoverRateResponseDto"},{"$ref":"#/components/schemas/LotScopeHourIntervalTurnoverRateResponseDto"},{"$ref":"#/components/schemas/LotScopeDayIntervalTurnoverRateResponseDto"},{"$ref":"#/components/schemas/LotScopeMonthIntervalTurnoverRateResponseDto"},{"$ref":"#/components/schemas/ZoneScopeNoIntervalTurnoverRateResponseDto"},{"$ref":"#/components/schemas/ZoneScopeHourIntervalTurnoverRateResponseDto"},{"$ref":"#/components/schemas/ZoneScopeDayIntervalTurnoverRateResponseDto"},{"$ref":"#/components/schemas/ZoneScopeMonthIntervalTurnoverRateResponseDto"},{"$ref":"#/components/schemas/PlaceScopeNoIntervalTurnoverRateResponseDto"},{"$ref":"#/components/schemas/PlaceScopeHourIntervalTurnoverRateResponseDto"},{"$ref":"#/components/schemas/PlaceScopeDayIntervalTurnoverRateResponseDto"},{"$ref":"#/components/schemas/PlaceScopeMonthIntervalTurnoverRateResponseDto"},{"$ref":"#/components/schemas/LotScopePeakOccupancyHourResponseDto"},{"$ref":"#/components/schemas/ZoneScopePeakOccupancyHourResponseDto"},{"$ref":"#/components/schemas/PlaceScopePeakOccupancyHourResponseDto"},{"$ref":"#/components/schemas/NoScopePeakOccupancyHourResponseDto"}]}}}}},"403":{"description":"User is trying to filter where end time is before start time.","content":{"application/json":{"example":{"errors":[{"code":306,"message":"End time is before start time."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Get parking analytics","tags":["parking analytics"]}},"/v2/lot-share-views/{id}/zones":{"post":{"description":"This endpoint allows the user to assign zones to lot share view by id","operationId":"LotShareViewsController_assignZones_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignZonesToLotShareViewDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotShareViewDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Assign zones to lot share view","tags":["lot share views"]},"put":{"description":"This endpoint allows the user to replace zones for lot share view by id","operationId":"LotShareViewsController_replaceMembers_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceZonesForLotShareViewDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotShareViewDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Replace zones for lot share view","tags":["lot share views"]},"delete":{"description":"This endpoint allows the user to unassign zones from lot share view by id","operationId":"LotShareViewsController_unassignZones_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnassignZonesToLotShareViewDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotShareViewDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Unassign zones from lot share view","tags":["lot share views"]}},"/v2/lot-share-views":{"post":{"description":"This endpoint allows the user to create lot share views","operationId":"LotShareViewsController_create_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLotShareViewDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotShareViewDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create lot share views","tags":["lot share views"]},"get":{"description":"This endpoint allows the user to list all lot share views","operationId":"LotShareViewsController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"isRevoked":{"summary":"Filter by is_revoked","value":["is_revoked:eq:true"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"lotShareViewType":{"summary":"Filter by lot_share_view_type","value":["lot_share_view_type:eq:counts_only"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LotShareViewDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all lot share views","tags":["lot share views"]}},"/v2/lot-share-views/{id}":{"get":{"description":"This endpoint allows the user to get lot share views by id","operationId":"LotShareViewsController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotShareViewDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get lot share views","tags":["lot share views"]},"patch":{"description":"This endpoint allows the user to update lot share views by id","operationId":"LotShareViewsController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLotShareViewDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotShareViewDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update lot share views","tags":["lot share views"]},"delete":{"description":"This endpoint allows the user to delete lot share views by id","operationId":"LotShareViewsController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete lot share views","tags":["lot share views"]}},"/v2/lot-share-views/display/{token}":{"get":{"description":"Returns an HTML page showing the current occupancy state of a parking lot. The view type (counts only, live camera, or vector map) is determined by the share link configuration. This endpoint is public and requires no authentication.","operationId":"LotShareViewsController_render_v2","parameters":[{"name":"token","required":true,"in":"path","description":"The unique token used for the share link","schema":{"type":"string"}},{"name":"darkmode","required":false,"in":"query","description":"Pass darkmode=true to force dark mode in the rendered page","schema":{"type":"boolean"}},{"name":"navbar","required":false,"in":"query","description":"Pass navbar=hidden to hide the header/navbar in the rendered page","schema":{"enum":["hidden"],"type":"string"}}],"responses":{"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"summary":"Render the current visual state of a lot for a given share link token (public, unauthenticated)","tags":["lot share views"]}},"/v2/lot-share-views/{id}/zones/{zoneId}":{"put":{"description":"This endpoint allows the user to assign zone to lot share view by id","operationId":"LotShareViewsController_assignZone_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}},{"name":"zoneId","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotShareViewDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Assign zone to lot share view","tags":["lot share views"]},"delete":{"description":"This endpoint allows the user to unassign zone from lot share view by id","operationId":"LotShareViewsController_unassignZone_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"zoneId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/LotShareViewDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Unassign zone from lot share view","tags":["lot share views"]}},"/v2/rgb-displays":{"post":{"description":"This endpoint allows the user to create rgb displays","operationId":"RgbDisplaysController_assign_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignRgbDisplayDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RgbDisplayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create rgb displays","tags":["rgb displays"]},"get":{"description":"This endpoint allows the user to list all rgb displays","operationId":"RgbDisplaysController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"serialNumber":{"summary":"Filter by serial_number","value":["serial_number:eq:D123456"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RgbDisplayDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all rgb displays","tags":["rgb displays"]}},"/v2/rgb-displays/{id}/source-zones":{"post":{"description":"This endpoint allows the user to add source zones to an existing rgb display.","operationId":"RgbDisplaysController_assignSourceZones_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignSourceZonesToRgbDisplayDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RgbDisplayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Add a source zones to an rgb display","tags":["rgb displays"]},"delete":{"description":"This endpoint allows the user to unassign unassign source zones from rgb displays by id","operationId":"RgbDisplaysController_unassignSourceZones_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnassignSourceZonesFromRgbDisplaysDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RgbDisplayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Unassign unassign source zones from rgb displays","tags":["rgb displays"]},"put":{"description":"This endpoint allows the user to create replace source zones on rgb display","operationId":"RgbDisplaysController_replaceSourceZones_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceSourceZonesToRgbDisplayDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RgbDisplayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create replace source zones on rgb display","tags":["rgb displays"]}},"/v2/rgb-displays/{id}/simulate":{"post":{"description":"This endpoint allows the user to simulate the rgb display response by available count","operationId":"RgbDisplaysController_simulate_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulateRgbDisplayDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RgbDisplayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Simulate result for rgb displays","tags":["rgb displays"]}},"/v2/rgb-displays/{id}":{"get":{"description":"This endpoint allows the user to get rgb displays by id","operationId":"RgbDisplaysController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RgbDisplayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get rgb displays","tags":["rgb displays"]},"patch":{"description":"This endpoint allows the user to update rgb displays by id","operationId":"RgbDisplaysController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRgbDisplayDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RgbDisplayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update rgb displays","tags":["rgb displays"]},"delete":{"description":"This endpoint allows the user to delete rgb displays by id","operationId":"RgbDisplaysController_unassign_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Rgb display successfuly unassigned.","content":{"application/json":{"example":{"success":true,"message":"Rgb display successfuly unassigned."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete rgb displays","tags":["rgb displays"]},"put":{"description":"Fully replaces an RGB display's configuration, including its name, default message, and source zones. The provided sourceZoneIds list completely replaces the existing source zones","operationId":"RgbDisplaysController_replaceDisplay_v2","parameters":[{"name":"id","required":true,"in":"path","description":"The ID of the RGB display to replace","schema":{"example":1,"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceRgbDisplayDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RgbDisplayDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Replace an RGB display","tags":["rgb displays"]}},"/v2/rgb-displays/{id}/display-data":{"get":{"description":"This endpoint allows the user to get the data that will be shown on RGB display.","operationId":"RgbDisplaysController_getRgbDisplayData_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns free spot count for the RGB display","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RgbDisplayOutputDto"}}}}},"summary":"Get display data","tags":["rgb displays"]}},"/v2/rgb-displays/{id}/source-zones/{sourceZoneId}":{"delete":{"description":"This endpoint allows the user to unassign unassign source zones by source zone id from rgb displays by id","operationId":"RgbDisplaysController_unassignSourceZone_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"sourceZoneId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RgbDisplayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Unassign unassign source zones by source zone id from rgb displays","tags":["rgb displays"]},"put":{"description":"This endpoint allows the user to create assign source zones to rgb displays","operationId":"RgbDisplaysController_replaceSingleSourceZone_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"sourceZoneId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RgbDisplayDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Create assign source zones to rgb displays","tags":["rgb displays"]}},"/v2/rgb-display-rules":{"get":{"description":"This endpoint allows the user to list all rgb display rules","operationId":"RgbDisplayRulesController_findAll_v2","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"size","required":false,"in":"query","schema":{"example":200,"type":"number"}},{"name":"filter","required":false,"in":"query","description":"Filter in the format key:eq:value","examples":{"accountId":{"summary":"Filter by account_id","value":["account_id:eq:1"]},"name":{"summary":"Filter by name","value":["name:eq:john doe"]},"lotId":{"summary":"Filter by lot_id","value":["lot_id:eq:1"]},"zoneId":{"summary":"Filter by zone_id","value":["zone_id:eq:1"]},"rgbDisplayId":{"summary":"Filter by rgb_display_id","value":["rgb_display_id:eq:1"]}},"schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort in the format key:asc|desc","examples":{"orderAscending":{"summary":"Sort by order ascending","value":["order:asc"]},"orderDescending":{"summary":"Sort by order descending","value":["order:desc"]},"nameAscending":{"summary":"Sort by name ascending","value":["name:asc"]},"nameDescending":{"summary":"Sort by name descending","value":["name:desc"]},"idAscending":{"summary":"Sort by id ascending","value":["id:asc"]},"idDescending":{"summary":"Sort by id descending","value":["id:desc"]}},"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResponseDto"},{"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RgbDisplayRuleDto"}}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}}},"security":[{"bearer":[]}],"summary":"Get all rgb display rules","tags":["rgb display rules"]}},"/v2/rgb-display-rules/{id}":{"get":{"description":"This endpoint allows the user to get rgb display rules by id","operationId":"RgbDisplayRulesController_findOne_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RgbDisplayRuleDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Get rgb display rules","tags":["rgb display rules"]},"patch":{"description":"This endpoint allows the user to update rgb display rules by id","operationId":"RgbDisplayRulesController_update_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRgbDisplayRuleDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"},{"properties":{"data":{"$ref":"#/components/schemas/RgbDisplayRuleDto"}}}]}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}},"422":{"description":"Some of the provided request parameters are missing or are invalid. User should add/change them according to response message.","content":{"application/json":{"example":{"errors":[{"code":23,"message":"Validation error","fields":"field"}]}}}}},"security":[{"bearer":[]}],"summary":"Update rgb display rules","tags":["rgb display rules"]},"delete":{"description":"This endpoint allows the user to delete rgb display rules by id","operationId":"RgbDisplayRulesController_remove_v2","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted.","content":{"application/json":{"example":{"success":true,"message":"Successfully deleted."}}}},"401":{"description":"Account user is not logged in and they should log in again.","content":{"application/json":{"example":{"errors":[{"code":1,"message":"Unauthorized access."}]}}}},"403":{"description":"User does not have permission to access requested resource.","content":{"application/json":{"example":{"errors":[{"code":4,"message":"No permission."}]}}}},"404":{"description":"Resource that has been requested does not exist. User should not try to repeat this request.","content":{"application/json":{"example":{"errors":[{"code":6,"message":"Resource not found."}]}}}}},"security":[{"bearer":[]}],"summary":"Delete rgb display rules","tags":["rgb display rules"]}}},"info":{"title":"Parklio API","description":"Parklio API description","version":"1.0","contact":{}},"tags":[{"name":"account users","description":"An Account User is a human login identity belonging to an Account, used\n  to sign in to the Parklio PMS/Connect applications with an email and\n  password. Each Account User holds an Account User Role (SUPER_ADMIN,\n  ADMIN, or OPERATOR) that governs their permissions, and can be scoped to\n  specific lots, invited by email or phone, and subscribed to proactive or\n  license-plate alerts."},{"name":"accounts","description":"An Account is the top-level tenant in Parklio: it owns lots, products,\n  and the Account Users who manage them, and carries billing/contact\n  details plus an Account Role (PARKLIO_INTERNAL, PMS, CONNECT, or API)\n  that determines what kind of tenant it is. Feature access is granted\n  through Account Authorities derived from product licenses, and an\n  Account can be linked to a Space Invoice organisation or myPOS provider\n  for invoicing and payments."},{"name":"api tokens","description":"An API Token is a long-lived credential issued to an\n  Account for machine-to-machine access, used in place of an Account\n  User's password login. It is the mechanism behind the API account role:\n  any account holding a valid API Token can call the same v2 endpoints as\n  an authenticated Account User, scoped to that account's own resources."},{"name":"auth","description":"Authentication endpoints issue and revoke the bearer tokens Account\n  Users use to access Parklio Connect and PMS: password login, PMS login,\n  logout, and social login via supported third-party providers (creating a\n  Connect account automatically on first sign-in). Successful\n  authentication returns an Account User token that identifies the user\n  for all subsequent authenticated requests."},{"name":"gateways","description":"A Gateway is a physical Parklio bridge device that connects\n  Bluetooth-based products (barriers, gates, chains, brains, etc.) on\n  a lot to the Parklio backend over the network. Identified by a\n  hardware UUID and public key, it reports an online/offline status\n  and firmware/network details, and can be remotely operated (reboot,\n  info, force scan) once assigned to a lot and account."},{"name":"groups","description":"A Group is a named collection of Members under an Account, used to\n  apply shared behavior, such as a Tariff, to all its members at once.\n  This API covers Group CRUD plus assigning, unassigning, and replacing\n  the set of Members belonging to a Group."},{"name":"key invitations","description":"A Key Invitation is a pending guest-access invite sent to someone who\n  does not yet have a Parklio account, identified by an email, phone\n  number, or license plate. It carries its own validity window\n  (start/end time, or unlimited) and a lifecycle status (pending,\n  activated, blocked, invalid, expired, deleted) tracking whether the\n  receiver has redeemed it to gain remote-operate access to a Product."},{"name":"key logs","description":"A Key Log records a guest's granted access to a Product where the\n  receiver is identified by an email, phone number, or license plate\n  rather than an app account. It is backed one-to-one by an Operation\n  Token, which holds the actual validity window and the signed\n  open/close/status credentials used to remotely operate the device, so\n  a key log's status and dates are driven by its token. Key logs can be\n  resent, bulk-updated, or blocked by the sender."},{"name":"license plate alerts","description":"A License Plate Alert watches a set of license plates within a zone\n  and notifies its assigned account-user receivers by email when one of\n  those plates is detected by LPR, throttled by a configurable minimum\n  interval between emails per plate."},{"name":"logs","description":"LOGS is an umbrella tag for the platform's audit trails: internal\n  master-key exchanges between a Product and an Account, product\n  operation logs (open/close/force-open/force-close and similar\n  actions, tagged with the access channel used), LPR camera\n  remote-control logs, and lot whitelist logs. Each entry is an\n  immutable, timestamped record of who performed what action and on\n  which resource, used for troubleshooting and compliance."},{"name":"lot entries","description":"A Lot Entry is a record produced by an LPR camera when a license\n  plate is scanned entering or exiting a lot, capturing the plate,\n  scan time, and vehicle details (make, model, color). Whether the\n  vehicle was allowed in is recorded on it, and a matching entry/exit\n  pair is linked via a related lot entry to derive parking duration."},{"name":"lot share views","description":"A Lot Share View is a public, tokenized link for a lot that renders\n  its live occupancy state without authentication, scoped to a set of\n  zones. The view type (counts only, live camera, or vector map)\n  controls what is shown, and the link can be revoked at any time."},{"name":"lot whitelists","description":"A Lot Whitelist entry grants a license plate free, unmonitored access\n  to a lot for a given time window (or indefinitely, when unlimited),\n  bound to the account user who owns the plate. It works only in\n  conjunction with Parklio ANPR, which checks incoming plates against\n  active whitelist entries before raising a violation."},{"name":"lots","description":"A Lot is the top-level parking site an account manages — a physical\n  location such as a garage or parking lot, identified by name and\n  address. Zones and parking places are organized underneath a lot, and\n  aggregate counters (spot count, occupied count) roll up to it."},{"name":"lpr cameras","description":"An LPR (license-plate recognition) Camera is a Parklio hardware device\n  paired to an account via its UUID sticker and assigned to a zone. It\n  watches an IN/OUT/IN-OUT lane, reads passing plates, and can trigger a\n  connected barrier, gate, chain, or bollard to open; its status (online,\n  offline, sleeping, resetting) and input signal state are reported and\n  it can be remotely rebooted or opened through this API."},{"name":"members","description":"A Member is a person or vehicle registered under an Account by license\n  plate, optionally with a name, description, and email, used to grant\n  recognized access (e.g. via LPR) independent of a login account.\n  Members can be organized into Groups and are commonly bulk-created or\n  exported via CSV upload/download."},{"name":"operation keys","description":"An Operation Key is a guest access grant shared directly between two\n  Parklio Connect App users: a sender (the product's owner or admin)\n  grants a receiver (another registered account user) the right to\n  remotely operate a Product. It is backed one-to-one by an Operation\n  Token, which carries the actual time window and the signed\n  open/close/status credentials, and can be created singly, in bulk, or\n  imported from a CSV file."},{"name":"operation tokens","description":"An Operation Token is the underlying credential that authorizes a\n  guest to remotely operate (open/close/check status) a single Product\n  during a defined time window, or without expiry. It stores the signed\n  open/close/status payloads sent to the device, tracks how many times\n  it has been used, and its status (active, depleted, expired, blocked,\n  etc.) drives what a linked Operation Key or Key Log is allowed to do."},{"name":"parking analytics","description":"Parking Analytics computes aggregate metrics over parking activity\n  recorded in Sessions and occupancy data, such as turnover rate,\n  average/total occupancy duration, and peak occupancy hour. Metrics can\n  be scoped to a lot, zone, or individual parking place and bucketed into\n  time intervals (e.g. hourly), rather than exposing a persisted entity\n  of their own."},{"name":"parking detection cameras","description":"A Parking Detection Camera is a Parklio hardware device attached to a\n  Parking Detection Gateway that watches a zone's parking spaces and\n  determines occupancy using computer vision. It can be configured with a\n  view schema describing how the frame maps to individual spaces, and\n  exposes its live camera frame through this API for setup and\n  monitoring."},{"name":"parking detection gateways","description":"A Parking Detection Gateway is the on-site hub that connects one or\n  more Parking Detection Cameras to a Lot and relays their occupancy\n  data back to the platform. It is identified by a UUID assigned during\n  setup and reports an online/offline connectivity status."},{"name":"parking place changes","description":"A Parking Place Change is a historical record of a parking place's\n  occupancy transitioning (occupied/free/unknown), capturing when it\n  started, how long it lasted, and the place it belongs to. These\n  records back occupancy-history and average-occupied-duration reporting\n  for a lot or zone."},{"name":"parking places","description":"A Parking Place is a single, individually trackable parking spot\n  belonging to a zone and lot, identified by name and UUID. Its\n  occupancy status (occupied, free, or unknown) is updated by parking\n  detection hardware and is the atomic unit that zone/lot occupancy\n  counts are aggregated from."},{"name":"plate readings","description":"A Plate Reading is a single license-plate detection recorded by an LPR\n  Camera in a zone: the normalized plate number, a confidence score,\n  captured vehicle attributes (type, make, color, model), lane direction,\n  and the access decision made at the time (e.g. triggered, or denied for\n  reasons like no active session, no tariff, or max capacity). Readings\n  are linked to the parking Session they open or close."},{"name":"proactive alerts","description":"A Proactive Alert watches a zone's occupancy and notifies its\n  assigned account-user receivers by email once occupancy crosses a\n  configurable threshold percentage, throttled by a minimum interval\n  between emails so the same alert doesn't re-fire too often."},{"name":"products","description":"A Product is a physical Parklio hardware device (e.g. a barrier, gate,\n  bollard, chain, or brain) that has been paired with an account through\n  master-key exchange in the Parklio Connect App. Once assigned to a lot,\n  a product can be remotely operated (e.g. opened/closed), configured,\n  and monitored through this API."},{"name":"qr codes","description":"A QR Code is a time-boxed access credential generated by an account\n  user for a Product, valid between a start and end time. A guest scans\n  it to remotely operate the product (e.g. open a gate) without needing\n  an account login, making it useful for one-off or short-lived visitor\n  access."},{"name":"rgb display rules","description":"An RGB Display Rule defines the text an RGB Display shows for a\n  given occupancy condition — an operator (equals, less-than,\n  greater-than, or between) compared against an occupied value (or\n  range), optionally scoped to a start/end time. Rules are ordered per\n  display and evaluated in that order to pick the message to render."},{"name":"rgb displays","description":"An RGB Display is a Parklio LED signage device installed in a zone\n  that shows a free/occupied space count (or a custom default message)\n  sourced from one or more source zones. Its displayed text is driven\n  by an ordered set of RGB Display Rules evaluated against the current\n  occupancy count."},{"name":"rotaries","description":"A Rotary is a multi-space Parklio parking product that groups\n  several individually named Rotary Parking Places under one physical\n  unit, each tracked as occupied or free. Rotaries are scoped to a lot\n  and account; this endpoint group manages both rotaries and their\n  parking places, including bulk occupancy updates."},{"name":"sessions","description":"A Session represents a single vehicle's stay in a Zone, from entry to\n  exit. It is opened by an entry event (an LPR camera plate read,\n  terminal, product, payment, or attendant action) and, once the vehicle\n  leaves, closed by a matching exit; it tracks duration, amount paid, and\n  the plate readings recorded over the course of the stay."},{"name":"statistics","description":"STATISTICS surfaces aggregate operational data derived from device\n  activity, starting with remote-control logs: a record of every\n  open/close command issued to a Product through a Gateway, together\n  with the Account and AccountUser that triggered it and when it\n  happened. These records are indexed for fast querying by account,\n  operation type, and time, powering usage reporting rather than\n  real-time control."},{"name":"tariffs","description":"A Tariff defines the pricing rules for a parking session on an account:\n  price per interval, free-time allowances, a maximum stay/price (\"maxima\"),\n  and an optional season window and price-progression curve (flat, linear,\n  exponential, or incremental). Tariffs can be scheduled, applied to zones,\n  and restricted to specific member groups."},{"name":"terminals","description":"A Terminal is a physical Parklio kiosk (an exit/entry/payment station)\n  installed at a Zone, identified by its device ID, MAC address, and\n  public key, and tracked as online/offline via heartbeat. This API\n  manages the terminal's lifecycle (create, update, unassign, operate,\n  reboot) plus the parking sessions, payments, LPR camera feeds, and\n  plate readings it reports once connected."},{"name":"violation zone events","description":"A Violation Zone Event is a single detection raised within a\n  Violation Zone when a vehicle (identified by license plate, make,\n  model, color) is found stationary for longer than allowed, captured\n  with a start/end time, stationary duration, and an evidence image."},{"name":"violation zones","description":"A Violation Zone is an area monitored by a parking detection camera\n  for unauthorized or overstaying vehicles, identified by name and\n  UUID. It is the parent resource for Violation Zone Events, which\n  record the individual stationary-vehicle detections raised within it."},{"name":"webhooks","description":"Webhooks are inbound callback endpoints called by third-party parking\n  detection hardware (Flow cameras and gateways) rather than by API\n  clients. They report heartbeats, occupancy/spot-count changes, camera\n  frame snapshots, and violation-zone events, letting Parklio keep parking\n  place occupancy and camera state in sync with the field devices."},{"name":"weblinks","description":"A Weblink is a shareable, time-boxed link generated for a Product and\n  sent by an account user to a receiver identified by email, phone, or\n  license plate. It lets the receiver remotely operate the product (e.g.\n  open a barrier) a limited number of times without a platform login,\n  and tracks its own status such as active, blocked, depleted, or\n  expired."},{"name":"zones","description":"A Zone is a subdivision of a Lot (e.g. a floor or section) that groups\n  parking places and the cameras/tariffs that apply to them. It tracks\n  its own spot/occupied counters, can have LPR presence, and is the\n  level at which tariffs are assigned and zone-specific settings live."}],"servers":[{"url":"https://api.parklio.com"}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"SuccessResponseDto":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]},"AccountDto":{"type":"object","properties":{"id":{"type":"number"},"account_role_id":{"type":"number","example":2},"name":{"type":"string","example":"John Doe"},"contact_name":{"type":"string","example":"John Doe"},"contact_email":{"type":"string","example":"john.doe@example.com"},"contact_phone":{"type":"string","example":"+385 555 5555"},"auto_extend":{"type":"string","example":{}},"billing_title":{"type":"string","example":"monthly"},"vat":{"type":"string","example":"25%"},"address":{"type":"string","example":"Put Stinica 12"},"city":{"type":"string","example":"Split"},"zip_code":{"type":"string","example":"21000"},"infinite_shares":{"type":"number"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"account_role":{"type":"object","example":{"id":2,"name":"PMS"}},"authorities":{"type":"array","items":{"type":"string"}},"organisation_id":{"type":"string"},"additional_custom_fee":{"type":"number"},"my_pos_client_id":{"type":"string"},"my_pos_secret":{"type":"string"}},"required":["id","account_role_id","name","contact_name","contact_email","contact_phone","auto_extend","billing_title","vat","address","city","zip_code","infinite_shares","created_at","updated_at","account_role","authorities","organisation_id","additional_custom_fee","my_pos_client_id","my_pos_secret"]},"UpdateAccountDto":{"type":"object","properties":{"account_role_id":{"type":"number","example":2},"name":{"type":"string","example":"John Doe"},"contact_name":{"type":"string","example":"John Doe"},"contact_email":{"type":"string","example":"john.doe@example.com"},"contact_phone":{"type":"string","example":"+385 555 5555"},"billing_title":{"type":"string","example":"monthly"},"vat":{"type":"string","example":"25%"},"address":{"type":"string","example":"Put Stinica 12"},"city":{"type":"string","example":"Split"},"zip_code":{"type":"string","example":"21000"},"organisation_id":{"type":"string","example":"2481289123"},"additional_custom_fee":{"type":"number","example":"2.55"},"my_pos_client_id":{"type":"string","example":"NDQ5XjTbF3G5Yk9qwu7Yzg"},"my_pos_secret":{"type":"string","example":"ryIOXX5zVbJ2cmzxx6s6Sw"}}},"ActiveProductsDto":{"type":"object","properties":{"products":{"type":"number"},"barriers":{"type":"number"},"gates":{"type":"number"},"bollards":{"type":"number"},"chains":{"type":"number"},"brains":{"type":"number"},"lprs":{"type":"number"},"parking_places":{"type":"number"}},"required":["products","barriers","gates","bollards","chains","brains","lprs","parking_places"]},"SignupDto":{"type":"object","properties":{"email":{"type":"string","example":"john.doe@example.com"},"name":{"type":"string","example":"John Doe"},"password":{"type":"string"},"phone":{"type":"string","example":"+385 555 5555"}},"required":["email","password"]},"ProductLicenseSummaryDto":{"type":"object","properties":{"account_id":{"type":"number"},"barriers":{"type":"number"},"bollards":{"type":"number"},"brains":{"type":"number"},"chains":{"type":"number"},"gates":{"type":"number"},"lpr_cameras":{"type":"number"},"parking_places":{"type":"number"}},"required":["account_id","barriers","bollards","brains","chains","gates","lpr_cameras","parking_places"]},"MessageDto":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"SyncDto":{"type":"object","properties":{"dry_run":{"type":"boolean","example":false}}},"MetaDto":{"type":"object","properties":{"total":{"type":"number","example":100},"per_page":{"type":"number","example":10},"current_page":{"type":"number","example":1},"last_page":{"type":"number","example":1},"first_page":{"type":"number","example":1},"first_page_url":{"type":"string","example":"/?page=2"},"last_page_url":{"type":"string","example":"/?page=10"},"next_page_url":{"type":"string","example":"/?page=3"},"previous_page_url":{"type":"string","example":"/?page=1"}},"required":["total","per_page","current_page","last_page","first_page","first_page_url","last_page_url","next_page_url","previous_page_url"]},"PaginatedResponseDto":{"type":"object","properties":{"success":{"type":"boolean"},"meta":{"$ref":"#/components/schemas/MetaDto"}},"required":["success","meta"]},"AccountUserDto":{"type":"object","properties":{"id":{"type":"number"},"account_user_role_id":{"type":"number","example":1},"account_id":{"type":"number"},"email":{"type":"string","example":"john.doe@example.com"},"name":{"type":"string","example":"John Doe"},"phone":{"type":"string","example":"+385 555 5555"},"language_tag":{"type":"string","example":"fr-BE","description":"BCP 47 language tag","nullable":true},"country_code":{"type":"string","example":"BE","description":"ISO 3166-1 alpha-2 country code","nullable":true},"email_confirmed":{"type":"number","example":1},"created_at":{"format":"date-time","type":"string","example":{}},"updated_at":{"format":"date-time","type":"string","example":{}},"account":{"type":"object","example":{"id":1,"account_role_id":1,"auto_extend":{},"name":"John Doe","contact_name":"John Doe","contact_email":"john.doe@example.com","contact_phone":"+385 666 6666","billing_title":"string","vat":"25%","address":"Put Stinica 12","city":"Split","zip_code":"21000","created_at":{},"updated_at":{},"infinite_shares":0,"account_role":{"id":2,"name":"PMS","created_at":{},"updated_at":{}},"authorities":[]}},"account_user_role":{"type":"object","example":{"id":1,"name":"Super Admin","created_at":{},"updated_at":{}}},"lots":{"example":{"id":1,"name":"Default Lot","address":"Put Stinica 12"},"type":"array","items":{"type":"string"}}},"required":["id","account_user_role_id","account_id","email","name","phone","email_confirmed","created_at","updated_at","account","account_user_role","lots"]},"CreateAccountDto":{"type":"object","properties":{"name":{"type":"string","example":"John Doe"},"login_name":{"type":"string","example":"john.doe@example.com"},"login_password":{"type":"string"},"contact_name":{"type":"string","example":"John Doe"},"contact_email":{"type":"string","example":"john.doe@example.com"},"login_email":{"type":"string","example":"john.doe@example.com"},"contact_phone":{"type":"string","example":"+385 555 5555"},"billing_title":{"type":"string","example":"monthly"},"vat":{"type":"string","example":"25%"},"address":{"type":"string","example":"Put Stinica 12"},"city":{"type":"string","example":"Split"},"zip_code":{"type":"string","example":"21000"}},"required":["name","login_name","contact_name","contact_email","login_email"]},"ProductLicenseDto":{"type":"object","properties":{"id":{"type":"number"},"account_id":{"type":"number"},"barriers":{"type":"number"},"lpr_cameras":{"type":"number"},"brains":{"type":"number"},"gates":{"type":"number"},"chains":{"type":"number"},"bollards":{"type":"number"},"parking_places":{"type":"number"},"active":{"type":"number"},"created_by":{"type":"string"},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"}},"required":["id","account_id","barriers","lpr_cameras","brains","gates","chains","bollards","parking_places","active","created_by","created_at","updated_at"]},"CreateProductLicenseDto":{"type":"object","properties":{"account_id":{"type":"number","example":1,"description":"The ID of the account. Must be a non-negative number. Defaults to 0 if not provided."},"barriers":{"type":"number","example":1,"description":"The number of barriers. Must be a non-negative number. Defaults to 0 if not provided."},"lpr_cameras":{"type":"number","example":1,"description":"The number of lpr cameras. Must be a non-negative number. Defaults to 0 if not provided."},"brains":{"type":"number","example":1,"description":"The number of brains. Must be a non-negative number. Defaults to 0 if not provided."},"gates":{"type":"number","example":1,"description":"The number of gates. Must be a non-negative number. Defaults to 0 if not provided."},"bollards":{"type":"number","example":1,"description":"The number of bollards. Must be a non-negative number. Defaults to 0 if not provided."},"chains":{"type":"number","example":1,"description":"The number of chains. Must be a non-negative number. Defaults to 0 if not provided."},"parking_places":{"type":"number","example":1,"description":"The number of parking places. Must be a non-negative number. Defaults to 0 if not provided."}}},"UpdateProductLicenseDto":{"type":"object","properties":{"active":{"type":"boolean"}},"required":["active"]},"ListLotManagersDto":{"type":"object","properties":{"account_user":{"$ref":"#/components/schemas/AccountUserDto"},"account_user_id":{"type":"number"},"lot_id":{"type":"number"},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"},"deleted_at":{"format":"date-time","type":"string","example":null}},"required":["account_user","account_user_id","lot_id","created_at","updated_at","deleted_at"]},"UpdateLotManagersDto":{"type":"object","properties":{"managers":{"example":[1,2,3],"description":"Set of Account User IDs targeted for updates.","type":"array","items":{"type":"string"}}},"required":["managers"]},"LotDto":{"type":"object","properties":{"id":{"type":"number","example":1},"account_id":{"type":"number","example":1},"name":{"type":"string","example":"John Doe"},"description":{"type":"string","example":"Lot description"},"address":{"type":"string","example":"Lot address"},"latitude":{"type":"number","example":45.14270079621355},"longitude":{"type":"number","example":24.789809374999987},"timezone":{"type":"string","example":"Europe/Zagreb"},"spot_count":{"type":"number","example":10},"occupied_count":{"type":"number","example":0},"detection_status":{"type":"string"},"detection_implementation_status":{"type":"string"},"lot_state_representation_vector":{"type":"string"},"created_at":{"type":"string","example":"1791841994516"},"updated_at":{"type":"string","example":"1791841994516"},"deleted_at":{"type":"string","example":null}},"required":["id","account_id","name","description","address","latitude","longitude","timezone","spot_count","occupied_count","detection_status","detection_implementation_status","lot_state_representation_vector","created_at","updated_at","deleted_at"]},"CreateLotDto":{"type":"object","properties":{"name":{"type":"string","example":"Lot name"},"description":{"type":"string","example":"Lot description"},"address":{"type":"string","example":"Lot address"},"latitude":{"type":"number","example":43.52652359},"longitude":{"type":"number","example":16.450813293}},"required":["name","address"]},"UpdateLotDto":{"type":"object","properties":{"name":{"type":"string","example":"John Doe"},"description":{"type":"string","example":"Lot description"},"address":{"type":"string","example":"Lot address"},"timezone":{"type":"string","example":"Europe/Zagreb"},"latitude":{"type":"number","example":43.52652359},"longitude":{"type":"number","example":16.450813293}}},"LotFreeSpotsDto":{"type":"object","properties":{"spots":{"type":"string","example":"10"}},"required":["spots"]},"ParkingPlacePartialDto":{"type":"object","properties":{}},"ParkingPlaceChangeDto":{"type":"object","properties":{"id":{"type":"number","example":1},"lot_id":{"type":"number","example":1},"parking_place_id":{"type":"number","example":1},"zone_id":{"type":"number","example":1},"duration":{"type":"number","example":1,"description":"in seconds"},"end_time":{"format":"date-time","type":"string","example":null},"occupancy_status":{"type":"string","enum":["occupied","free","unknown"]},"parking_place":{"example":{"id":1,"name":"Parking place"},"allOf":[{"$ref":"#/components/schemas/ParkingPlacePartialDto"}]},"created_at":{"format":"date-time","type":"string","example":{}},"updated_at":{"format":"date-time","type":"string","example":{}}},"required":["id","lot_id","parking_place_id","zone_id","duration","end_time","occupancy_status","parking_place","created_at","updated_at"]},"AcceptAccountUserInvitationPasswordDto":{"type":"object","properties":{"password":{"type":"string","example":"12345678"},"password_confirmation":{"type":"string","example":"12345678"}},"required":["password","password_confirmation"]},"ResendAccountUserInvitationDto":{"type":"object","properties":{"email":{"type":"string","example":"john.doe@example.com"}},"required":["email"]},"SenderDto":{"type":"object","properties":{"id":{"type":"number"},"account_user_role_id":{"type":"number"},"account_id":{"type":"number"},"email":{"type":"string","example":"john.doe@example.com"},"name":{"type":"string","example":"John Doe"},"phone":{"type":"string"},"email_confirmed":{"type":"number"},"deleted_at":{"format":"date-time","type":"string","example":null},"created_at":{"format":"date-time","type":"string","example":{}},"updated_at":{"format":"date-time","type":"string","example":{}}},"required":["id","account_user_role_id","account_id","email","name","phone","email_confirmed","deleted_at","created_at","updated_at"]},"AccountUserInvitationDto":{"type":"object","properties":{"id":{"type":"number"},"owner_account_id":{"type":"number"},"sender_id":{"type":"number"},"sender_account_id":{"type":"number"},"account_user_role_id":{"type":"number"},"name":{"type":"string","example":"John Doe"},"phone":{"type":"string"},"lots":{"example":[1,2,3],"type":"array","items":{"type":"string"}},"receiver_identifier":{"type":"string","example":"jane.doe@example.com"},"receiver_identifier_type":{"type":"string","example":"email"},"status":{"type":"string","example":"activated","enum":["activated","blocked","pending","reactived"]},"activated_at":{"format":"date-time","type":"string"},"deleted_at":{"format":"date-time","type":"string","example":null},"created_at":{"format":"date-time","type":"string","example":{}},"updated_at":{"format":"date-time","type":"string","example":{}},"sender":{"$ref":"#/components/schemas/SenderDto"}},"required":["id","owner_account_id","sender_id","sender_account_id","account_user_role_id","name","phone","lots","receiver_identifier","receiver_identifier_type","status","activated_at","deleted_at","created_at","updated_at","sender"]},"UpdateAccountUserInvitationDto":{"type":"object","properties":{"status":{"type":"string","example":"blocked","enum":["activated","blocked","pending","reactived"]}},"required":["status"]},"CreateResetPasswordDto":{"type":"object","properties":{"email":{"type":"string","default":"john.doe@mail.com"}},"required":["email"]},"ConfirmPasswordResetDto":{"type":"object","properties":{"password":{"type":"string"},"token":{"type":"string"}},"required":["password","token"]},"SpaceInvoiceTokenDto":{"type":"object","properties":{"token":{"type":"string","example":"OfK2wSCTgproJ6MB7zzIiCHMEdA470vgEWrOoGowKgtFXm6C"}},"required":["token"]},"InviteAccountUserDto":{"type":"object","properties":{"account_user_role_id":{"type":"number","example":1},"email":{"type":"string","example":"john.doe@example.com"},"name":{"type":"string","example":"John Doe"},"phone":{"type":"string","example":"12345678"},"target_lots":{"example":"[1]","description":"An optional array of lot IDs to assign to the invited user. Each ID must correspond to a lot that belongs to the same account as the inviter. If any ID does not belong to the account, the request will be rejected.","type":"array","items":{"type":"string"}}},"required":["account_user_role_id","email","name"]},"UpdateProfileDto":{"type":"object","properties":{"name":{"type":"string","example":"John Doe"},"password":{"type":"string"},"old_password":{"type":"string"},"phone":{"type":"string","example":"+3855555555"}}},"UpdateAccountUserDto":{"type":"object","properties":{"account_user_role_id":{"type":"number","example":2},"lots":{"example":[1,2,3],"type":"array","items":{"type":"string"}},"email":{"type":"string","example":"john.doe@example.com"},"password":{"type":"string"},"name":{"type":"string","example":"John Doe"},"phone":{"type":"string","example":"+385 555 5555"},"account_user_role":{"type":"string","example":"Super Admin","enum":["Super Admin","Admin","Operator"]}}},"ErrorResponseDto":{"type":"object","properties":{"success":{"type":"boolean"},"errors":{"type":"array","items":{"type":"string"}}},"required":["success","errors"]},"UserElectronicDeviceDto":{"type":"object","properties":{}},"LoginDto":{"type":"object","properties":{"email":{"type":"string","default":"john.doe@mail.com"},"password":{"type":"string","default":"somesecretpassword"}},"required":["email","password"]},"VerifyOtpCodeDto":{"type":"object","properties":{"email":{"type":"string","example":"john.doe@example.com"},"code":{"type":"string","example":482910}},"required":["email","code"]},"LoginResponseDto":{"type":"object","properties":{"id":{"type":"number"},"type":{"type":"string"},"token":{"type":"string"},"name":{"type":"string","example":"John Doe"},"email":{"type":"string","example":"john.doe@example.com"},"account_id":{"type":"number"},"account_user_role_id":{"type":"number","example":1},"account_user_id":{"type":"number"},"account_role_id":{"type":"number","example":2}},"required":["id","type","token","name","email","account_id","account_user_role_id","account_user_id","account_role_id"]},"SocialLoginDto":{"type":"object","properties":{"token":{"type":"string"},"type":{"type":"string","example":"apple","enum":["google","apple"]}},"required":["token","type"]},"CreateApiTokenDto":{"type":"object","properties":{"name":{"type":"string","default":"dev laptop"}},"required":["name"]},"ApiTokenDto":{"type":"object","properties":{"id":{"type":"number","example":1},"name":{"type":"string","example":"dev-laptop"},"account_id":{"type":"number","example":3},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"}},"required":["id","name","account_id","created_at","updated_at"]},"GatewayDto":{"type":"object","properties":{"id":{"type":"number","example":1},"account_id":{"type":"number","example":1},"lot_id":{"type":"number","example":1},"uuid":{"type":"string","example":"ga27btcxx21"},"name":{"type":"string","example":1},"firmware_version":{"type":"string","example":"1.0.0"},"ip_address":{"type":"string","example":"192.158.1.38"},"is_blocked":{"type":"number","example":0},"mac":{"type":"string","example":"00:1A:2B:3C:4D:5E"},"status":{"type":"string","example":"online","enum":["offline","online"]},"created_at":{"type":"string","example":"1791841994602"},"updated_at":{"type":"string","example":"1791841994602"},"deleted_at":{"type":"string","example":null}},"required":["id","account_id","lot_id","uuid","name","firmware_version","ip_address","is_blocked","mac","status","created_at","updated_at","deleted_at"]},"AssignGatewayToUserDto":{"type":"object","properties":{"uuid":{"type":"string","minLength":1,"maxLength":255,"default":"ga27btcxx21","description":"The uuid of the gateway, present phisically on the gateway"},"challenge":{"type":"string","description":"Challenge recieved when the Gateway enters pairing mode and read from the Gateway Bluetooth Advertisement","default":"NmhtcmVqdDBjempta3NsdmRtcWxxdW"},"lot_id":{"type":"number","description":"The id of the lot where we want to add the Gateway","default":0}},"required":["uuid","challenge"]},"GatewayOperationResponseDto":{"type":"object","properties":{"gateway_id":{"type":"number"}},"required":["gateway_id"]},"GatewayOperationDto":{"type":"object","properties":{"operation":{"type":"string","example":"reboot","enum":["reboot","info","force_scan"]}},"required":["operation"]},"CreateGatewayDto":{"type":"object","properties":{"uuid":{"type":"string","minLength":1,"maxLength":255,"default":"ga27btcxx21"},"mac":{"type":"string","minLength":1,"maxLength":255,"default":"00-B0-D0-63-C2-26"},"name":{"type":"string","minLength":1,"maxLength":255,"default":"ga27btcxx21"},"password":{"type":"string","minLength":3,"maxLength":255,"default":"somepassword"},"public_key":{"type":"string","minLength":500,"maxLength":1000,"default":"Z3ljaTBlem55OG5jZHh0b3FwbmpqejFxdDdxdmk0aDh3bW40NHBmMHBxaWplZTBnOW50eDVpeXhtN21pdTFueTd0c292eW05dHY4cXZjM3M0anMzcTdyYjJjZWI0bW5iN29ubTl3bWhqeXFjbWF4bTY2NGVhMHNqcW9vMGVuemY="}},"required":["uuid","mac","password","public_key"]},"UpdateGatewayDto":{"type":"object","properties":{"name":{"type":"string","minLength":3,"maxLength":255,"default":"ga27btcxx21"},"lot_id":{"type":"number","default":5}}},"GatewayChallengeDto":{"type":"object","properties":{"uuid":{"type":"string","example":"ga27btcxx21"}},"required":["uuid"]},"GatewayLoginDto":{"type":"object","properties":{"uuid":{"type":"string","example":"ga27btcxx21"},"signed_challenge":{"type":"string"}},"required":["uuid","signed_challenge"]},"SubtypeProductErrorDto":{"type":"object","properties":{"id":{"type":"number","description":"Product error id"},"jammed":{"type":"number","description":"Shows if the barrier is jammed"},"sensor_dirty":{"type":"number","description":"The barrier sensor is dirty"},"pin_broken":{"type":"number","description":"The barrier pin is broken"},"rtcc_invalid":{"type":"number","description":"The realtime clock is not set on the device"},"battery_empty":{"type":"number","description":"The battery is criticaly low"},"master_key_not_set":{"type":"number","description":"The barrier has no key exchanged on it"},"deleted_at":{"format":"date-time","type":"string","example":null,"description":"Deleted at Dated"},"created_at":{"format":"date-time","type":"string","description":"Created at Date"},"updated_at":{"format":"date-time","type":"string","description":"Update at Date"},"error_code":{"type":"string","description":"The error code used for lookup"}},"required":["id","jammed","sensor_dirty","pin_broken","rtcc_invalid","battery_empty","master_key_not_set","deleted_at","created_at","updated_at","error_code"]},"SubtypeProductDto":{"type":"object","properties":{"product_error":{"description":"Product error","allOf":[{"$ref":"#/components/schemas/SubtypeProductErrorDto"}]},"id":{"type":"number","description":"Master key id"},"device_id":{"type":"string","example":"Parklio_RAB231C","description":"The unique product identifier"},"name":{"type":"string","example":"RAB231C","description":"The user set product name"},"power_type":{"type":"string","example":"battery","description":"The power source type of the product","enum":["battery","grid"]},"lot_id":{"type":"number","description":"The lot id of to which the product is assigned"},"zone_id":{"type":"number","description":"The zone id of to which the product is assigned"},"product_type_id":{"type":"number","description":"The product type id"},"hardware_version":{"type":"string","example":"1.0.0","description":"The hardware versions of the product"},"firmware_version":{"type":"string","example":"1.0.0","description":"The firmware version of the product"},"latitude":{"type":"number","example":43.52652359,"description":"The product latitude, acquired during setup"},"longitude":{"type":"number","example":16.450813293,"description":"The product longitude, acquired during setup"},"status":{"type":"string","example":"online","description":"The product state","enum":["online","offline"]},"advertisement_data":{"type":"string","description":"The product raw advertisement data"},"battery_status":{"type":"number","description":"The product battery percentage"},"product_error_id":{"type":"number","description":"The product error id"},"rssi":{"type":"number","example":-88,"description":"The measured product RSSI signal to the optimal parklio gateway"},"created_at":{"format":"date-time","type":"string","description":"Created at Date"},"updated_at":{"format":"date-time","type":"string","description":"Updated at Date"},"deleted_at":{"format":"date-time","type":"string","example":null,"description":"Deleted at Date"}},"required":["product_error","id","device_id","name","power_type","lot_id","zone_id","product_type_id","hardware_version","firmware_version","latitude","longitude","status","advertisement_data","battery_status","product_error_id","rssi","created_at","updated_at","deleted_at"]},"SubtypeMasterKeyDto":{"type":"object","properties":{"id":{"type":"number","description":"Master key id"},"product_id":{"type":"number","description":"Product id"},"owner_id":{"type":"number","description":"Owning account id"},"key":{"type":"string","description":"The raw base64 master key value"},"advertisement_signature_key":{"type":"string","description":"The raw base64 advertisement key value"},"is_revoked":{"type":"number","description":"Has the key been revoked by a new key exchange"},"created_at":{"format":"date-time","type":"string","description":"Created at Date"},"updated_at":{"format":"date-time","type":"string","description":"Updated at Date"}},"required":["id","product_id","owner_id","key","advertisement_signature_key","is_revoked","created_at","updated_at"]},"LegacyBarrierDto":{"type":"object","properties":{"product_id":{"type":"number","description":"Product id"},"product":{"description":"The product associated with the brain","allOf":[{"$ref":"#/components/schemas/SubtypeProductDto"}]},"master_key":{"description":"The master key exchanged with the product","allOf":[{"$ref":"#/components/schemas/SubtypeMasterKeyDto"}]},"id":{"type":"number","description":"Subtype id"},"state":{"type":"string","example":"opened","description":"Position state","enum":["opened","closed"]},"is_car_on_top":{"type":"number","description":"Car on top state"},"is_autoclose":{"type":"number","description":"Is autoclose turned on"},"deleted_at":{"format":"date-time","type":"string","example":null,"description":"Deleted at Dated"},"created_at":{"format":"date-time","type":"string","description":"Created at Date"},"updated_at":{"format":"date-time","type":"string","description":"Update at Date"}},"required":["product_id","product","master_key","id","state","is_car_on_top","is_autoclose","deleted_at","created_at","updated_at"]},"CreateLegacyBarrierDto":{"type":"object","properties":{"device_id":{"type":"string","example":"Parklio_RAB231C"},"name":{"type":"string","example":"RAB231C"},"master_key":{"type":"string","example":"VGhpcyBpcyBhIGJhc2U2NCBlbmNvZGVkIHN0cmluZw=="},"latitude":{"type":"number","example":43.52652359},"longitude":{"type":"number","example":16.450813293}},"required":["device_id","name","master_key"]},"UpdateLegacyBarrierDto":{"type":"object","properties":{"name":{"type":"string","example":"Parklio_RAB231C"},"latitude":{"type":"number","example":43.52652359},"longitude":{"type":"number","example":16.450813293},"lot_id":{"type":"number","example":1},"zone_id":{"type":"number","example":1}}},"ZoneDto":{"type":"object","properties":{"id":{"type":"number","description":"The unique identifier of the zone","example":1},"account_id":{"type":"number","description":"The ID of the account this zone belongs to","example":1},"lot_id":{"type":"number","description":"The ID of the lot this zone belongs to","example":1},"name":{"type":"string","description":"The name of the zone","example":"Default Zone"},"description":{"type":"string","description":"A brief description of the zone","example":"Zone covering the main entrance and visitor parking area"},"spot_count":{"type":"number","description":"The total number of parking spots in the zone","example":10},"occupied_count":{"type":"number","description":"The current number of occupied spots in the zone","example":0},"tariffs":{"description":"The tariffs associated with this zone","example":[{"id":1,"name":"Basic Tariff","order":1}],"type":"array","items":{"type":"string"}},"max_levenshtein_distance":{"type":"number","description":"The maximum Levenshtein distance allowed when fuzzy matching scanned license plates against whitelisted plates","example":1},"vector_map":{"type":"string"},"deleted_at":{"format":"date-time","type":"string","example":null},"created_at":{"format":"date-time","type":"string","description":"The date and time the zone was created","example":{}},"updated_at":{"format":"date-time","type":"string","description":"The date and time the zone was last updated","example":{}}},"required":["id","account_id","lot_id","name","description","spot_count","occupied_count","tariffs","max_levenshtein_distance","vector_map","deleted_at","created_at","updated_at"]},"CreateZoneDto":{"type":"object","properties":{"name":{"type":"string","description":"The name of the zone","example":"Main Entrance Zone"},"lot_id":{"type":"number","description":"The ID of the lot this zone belongs to","example":1},"description":{"type":"string","description":"A brief description of the zone","example":"Zone covering the main entrance and visitor parking area"},"max_levenshtein_distance":{"type":"number","description":"The maximum Levenshtein distance allowed when fuzzy matching scanned license plates against whitelisted plates","example":1,"minimum":0,"maximum":16}},"required":["name","lot_id"]},"UpdateZoneDto":{"type":"object","properties":{"name":{"type":"string","description":"The name of the zone","example":"Main Entrance Zone"},"lot_id":{"type":"number","description":"The ID of the lot this zone belongs to","example":1},"description":{"type":"string","description":"A brief description of the zone","example":"Zone covering the main entrance and visitor parking area"},"occupied_count":{"type":"number","description":"The current number of occupied spots in the zone","example":42},"spot_count":{"type":"number","description":"The total number of parking spots in the zone","example":100},"max_levenshtein_distance":{"type":"number","description":"The maximum Levenshtein distance allowed when fuzzy matching scanned license plates against whitelisted plates","example":1,"minimum":0,"maximum":16}}},"ZoneFreeSpotsDto":{"type":"object","properties":{"spots":{"type":"string","example":"10"}},"required":["spots"]},"AssignTariffsToZoneDto":{"type":"object","properties":{}},"UnssignTariffsFromZoneDto":{"type":"object","properties":{}},"ReplaceTariffsForZone":{"type":"object","properties":{}},"UpdateTariffOrderDto":{"type":"object","properties":{}},"TariffDto":{"type":"object","properties":{"id":{"type":"number","example":1},"name":{"type":"string","example":"Standard Day Tariff"},"description":{"type":"string","example":"Applies during regular business hours"},"start_time":{"format":"date-time","type":"string","example":{}},"end_time":{"format":"date-time","type":"string","example":{}},"season_start":{"type":"string","example":"2020-01-01"},"season_end":{"type":"string","example":"2020-12-01"},"interval":{"type":"number","example":60},"price":{"type":"number","example":200},"exit_free_time_interval":{"type":"number","example":10},"entry_free_time_interval":{"type":"number","example":5},"maxima":{"type":"number","example":2000},"max_time_of_stay":{"type":"number","example":480},"gratis_time":{"type":"number","example":20},"currency":{"type":"string","example":"EUR"},"price_progression_type":{"type":"string","example":"linear","enum":["flat","linear","exponential","incremental"]},"account_id":{"type":"number","example":1},"schedules":{"example":[{"id":1,"weekday":1,"start_time":"08:00","end_time":"18:00"}],"type":"array","items":{"type":"string"}},"max_affected_members_per_group":{"type":"number","example":20,"description":"Maximum amount of users that will be affected by this tariff"},"zones":{"example":[{"id":1,"name":"Premium Parking Zone"}],"type":"array","items":{"type":"string"}},"groups":{"example":[{"id":5,"name":"Employees"}],"type":"array","items":{"type":"string"}}},"required":["id","name","description","start_time","end_time","season_start","season_end","interval","price","exit_free_time_interval","entry_free_time_interval","maxima","max_time_of_stay","gratis_time","currency","price_progression_type","account_id","schedules","max_affected_members_per_group","zones","groups"]},"CreateTariffDto":{"type":"object","properties":{"group_ids":{"example":[2,9],"description":"IDs of the groups this tariff applies to","type":"array","items":{"type":"string"}},"name":{"type":"string","example":"Weekend Special","description":"Name of the tariff"},"description":{"type":"string","example":"Special pricing for weekends only","description":"Description of the tariff"},"start_time":{"format":"date-time","type":"string","example":"2025-01-01T08:00:00.000Z","description":"Date and time from which the tariff becomes active. The tariff is not applied before this timestamp."},"end_time":{"format":"date-time","type":"string","example":"2025-01-01T20:00:00.000Z","description":"Date and time until which the tariff remains active. The tariff is not applied after this timestamp."},"season_start":{"type":"string","example":"2025-01-01","description":"Seasonal start date of the tariff. Only the day and month are evaluated; the year is ignored. The tariff is applied only within this day–month range each year."},"season_end":{"type":"string","example":"2025-03-01","description":"Seasonal end date of the tariff. Only the day and month are evaluated; the year is ignored. The tariff is applied only within this day–month range each year."},"interval":{"type":"number","example":15,"description":"Charging interval in minutes (minimum 15)"},"price":{"type":"number","example":2.5,"description":"Base price for the interval"},"exit_free_time_interval":{"type":"number","example":10,"description":"Exit free time in minutes"},"entry_free_time_interval":{"type":"number","example":5,"description":"Entry free time in minutes"},"maxima":{"type":"number","example":20,"description":"Maximum price allowed for the tariff"},"max_time_of_stay":{"type":"number","example":240,"description":"Maximum time of stay in minutes"},"gratis_time":{"type":"number","example":30,"description":"Gratis time in minutes before charging starts"},"currency_id":{"type":"number","example":1,"description":"Currency ID (e.g., 1 = EUR)"},"price_progression_type":{"type":"string","example":"flat","enum":["flat","linear","exponential","incremental"],"description":"How the price increases (flat, linear, etc.)"},"max_affected_members_per_group":{"type":"number","example":3,"description":"Maximum amount of members what will be allowed by that tariff per group"},"schedules":{"example":[{"weekday":0,"start_time":"08:00:00","end_time":"17:00:00"}],"type":"array","items":{"type":"string"}}},"required":["name","schedules"]},"ReplaceTariffDto":{"type":"object","properties":{"group_ids":{"example":[2,9],"description":"IDs of the groups this tariff applies to","type":"array","items":{"type":"string"}},"name":{"type":"string","example":"Weekend Special","description":"Name of the tariff"},"description":{"type":"string","example":"Special pricing for weekends only","description":"Description of the tariff"},"start_time":{"format":"date-time","type":"string","example":"2025-01-01T08:00:00.000Z","description":"Date and time from which the tariff becomes active. The tariff is not applied before this timestamp."},"end_time":{"format":"date-time","type":"string","example":"2025-01-01T20:00:00.000Z","description":"Date and time until which the tariff remains active. The tariff is not applied after this timestamp."},"season_start":{"type":"string","example":"2025-01-01T00:00:00.000Z","description":"Seasonal start date of the tariff. Only the day and month are evaluated; the year is ignored. The tariff is applied only within this day–month range each year."},"season_end":{"type":"string","example":"2025-03-01T00:00:00.000Z","description":"Seasonal end date of the tariff. Only the day and month are evaluated; the year is ignored. The tariff is applied only within this day–month range each year."},"interval":{"type":"number","example":15,"description":"Charging interval in minutes (minimum 15)"},"price":{"type":"number","example":2.5,"description":"Base price for the interval"},"exit_free_time_interval":{"type":"number","example":10,"description":"Exit free time in minutes"},"entry_free_time_interval":{"type":"number","example":5,"description":"Entry free time in minutes"},"maxima":{"type":"number","example":20,"description":"Maximum price allowed for the tariff"},"max_time_of_stay":{"type":"number","example":240,"description":"Maximum time of stay in minutes"},"gratis_time":{"type":"number","example":30,"description":"Gratis time in minutes before charging starts"},"currency_id":{"type":"number","example":1,"description":"Currency ID (e.g., 1 = EUR)"},"price_progression_type":{"type":"string","example":"flat","enum":["flat","linear","exponential","incremental"],"description":"How the price increases (flat, linear, etc.)"},"max_affected_members_per_group":{"type":"number","example":20,"description":"Maximum amount of users that will be affected by this tariff"},"schedules":{"example":[{"weekday":0,"start_time":"08:00:00","end_time":"17:00:00"}],"nullable":true,"type":"array","items":{"type":"string"}}},"required":["group_ids","name","description","start_time","end_time","interval","price","exit_free_time_interval","entry_free_time_interval","maxima","max_time_of_stay","gratis_time","currency_id","price_progression_type","max_affected_members_per_group","schedules"]},"UpdateTariffDto":{"type":"object","properties":{"name":{"type":"string","example":"Updated Tariff Name"},"description":{"type":"string","example":"Updated description for this tariff."},"start_time":{"format":"date-time","type":"string","example":"2025-01-01T00:00:00.000Z"},"end_time":{"format":"date-time","type":"string","example":"2025-12-31T23:59:59.000Z"},"interval":{"type":"number","example":30},"price":{"type":"number","example":250},"exit_free_time_interval":{"type":"number","example":10},"entry_free_time_interval":{"type":"number","example":5},"maxima":{"type":"number","example":2000},"max_time_of_stay":{"type":"number","example":480},"gratis_time":{"type":"number","example":15},"currency":{"type":"number","example":1},"price_progression_type":{"type":"string","example":"flat","enum":["flat","linear","exponential","incremental"]}}},"AssignGroupsToTariffDto":{"type":"object","properties":{"ids":{"example":[3,8,12],"description":"IDs of the groups to assign to the tariff","type":"array","items":{"type":"number"}}},"required":["ids"]},"ReplaceGroupsForTariffDto":{"type":"object","properties":{"ids":{"example":[1,4,7],"description":"List of group IDs that will replace all existing groups assigned to the tariff","type":"array","items":{"type":"number"}}},"required":["ids"]},"GroupDto":{"type":"object","properties":{"id":{"type":"number","example":1},"name":{"type":"string","example":"Group name"},"description":{"type":"string","example":"Group description"},"account_id":{"type":"number","example":1},"members":{"example":[{"id":1,"name":"Member"}],"type":"array","items":{"type":"string"}},"tariffs":{"example":[{"id":1,"name":"Basic Tariff"}],"type":"array","items":{"type":"string"}}},"required":["id","name","description","account_id","members","tariffs"]},"CreateGroupDto":{"type":"object","properties":{"name":{"type":"string","example":"Default Group"},"description":{"type":"string","example":"Default Description"},"member_ids":{"example":[1,2,3],"type":"array","items":{"type":"string"}},"tariff_ids":{"example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["name"]},"ReplaceGroupDto":{"type":"object","properties":{"name":{"type":"string","example":"Default Group"},"description":{"type":"string","example":"Default Description","nullable":true},"member_ids":{"example":[1,2,3],"type":"array","items":{"type":"string"}},"tariff_ids":{"example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["name","description","member_ids","tariff_ids"]},"UpdateGroupDto":{"type":"object","properties":{"name":{"type":"string","example":"Default Group"},"description":{"type":"string","example":"Default Description"}}},"AssignMembersToGroupDto":{"type":"object","properties":{}},"ReplaceMembersForGroupDto":{"type":"object","properties":{}},"MemberDto":{"type":"object","properties":{"id":{"type":"number","example":1},"name":{"type":"string","example":"John Doe"},"description":{"type":"string","example":"User description"},"email":{"type":"string","example":"john.doe@mail.com"},"license_plate":{"type":"string","example":"ST1950TH"},"account_id":{"type":"number","example":1},"created_at":{"format":"date-time","type":"string","example":"2026-10-12T21:53:14.665Z"},"updated_at":{"format":"date-time","type":"string","example":"2026-10-12T21:53:14.665Z"},"groups":{"example":[{"id":1,"name":"Some Group"}],"type":"array","items":{"type":"string"}}},"required":["id","name","description","email","license_plate","account_id","created_at","updated_at","groups"]},"CreateMemberDto":{"type":"object","properties":{"name":{"type":"string","example":"Default Member"},"description":{"type":"string","example":"Default Description"},"email":{"type":"string","example":"Default Email"},"license_plate":{"type":"string","example":"Default license plate"},"group_ids":{"example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["license_plate"]},"FileUploadResponse":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"ReplaceMemberDto":{"type":"object","properties":{"name":{"type":"string","example":"Default Member"},"description":{"type":"string","example":"Default Description"},"email":{"type":"string","example":"Default Email"},"license_plate":{"type":"string","example":"Default license plate"},"group_ids":{"example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["name","description","email","license_plate","group_ids"]},"UpdateMemberDto":{"type":"object","properties":{"name":{"type":"string","example":"Default Member"},"description":{"type":"string","example":"Default Description"},"email":{"type":"string","example":"Default Email"},"license_plate":{"type":"string","example":"Default license plate"}}},"LprCamera":{"type":"object","properties":{"id":{"type":"number"},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"},"deleted_at":{"format":"date-time","type":"string","example":null}},"required":["id","created_at","updated_at","deleted_at"]},"CreateAxisCameraDto":{"type":"object","properties":{"device_id":{"type":"string","example":"L0123456789"},"device_serial":{"type":"string","example":"L0123456789"},"mac":{"type":"string","example":"00:1A:2B:3C:4D:5E"},"password":{"type":"string","example":"12345678"}},"required":["device_id","device_serial","mac","password"]},"VehicleInfoDto":{"type":"object","properties":{"type":{"type":"string"},"color":{"type":"string"},"make":{"type":"string"},"model":{"type":"string"}}},"CameraInfoDto":{"type":"object","properties":{"serial_number":{"type":"string"},"prod_short_name":{"type":"string"},"i_p_address":{"type":"string"},"m_a_c_address":{"type":"string"}}},"AxisRecognitionDto":{"type":"object","properties":{"image_array":{"example":{"image_type":"","image_format":"","binary_image":""},"type":"array","items":{"type":"string"}},"plate_a_s_c_i_i":{"type":"string","example":"DT-PLATe2"},"car_i_d":{"type":"string","example":"100"},"plate_country":{"type":"string","example":"GBR"},"plate_confidence":{"type":"string","example":"0.823962"},"car_move_direction":{"type":"string","example":"in","enum":["in","out","unknown"]},"vehicle_info":{"example":{"view":"front","type":"truck","color":"red"},"allOf":[{"$ref":"#/components/schemas/VehicleInfoDto"}]},"camera_info":{"example":{"serial_number":"A0123456789","prod_short_name":"A0123456789","i_p_address":"192.158.1.38","m_a_c_address":"00-B0-D0-63-C2-26"},"allOf":[{"$ref":"#/components/schemas/CameraInfoDto"}]}},"required":["plate_a_s_c_i_i","car_i_d","plate_country","plate_confidence","car_move_direction","vehicle_info","camera_info"]},"LprCameraDto":{"type":"object","properties":{"id":{"type":"number","example":1},"name":{"type":"string","description":"Lpr camera name","example":"L123456789"},"device_id":{"type":"string","description":"The unique identifier of the LPR Camera","example":"L123456789"},"device_serial":{"type":"string","description":"The unique identifier of the LPR Camera","example":"L123456789"},"account_id":{"type":"number","description":"The Account Id associated with the device","example":"1"},"zone_id":{"type":"number","description":"The zone to which the camera is assigned to.","example":"1"},"status":{"type":"string","enum":["online","offline","auth","sleep","reset"],"description":"The status of the LPR Camera","example":"online"},"lpr_position":{"type":"string","enum":["in","out","in/out"],"description":"The direction of the passageway that the LPR Camera is focused on","example":"in"},"connected_device_type":{"type":"string","enum":["gate","chain","bollard","other","standalone"],"description":"The type of product connected to the LPR Camera","example":"gate"},"input_status":{"type":"string","enum":["active","inactive","unknown"],"description":"The status of the input signal on the camera","example":"unknown"},"mac":{"type":"string","description":"The MAC address of the LPR Camera","example":"be:a0:42:fd:21:b8"},"save_image":{"type":"boolean","description":"LPR Camera image subscription state","example":false},"deleted_at":{"format":"date-time","type":"string","example":null},"created_at":{"format":"date-time","type":"string","example":{}},"updated_at":{"format":"date-time","type":"string","example":{}}},"required":["id","name","device_id","device_serial","account_id","zone_id","status","lpr_position","connected_device_type","input_status","mac","save_image","deleted_at","created_at","updated_at"]},"AssignLprCameraDto":{"type":"object","properties":{"device_id":{"type":"string","example":"L0123456789","description":"The unique device id found on the Camera sticker"},"name":{"type":"string","example":"John Doe","description":"A user assigned name"},"connected_device_type":{"type":"string","example":"gate","description":"A enum indicating the type of device connected to the Camera","enum":["gate","chain","bollard","other","standalone"]},"lpr_position":{"type":"string","example":"in","description":"The direction of the passage that the Camera is overlooking","enum":["in","out","in/out"]},"zone_id":{"type":"number","description":"The zone we wish to assign the camera to"}},"required":["device_id","name","lpr_position","zone_id"]},"AssignAxisLprCameraDto":{"type":"object","properties":{"mac":{"type":"string","example":"00:1A:2B:3C:4D:5E"},"name":{"type":"string","example":"John Doe","description":"A user assigned name"},"connected_device_type":{"type":"string","example":"gate","description":"A enum indicating the type of device connected to the Camera","enum":["gate","chain","bollard","other","standalone"]},"lpr_position":{"type":"string","example":"in","description":"The direction of the passage that the Camera is overlooking","enum":["in","out","in/out"]},"zone_id":{"type":"number","description":"The zone we wish to assign the camera to"}},"required":["mac","lpr_position","zone_id"]},"LprCameraStateChangeDto":{"type":"object","properties":{"id":{"type":"number","example":1},"lpr_camera_id":{"type":"number","example":1},"status":{"type":"string","enum":["online","offline"],"description":"The online/offline state the camera transitioned to","example":"online"},"created_at":{"format":"date-time","type":"string","example":{}}},"required":["id","lpr_camera_id","status","created_at"]},"UpdateLprCameraDto":{"type":"object","properties":{"name":{"type":"string","example":"L0123456789","description":"A user assigned name"},"connected_device_type":{"type":"string","example":"gate","description":"A enum indicating the type of device connected to the Camera","enum":["gate","chain","bollard","other","standalone"]},"lpr_position":{"type":"string","example":"in","description":"The direction of the passage that the Camera is overlooking","enum":["in","out","in/out"]},"zone_id":{"type":"number","description":"The zone we wish to assign the camera to"},"save_image":{"type":"boolean","description":"Updates whether the camera should save captured images.","example":true}}},"CreateLprCameraDto":{"type":"object","properties":{"device_id":{"type":"string","example":"L0123456789"},"device_serial":{"type":"string","example":"L0123456789"},"mac":{"type":"string","example":"00:1A:2B:3C:4D:5E"}},"required":["device_id","device_serial","mac"]},"InformationLprCameraDto":{"type":"object","properties":{"server_url":{"type":"string","example":"lpr.parklio.com","description":"The URL that the camera needs to point to.","default":"lpr.parklio.com"},"server_port":{"type":"number","example":7660,"description":"The target server port.","default":7660},"password":{"type":"string","example":"somepassword","description":"The password used to authenticate the camera to the server.","default":"somepassword"}},"required":["server_url","server_port","password"]},"ChangeLprCameraStateDto":{"type":"object","properties":{"operation":{"type":"string","example":"open","description":"The signal we want to send to the camera","enum":["open","close"],"default":"open"},"duration":{"type":"number","example":1,"description":"The duration of the signal","default":1}}},"LprRemoteControlLogsLprCameraDto":{"type":"object","properties":{"id":{"type":"number"},"device_id":{"type":"string","example":"L0123456789"},"device_serial":{"type":"string","example":"L0123456789"},"name":{"type":"string","example":"John Doe"},"account_id":{"type":"number"},"zone_id":{"type":"number"},"status":{"type":"string","example":"online","enum":["online","offline","auth","sleep","reset"]},"lpr_postion":{"type":"string","example":"in","enum":["in","out","in/out"]},"connected_device_type":{"type":"string","example":"gate"},"mac":{"type":"string","example":"00:1A:2B:3C:4D:5E"},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"},"deleted_at":{"format":"date-time","type":"string","example":null}},"required":["id","device_id","device_serial","name","account_id","zone_id","status","lpr_postion","connected_device_type","mac","created_at","updated_at","deleted_at"]},"LprRemoteControlLogDto":{"type":"object","properties":{"id":{"type":"number"},"lpr_camera_id":{"type":"number"},"account_id":{"type":"number"},"account_user_id":{"type":"number"},"lot_id":{"type":"number"},"operation":{"type":"string","example":"open","enum":["close","open"]},"created_at":{"format":"date-time","type":"string"},"lpr_camera":{"$ref":"#/components/schemas/LprRemoteControlLogsLprCameraDto"},"account_user":{"$ref":"#/components/schemas/AccountUserDto"}},"required":["id","lpr_camera_id","account_id","account_user_id","lot_id","operation","created_at","lpr_camera","account_user"]},"PlateReadingDto":{"type":"object","properties":{"id":{"type":"number","example":1},"plate":{"type":"string","example":"ST1950TH"},"confidence":{"type":"number","example":0.9876,"nullable":true},"image_url":{"type":"string","example":"someurltoimage.jpg","nullable":true},"cropped_image_url":{"type":"string","example":"someurltoimage.jpg","nullable":true},"direction":{"type":"string","enum":["in","out","undefined"],"example":"in"},"type":{"type":"string","enum":["bus","car","motorcycle","truck","van"],"example":"car","nullable":true},"make":{"type":"string","example":"Volkswagen","nullable":true},"color":{"type":"string","example":"Blue","nullable":true},"model":{"type":"string","example":"Golf","nullable":true},"country_code":{"type":"string","example":"HR","nullable":true},"session_id":{"type":"number","example":123,"nullable":true},"access_decision":{"type":"string","enum":["denied","triggered"],"example":"triggered","nullable":true},"access_decision_reason":{"type":"string","enum":["debounce","direction_mismatch","max_capacity","no_active_session","no_tariff","session_exit","tariff","unknown_direction","whitelist"],"example":"whitelist","nullable":true},"plate_side":{"type":"string","example":"front"},"lpr_camera_direction":{"type":"string","example":"in"},"lpr_camera_id":{"type":"number","example":5},"zone_id":{"type":"number","example":10},"created_at":{"type":"string","example":"2026-10-12T21:53:14.949Z"},"updated_at":{"type":"string","example":"2026-10-12T21:53:14.949Z"}},"required":["id","plate","confidence","image_url","cropped_image_url","direction","type","make","color","model","country_code","session_id","access_decision","access_decision_reason","plate_side","lpr_camera_direction","lpr_camera_id","zone_id","created_at","updated_at"]},"UpdatePlateReadingDto":{"type":"object","properties":{"plate":{"type":"string","example":"ST1950TH"}}},"ProactiveAlertDto":{"type":"object","properties":{"id":{"type":"number","example":1,"description":"Unique identifier of the alert."},"name":{"type":"string","example":"Defualt Zone Alert","description":"Descriptive name of the alert. Must be between 3 and 256 characters."},"occupancy_threshold":{"type":"number","example":90,"description":"Occupancy percentage threshold in % that triggers an email notification when the parking lot reaches or exceeds this value."},"min_minutes_between_emails":{"type":"number","example":30,"description":"Minimum time interval (in minutes) required between sending alert emails. Must be between 1 and 3600 minutes. Default value is 30."},"created_at":{"format":"date-time","type":"string","example":{}},"updated_at":{"format":"date-time","type":"string","example":{}},"receivers":{"type":"array","example":[{"id":1,"name":"John Doe","receiver_email":"john.doe@example.com"},{"id":2,"name":"Jane Smith","receiver_email":"jane.smith@example.com"}]},"zone":{"type":"object","example":{"id":1,"name":"Defualt Zone"}}},"required":["id","name","occupancy_threshold","min_minutes_between_emails","created_at","updated_at","receivers","zone"]},"AssignProactiveAlertReciversDto":{"type":"object","properties":{"receivers":{"example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["receivers"]},"ReplaceProactiveAlertsDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1},"receivers":{"example":[1,2,3],"type":"array","items":{"type":"string"}},"name":{"type":"string","example":"Alert name"},"occupancy_threshold":{"type":"number","example":90},"min_minutes_between_emails":{"type":"number","example":30,"description":"Minimum time interval (in minutes) required between sending alert emails. Must be between 1 and 3600 minutes. Default value is 30."}},"required":["zone_id","receivers","name","occupancy_threshold","min_minutes_between_emails"]},"CreateProactiveAlertDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"Unique identifier of the zone associated with the alert"},"receivers":{"example":[1,2,3],"description":"List of account user IDs that will receive the email alert.","type":"array","items":{"type":"string"}},"name":{"type":"string","example":"Alert name","description":"Descriptive name of the alert. Must be between 3 and 256 characters."},"occupancy_threshold":{"type":"number","example":90,"description":"Occupancy percentage threshold in % that triggers an email notification when the parking lot reaches or exceeds this value."},"min_minutes_between_emails":{"type":"number","example":30,"description":"Minimum time interval (in minutes) required between sending alert emails. Must be between 1 and 3600 minutes. Default value is 30."}},"required":["zone_id","receivers","name"]},"UpdateProactiveAlertDto":{"type":"object","properties":{"name":{"type":"string","example":"New Alert name","description":"Descriptive name of the alert. Must be between 3 and 256 characters."},"occupancy_threshold":{"type":"number","example":90,"description":"Occupancy percentage threshold in % that triggers an email notification when the parking lot reaches or exceeds this value."},"min_minutes_between_emails":{"type":"number","example":60,"description":"Minimum time interval (in minutes) required between sending alert emails. Must be between 1 and 3600 minutes."}}},"UnassignReceiversProacticeAlertDto":{"type":"object","properties":{"receiver_ids":{"description":"IDs of the account users to unassign as receivers from this license plate alert.","example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["receiver_ids"]},"SessionLicensePlateDto":{"type":"object","properties":{"plate":{"type":"string","example":"DT-PLATE2"},"id":{"type":"number","example":1},"image_url":{"type":"string"},"cropped_image_url":{"type":"string"}},"required":["plate","id","image_url","cropped_image_url"]},"SessionSourceDto":{"type":"object","properties":{"type":{"type":"string","example":"attendant","enum":["terminal","lpr_camera","product","payment","attendant","account"]},"id":{"type":"number","example":1}},"required":["type","id"]},"SessionDto":{"type":"object","properties":{"id":{"type":"number","example":"854813550000003054"},"public_id":{"type":"string","example":"A1B2C3D4E5"},"ended_at":{"format":"date-time","type":"string","example":"2026-10-12T22:53:14.970Z"},"duration":{"type":"number","example":10800},"discount_time":{"type":"number","example":15},"amount_paid":{"type":"number","example":20},"possibly_exited":{"type":"boolean","example":false},"exit_allowed":{"type":"boolean","example":true},"entry_license_plate":{"$ref":"#/components/schemas/SessionLicensePlateDto"},"created_at":{"format":"date-time","type":"string","example":"2026-10-12T21:53:14.971Z"},"zone_id":{"type":"number","example":"2"},"entry":{"example":{"id":5,"type":"attendant"},"allOf":[{"$ref":"#/components/schemas/SessionSourceDto"}]},"exit":{"example":{"id":5,"type":"lpr_camera"},"allOf":[{"$ref":"#/components/schemas/SessionSourceDto"}]}},"required":["id","public_id","created_at","zone_id","entry"]},"UserCreateSessionDto":{"type":"object","properties":{"license_plate":{"type":"string","example":"ST1950TH"},"lpr_camera_id":{"type":"number","example":1}}},"LotScopeNoIntervalExitCountResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"exit_count":{"type":"number","example":28.28,"description":"The cumulative exit count across all time"}},"required":["lot_id","name","exit_count"]},"LotScopeHourIntervalExitCountResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"exit_count":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of exit count for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","exit_count"]},"LotScopeDayIntervalExitCountResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"exit_count":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of exit count for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","exit_count"]},"LotScopeMonthIntervalExitCountResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"exit_count":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of exit count for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","exit_count"]},"ZoneScopeNoIntervalExitCountResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"exit_count":{"type":"number","example":28.28,"description":"The cumulative exit count across all time"}},"required":["zone_id","name","exit_count"]},"ZoneScopeHourIntervalExitCountResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"exit_count":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of exit count for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","exit_count"]},"ZoneScopeDayIntervalExitCountResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"exit_count":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of exit count for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","exit_count"]},"ZoneScopeMonthIntervalExitCountResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"exit_count":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of exit count for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","exit_count"]},"LotScopeNoIntervalEntryCountResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"entry_count":{"type":"number","example":28.28,"description":"The cumulative entry count across all time"}},"required":["lot_id","name","entry_count"]},"LotScopeHourIntervalEntryCountResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"entry_count":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of entry count for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","entry_count"]},"LotScopeDayIntervalEntryCountResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"entry_count":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of entry count for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","entry_count"]},"LotScopeMonthIntervalEntryCountResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"entry_count":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of entry count for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","entry_count"]},"ZoneScopeNoIntervalEntryCountResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"entry_count":{"type":"number","example":28.28,"description":"The cumulative entry count across all time"}},"required":["zone_id","name","entry_count"]},"ZoneScopeHourIntervalEntryCountResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"entry_count":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of entry count for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","entry_count"]},"ZoneScopeDayIntervalEntryCountResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"entry_count":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of entry count for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","entry_count"]},"ZoneScopeMonthIntervalEntryCountResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"entry_count":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of entry count for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","entry_count"]},"LotScopePeakEntryTimeResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"peak_entry_time":{"type":"number","example":14,"description":"The hour of the day (0-23) with the highest occupancy"}},"required":["lot_id","name","peak_entry_time"]},"ZoneScopePeakEntryTimeResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"peak_entry_time":{"type":"number","example":14,"description":"The hour of the day (0-23) with the highest occupancy"}},"required":["zone_id","name","peak_entry_time"]},"NoScopePeakEntryTimeResponseDto":{"type":"object","properties":{"peak_entry_time":{"type":"number","example":14,"description":"The hour of the day (0-23) with the highest occupancy","nullable":true}},"required":["peak_entry_time"]},"LotScopePeakExitTimeResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"peak_exit_time":{"type":"number","example":14,"description":"The hour of the day (0-23) with the highest number of vehicle exits"}},"required":["lot_id","name","peak_exit_time"]},"ZoneScopePeakExitTimeResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"peak_exit_time":{"type":"number","example":14,"description":"The hour of the day (0-23) with the highest number of vehicle exits"}},"required":["zone_id","name","peak_exit_time"]},"NoScopePeakExitTimeResponseDto":{"type":"object","properties":{"peak_exit_time":{"type":"number","example":14,"description":"The hour of the day (0-23) with the highest number of vehicle exits","nullable":true}},"required":["peak_exit_time"]},"UpdateSessionDto":{"type":"object","properties":{"discount_time":{"type":"number"},"license_plate":{"type":"string"}}},"TerminalDto":{"type":"object","properties":{"id":{"type":"number","example":1},"zone_id":{"type":"number","example":1},"name":{"type":"string","example":"Terminal"},"status":{"type":"string","example":"online","enum":["offline","online"]},"device_id":{"type":"string","example":"273827664"},"ip_address":{"type":"string","example":"192.168.2.223"},"version":{"type":"string","example":"1.0.1"},"mac":{"type":"string","example":"AA:BB:CC:11:22:33"},"is_master":{"type":"boolean","example":true},"type":{"type":"string","example":"exit","enum":["entry","exit","pof","lp_pof","lp_exit"]},"pos_serial_number":{"type":"string","example":"23432411233"},"electronic_device_id":{"type":"string","example":"12331365465"},"system_currency":{"type":"string","example":"EUR","default":"EUR"},"last_seen":{"type":"string","example":"2022-01-28T15:02:23.000Z","nullable":true},"updated_at":{"type":"string","example":"2022-01-28T15:02:23.000Z"},"created_at":{"type":"string","example":"2022-01-28T15:02:23.000Z"}},"required":["id","zone_id","name","status","device_id","ip_address","version","mac","is_master","type","pos_serial_number","electronic_device_id","system_currency","last_seen","updated_at","created_at"]},"CreateTerminalDto":{"type":"object","properties":{"device_id":{"type":"string","minLength":1,"maxLength":32,"example":"92338123"},"mac":{"type":"string","example":"45:d6:4a:fc:f7:2f"},"public_key":{"type":"string","minLength":50,"maxLength":1000,"default":"Z3ljaTBlem55OG5jZHh0b3FwbmpqejFxdDdxdmk0aDh3bW40NHBmMHBxaWplZTBnOW50eDVpeXhtN21pdTFueTd0c292eW05dHY4cXZjM3M0anMzcTdyYjJjZWI0bW5iN29ubTl3bWhqeXFjbWF4bTY2NGVhMHNqcW9vMGVuemY="},"type":{"type":"string","example":"entry","enum":["entry","exit","pof","lp_pof","lp_exit"]},"is_master":{"type":"boolean","example":true}},"required":["device_id","mac","public_key","type","is_master"]},"UpdateTerminalDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"example":"Terminal"},"zone_id":{"type":"number","example":1},"pos_serial_number":{"type":"string","minLength":1,"maxLength":255,"example":"23432411233"},"electronic_device_id":{"type":"string","minLength":1,"maxLength":255,"example":"12331365465"}}},"OperateTerminalRequestDto":{"type":"object","properties":{"operation":{"type":"string","example":"open","enum":["open","close","stay_open_on","stay_open_off"]},"access_point_id":{"type":"number","example":"1"}},"required":["operation"]},"SessionDetailsDto":{"type":"object","properties":{"session_id":{"type":"string","example":"854813550000003054"},"started_at":{"format":"date-time","type":"string","example":{}},"ended_at":{"format":"date-time","type":"string","example":{}},"duration":{"type":"number","example":10800},"discount_time":{"type":"number","example":15},"entry_type":{"type":"string","example":"exit"},"entry_terminal":{"type":"string","example":"Terminal.85481355"},"amount_paid":{"type":"number","example":20},"amount_due":{"type":"number","example":1.3},"payments":{"example":[{"origin":"85481355","payment_id":1,"session_id":"854813550000003054","paid_at":{},"currency":"EUR","amount_paid":20,"amount_due":20,"payment_method":"CARD","success":true,"error":null,"provider_transaction_id":"521911099292","provider_payment_id":"854813550000003054-9a8a-00006894898d"}],"type":"array","items":{"type":"string"}},"possibly_exited":{"type":"boolean","example":false},"exit_allowed":{"type":"boolean","example":true},"license_plate":{"type":"string","example":"DT-PLATE2"}},"required":["session_id","started_at","entry_type","entry_terminal","amount_due","license_plate"]},"TerminalLprCameraDto":{"type":"object","properties":{"id":{"type":"string","example":"L0123456789"},"created_at":{"format":"date-time","type":"string","example":{}},"modified_at":{"format":"date-time","type":"string","example":{}},"direction":{"type":"string","example":"in"},"cert":{"type":"string","example":""},"ap_id":{"type":"string","example":""},"mac":{"type":"string","example":"00-B0-D0-63-C2-26"},"model":{"type":"string","example":"axios"},"sn":{"type":"string","example":"L0123456789"}},"required":["id","created_at","modified_at","direction","cert","ap_id","mac","model","sn"]},"TerminalSessionDto":{"type":"object","properties":{"session_id":{"type":"string","example":"854813550000003054"},"started_at":{"format":"date-time","type":"string","example":{}},"ended_at":{"format":"date-time","type":"string","example":{}},"duration":{"type":"number","example":10800},"discount_time":{"type":"number","example":15},"entry_type":{"type":"string","example":"exit"},"entry_terminal":{"type":"string","example":"Terminal.85481355"},"amount_paid":{"type":"number","example":20},"amount_due":{"type":"number","example":1.3},"payments":{"example":[{"origin":"85481355","payment_id":1,"session_id":"854813550000003054","paid_at":{},"currency":"EUR","amount_paid":20,"amount_due":20,"payment_method":"CARD","success":true,"error":null,"provider_transaction_id":"521911099292","provider_payment_id":"854813550000003054-9a8a-00006894898d"}],"type":"array","items":{"type":"string"}},"possibly_exited":{"type":"boolean","example":false},"exit_allowed":{"type":"boolean","example":true},"license_plate":{"type":"string","example":"DT-PLATE2"}},"required":["session_id","started_at","entry_type","entry_terminal","amount_due","license_plate"]},"CreateTerminalSessionDto":{"type":"object","properties":{"plate":{"type":"string","example":"DT-PLATE2"},"user_id":{"type":"number","example":1},"user_email":{"type":"string","example":"john.doe@example.com"}},"required":["plate"]},"TerminalSessionPaymentDto":{"type":"object","properties":{"origin":{"type":"string","description":"device_id of terminal","example":"85481355"},"payment_id":{"type":"number","example":1},"session_id":{"type":"string","example":"854813550000003054"},"paid_at":{"type":"string","example":{}},"currency":{"type":"string","example":"EUR"},"amount_paid":{"type":"number","example":20},"amount_due":{"type":"number","example":20},"payment_method":{"type":"string","example":"CARD"},"success":{"type":"boolean","example":true},"error":{"type":"string","example":null},"provider_transaction_id":{"type":"string","example":"521911099292"},"provider_payment_id":{"type":"string","example":"854813550000003054-9a8a-00006894898d"},"invoice_link":{"type":"string","example":"https://api.spaceinvoices.com/v1/Documents/public/id/pdf"}},"required":["origin","payment_id","session_id","paid_at","currency","amount_paid","amount_due","payment_method","success","provider_payment_id","invoice_link"]},"CreateTerminalSessionPaymentDto":{"type":"object","properties":{"currency":{"type":"string","example":"EUR"},"amount_paid":{"type":"number","example":5,"description":"The paid amount is in EUR"},"payment_method":{"type":"string","example":"CARD"},"electronic_device_id":{"type":"string","example":"67c83c69c1g512e6b4ti9671"},"user_id":{"type":"number","example":1},"user_email":{"type":"string","example":"john.doe@example.com"}},"required":["currency","amount_paid","payment_method"]},"UpdateTerminalSessionDto":{"type":"object","properties":{"license_plate":{"type":"string","example":"DT-PLATE2"},"discount_time":{"type":"number","example":-1},"end":{"type":"boolean","example":true},"user_id":{"type":"number","example":1},"user_email":{"type":"string","example":"john.doe@example.com"}}},"RemoteControlDto":{"type":"object","properties":{"operation":{"type":"string","example":"prompt_payment","enum":["prompt_payment"]},"session_id":{"type":"string","example":"8232882392300332"}},"required":["operation","session_id"]},"TerminalAuthChallengeDto":{"type":"object","properties":{"challenge":{"type":"string","example":"aG4rUoDxpq8SIP4qG9K11g=="}},"required":["challenge"]},"TerminalAuthChallengeRequestDto":{"type":"object","properties":{"device_id":{"type":"string","minLength":1,"maxLength":32,"example":"92338123"}},"required":["device_id"]},"TerminalLoginDto":{"type":"object","properties":{"terminal_id":{"type":"number","example":"1"},"token":{"type":"string","example":"aG4rUoDxpq8SIP4qG9K11g=="}},"required":["terminal_id","token"]},"TerminalLoginRequestDto":{"type":"object","properties":{"device_id":{"type":"string","minLength":1,"maxLength":32,"example":"92338123"},"signed_challenge":{"type":"string","example":"aG4rUoDxpq8SIP4qG9K11g=="}},"required":["device_id","signed_challenge"]},"LotEntryDto":{"type":"object","properties":{"id":{"type":"number"},"scan_time":{"type":"string"},"lpr_camera_id":{"type":"number"},"lot_id":{"type":"number"},"related_lot_entry_id":{"type":"number"},"duration":{"type":"number"},"is_allowed":{"type":"number"},"direction":{"type":"string"},"license_plate":{"type":"string","example":"DT-PLATE2"},"license_plate_image_url":{"type":"string"},"full_image_url":{"type":"string"},"make":{"type":"string"},"color":{"type":"string"},"model":{"type":"string"},"color_depth":{"type":"number"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"lpr_camera":{"type":"object","example":{"id":1,"device_id":"L0123456789","device_serial":"L0123456789","name":"L0123456789","account_id":1,"zone_id":1,"status":"online","lpr_position":"in","connected_device_type":"gate","mac":"00:1A:2B:3C:4D:5E","deleted_at":null,"created_at":{},"updated_at":{}}},"related_lot_entry":{"type":"object","example":{"id":1,"scan_time":{},"lpr_camera_id":1,"lot_id":1,"related_lot_entry_id":1,"duration":1,"is_allowed":1,"direction":"in","license_plate":"DT-PLATE2","license_plate_image_url":"string","full_image_url":"string","make":"string","color":"string","model":"string","color_depth":1,"created_at":{},"updated_at":{},"lpr_camera":{"device_id":"L0123456789","name":"L0123456789","id":1}}}},"required":["id","scan_time","lpr_camera_id","lot_id","related_lot_entry_id","duration","is_allowed","direction","license_plate","license_plate_image_url","full_image_url","make","color","model","color_depth","created_at","updated_at","lpr_camera","related_lot_entry"]},"UpdateLotEntryDto":{"type":"object","properties":{"license_plate":{"type":"string","example":"DT-PLATE2"}}},"CreatedLotWhitelists":{"type":"object","properties":{}},"CreateLotWhitelistDto":{"type":"object","properties":{"license_plates":{"example":["DT-PLATE1","DT-PLATE2","DT-PLATE3"],"type":"array","items":{"type":"string"}},"name":{"type":"string"},"lot_id":{"type":"number","example":1},"start_time":{"type":"string","example":{}},"end_time":{"type":"string","example":{}},"is_unlimited":{"type":"boolean","example":false}},"required":["license_plates","start_time","is_unlimited"]},"LotWhitelistBoundProductsDto":{"type":"object","properties":{"id":{"type":"number","description":"The unique identifier of the product","example":1},"device_id":{"type":"string","description":"The unique device identifier of the product","example":"L123456789"},"name":{"type":"string","description":"The name of the product","example":"Main Gate"}},"required":["id","device_id","name"]},"LotWhitelistDto":{"type":"object","properties":{"id":{"type":"number","description":"The unique identifier of the whitelist entry","example":1},"account_user_id":{"type":"number","description":"The ID of the account user who created this whitelist entry","example":1},"lot_id":{"type":"number","description":"The ID of the lot this whitelist entry belongs to","example":1},"license_plate":{"type":"string","description":"The whitelisted license plate","example":"DT-PLATE2"},"license_plate_id":{"type":"number","description":"The unique identifier of the license plate record","example":1},"name":{"type":"string","description":"The name of the whitelist entry owner","example":"John Doe"},"status":{"type":"string","description":"The current status of the whitelist entry","example":"active","enum":["active","expired","deleted"]},"start_time":{"format":"date-time","type":"string","description":"The date and time from which the whitelist entry is valid","example":{}},"end_time":{"format":"date-time","type":"string","description":"The date and time until which the whitelist entry is valid","example":{}},"is_unlimited":{"type":"number","description":"Whether the whitelist entry has no expiration, 1 for unlimited, 0 for limited","example":0},"bound_products":{"description":"The list of products bound to this whitelist license plate, null if no products are bound to the license","nullable":true,"type":"array","items":{"$ref":"#/components/schemas/LotWhitelistBoundProductsDto"}},"created_at":{"format":"date-time","type":"string","description":"The date and time the whitelist entry was created","example":{}},"updated_at":{"format":"date-time","type":"string","description":"The date and time the whitelist entry was last updated","example":{}}},"required":["id","account_user_id","lot_id","license_plate","license_plate_id","name","status","start_time","end_time","is_unlimited","bound_products","created_at","updated_at"]},"UpdateLotWhitelistDto":{"type":"object","properties":{"name":{"type":"string","example":"John Doe"},"start_time":{"type":"string","example":{}},"end_time":{"type":"string","example":{}},"lot_id":{"type":"number"}}},"BulkDeleteLotWhitelistDto":{"type":"object","properties":{"ids":{"example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["ids"]},"LotWhitelistLogDto":{"type":"object","properties":{"id":{"type":"number"},"account_id":{"type":"number"},"account_user_id":{"type":"number"},"account_user":{"type":"object","example":{"id":1,"email":"john.doe@example.com","name":"John Doe"}},"lot_id":{"type":"number"},"license_plate":{"type":"string","example":"DT-PLATE2"},"operation":{"type":"string","example":"added"},"start_time":{"format":"date-time","type":"string","example":{}},"end_time":{"format":"date-time","type":"string","example":{}},"is_unlimited":{"type":"number"},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"}},"required":["id","account_id","account_user_id","account_user","lot_id","license_plate","operation","start_time","end_time","is_unlimited","created_at","updated_at"]},"LicensePlateAlertZoneDto":{"type":"object","properties":{"id":{"type":"number","example":1,"description":"Unique identifier of the zone associated with this license plate alert."},"name":{"type":"string","example":"Main Entrance","description":"Name of the zone associated with this license plate alert."}},"required":["id","name"]},"LicensePlateAlertReceiversDto":{"type":"object","properties":{"id":{"type":"number","example":1,"description":"Unique identifier of the account user receiving alerts for this license plate."},"name":{"type":"string","example":"John Doe","description":"Full name of the account user receiving alerts."},"receiver_email":{"type":"string","example":"john.doe@example.com","description":"Email address the alert notifications will be sent to."}},"required":["id","name","receiver_email"]},"LicensePlateAlertDto":{"type":"object","properties":{"id":{"type":"number","example":1,"description":"Unique identifier of the license plate alert."},"name":{"type":"string","example":"Blacklisted license plate","description":"Descriptive name given to this license plate alert."},"created_at":{"format":"date-time","type":"string","example":{},"description":"Timestamp when the license plate alert was created."},"updated_at":{"format":"date-time","type":"string","example":{},"description":"Timestamp when the license plate alert was last updated."},"plates":{"example":["DT-PLATE2","ST-1234-AB"],"description":"License plate numbers that trigger this alert.","type":"array","items":{"type":"string"}},"min_minutes_between_emails":{"type":"number","example":5,"description":"Minimum number of minutes to wait between sending consecutive alert emails for this license plate."},"zone":{"description":"Zone associated with this license plate alert.","allOf":[{"$ref":"#/components/schemas/LicensePlateAlertZoneDto"}]},"receivers":{"description":"List of account users who will receive email notifications when this license plate alert is triggered.","type":"array","items":{"$ref":"#/components/schemas/LicensePlateAlertReceiversDto"}}},"required":["id","name","created_at","updated_at","plates","min_minutes_between_emails","zone","receivers"]},"AssignLicensePlateAlertReciversDto":{"type":"object","properties":{"receiver_ids":{"example":[1,2,3],"description":"IDs of the account users to assign as receivers of this license plate alert.","type":"array","items":{"type":"string"}}},"required":["receiver_ids"]},"ReplaceLicensePlateAlertsDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"Identifier of the zone this license plate alert belongs to."},"receiver_ids":{"example":[1,2,3],"description":"IDs of the account users who should receive email notifications when this license plate alert is triggered.","type":"array","items":{"type":"string"}},"name":{"type":"string","example":"Alert name","description":"Descriptive name given to this license plate alert."},"plates":{"example":["DT-PLATE2","ST-1234-AB"],"description":"License plate numbers that trigger this alert.","type":"array","items":{"type":"string"}},"min_minutes_between_emails":{"type":"number","example":60,"description":"Minimum number of minutes to wait between sending consecutive alert emails for this license plate."}},"required":["zone_id","receiver_ids","name","plates","min_minutes_between_emails"]},"CreateLicensePlateAlertDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"Identifier of the zone this license plate alert belongs to."},"name":{"type":"string","example":"Blacklisted license plates","description":"Descriptive name given to this license plate alert."},"plates":{"example":["DT-PLATE2","DT-PLATE3"],"description":"License plate numbers that trigger this alert.","type":"array","items":{"type":"string"}},"min_minutes_between_emails":{"type":"number","example":5,"description":"Minimum number of minutes to wait between sending consecutive alert emails for this license plate alert.","default":5},"receiver_ids":{"example":[1,2],"description":"IDs of account users who should receive email notifications when this license plate alert is triggered.","type":"array","items":{"type":"number"}}},"required":["zone_id","plates"]},"UpdateLicensePlateAlertDto":{"type":"object","properties":{"name":{"type":"string","example":"Blacklisted license plate","description":"Descriptive name given to this license plate alert."},"min_minutes_between_emails":{"type":"number","example":5,"description":"Minimum number of minutes to wait between sending consecutive alert emails for this license plate."}}},"UnassignReceiversLicensePlateAlertDto":{"type":"object","properties":{"receiver_ids":{"description":"IDs of the account users to unassign as receivers from this license plate alert.","example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["receiver_ids"]},"KeyInvitationDto":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string","example":"John Doe"},"sender_id":{"type":"number"},"product_id":{"type":"number"},"receiver_identifier":{"type":"string","example":"john.doe@example.com"},"receiver_identifier_type":{"type":"string","example":"email"},"status":{"type":"string","enum":["pending","reactived","blocked","invalid","deleted","expired","activated"],"example":"activated"},"start_time":{"format":"date-time","type":"string","example":{}},"end_time":{"format":"date-time","type":"string","example":{}},"is_unlimited":{"type":"number"},"deleted_at":{"format":"date-time","type":"string","example":null},"activated_at":{"format":"date-time","type":"string","example":{}},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"},"product":{"type":"object"},"sender":{"type":"object","example":{"id":1,"email":"john.doe@example.com","name":"John Doe"}}},"required":["id","name","sender_id","product_id","receiver_identifier","receiver_identifier_type","status","start_time","end_time","is_unlimited","deleted_at","activated_at","created_at","updated_at","product","sender"]},"ReceiverEmailsDto":{"type":"object","properties":{"receiver_identifier":{"type":"string","example":"john.doe@example.com"}},"required":["receiver_identifier"]},"RequestResendKeysDto":{"type":"object","properties":{"ids":{"example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["ids"]},"BulkUpdateKeyInvitationDto":{"type":"object","properties":{"ids":{"example":[1,2,3],"type":"array","items":{"type":"string"}},"status":{"type":"string","example":"blocked","enum":["pending","reactived","blocked","invalid","deleted","expired","activated"]}},"required":["ids","status"]},"UpdateKeyInvitationDto":{"type":"object","properties":{"name":{"type":"string","example":"New operation token name","description":"The new name of the Operation Token"},"status":{"type":"string","example":"blocked","description":"The new status of the invite","enum":["pending","reactived","blocked","invalid","deleted","expired","activated"]}},"required":["name","status"]},"KeyLogDto":{"type":"object","properties":{"product":{"type":"object","example":{"master_key":{"id":1,"product_id":1,"owner_id":1,"key":"string","advertisement_signature_key":"string","is_revoked":1,"created_at":{},"updated_at":{}},"product_error":{"product":{"id":1,"device_id":"B123456","name":"B123456","power_type":"battery","lot_id":1,"zone_id":1,"product_type_id":1,"status":"online"},"id":1,"error_code":"string","jammed":1,"sensor_dirty":1,"pin_broken":1,"rtcc_invalid":1,"master_key_not_set":1,"deleted_at":null,"created_at":{},"updated_at":{}},"id":1,"device_id":"B123456","name":"B123456","power_type":"battery","lot_id":1,"zone_id":1,"product_type_id":1,"hardware_version":"1.0.0","firmware_version":"1.0.0.","latitude":1,"longitude":1,"status":"online","advertisement_data":"string","battery_status":1,"product_error_id":1,"rssi":-80,"created_at":{},"updated_at":{},"barrier":{"id":1,"product_id":1,"state":"opened","is_autoclose":1,"is_car_on_top":0,"autoclose_time":45,"created_at":{},"updated_at":{}},"gate":{"id":1,"product_id":2,"state":"opened","permanent_position":"disabled","deleted_at":null,"created_at":{},"updated_at":{}},"chain":{"id":1,"product_id":3,"state":"opened","permanent_position":"disabled","deleted_at":null,"created_at":{},"updated_at":{}},"bollard":{"id":1,"product_id":4,"state":"opened","permanent_position":"disabled","deleted_at":null,"created_at":{},"updated_at":{}},"brain":{"id":1,"product_id":5,"state":"opened","permanent_position":"disabled","deleted_at":null,"created_at":{},"updated_at":{}}}},"operation_token":{"type":"object","example":{"id":1,"product_id":1,"start_time":{},"end_time":{},"status":"string","used_count":1,"is_unlimited":1,"token_close":"any","token_open":"any","token_status":"any","deleted_at":null,"created_at":{},"updated_at":{}}},"sender":{"type":"object","example":{"id":1,"account_id":1,"account_user_role_id":1,"email":"john.doe@example.com","name":"John Doe","phone":"string","deleted_at":null,"created_at":{},"updated_at":{}}},"id":{"type":"number"},"name":{"type":"string","example":"John Doe"},"sender_id":{"type":"number"},"product_id":{"type":"number"},"operation_token_id":{"type":"number"},"receiver_identifier":{"type":"string","example":"john.doe@example.com"},"receiver_identifier_type":{"type":"string","example":"email"},"deleted_at":{"format":"date-time","type":"string","example":{"deleted_at":null}},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"}},"required":["product","operation_token","sender","id","name","sender_id","product_id","operation_token_id","receiver_identifier","receiver_identifier_type","deleted_at","created_at","updated_at"]},"UpdateKeyLogDto":{"type":"object","properties":{"name":{"type":"string","example":"Key Log Name","description":"Change the name of the key log"},"status":{"type":"string","example":"blocked","description":"Change the status of the sent key","enum":["active","reactived","blocked","invalid","deleted","depleted","expired"]}}},"ResendKeyDto":{"type":"object","properties":{"ids":{"example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["ids"]},"BulkUpdateKeyLogsDto":{"type":"object","properties":{"ids":{"example":[1,2,3],"type":"array","items":{"type":"string"}},"status":{"type":"string","example":"blocked","enum":["active","reactived","blocked","invalid","deleted","depleted","expired"]}},"required":["ids","status"]},"OperationKeyDto":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string","example":"John Doe"},"product_id":{"type":"number","example":1},"sender_id":{"type":"number","example":1},"operation_token_id":{"type":"number"},"deleted_at":{"format":"date-time","type":"string","example":null},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"},"receiver":{"type":"object","example":{"id":2,"email":"jane.doe1@example.com","name":"Jane Doe"}},"sender":{"type":"object","example":{"id":1,"email":"john.doe@example.com","name":"John Doe"}},"product":{"type":"object","example":{"device_id":"B123456","latitude":43.52652359,"longitude":16.450813293,"product_type_id":1,"lot_id":1,"zone_id":1,"id":1}},"operation_token":{"type":"object","example":{"id":1,"product_id":1,"start_time":{},"end_time":{},"status":"active","used_count":0,"is_unlimited":1,"token_close":{"token":"string","status_key":"string","challenge_key":"string"},"token_open":{"token":"string","status_key":"string","challenge_key":"string"},"token_status":{"token":"string","status_key":"string","challenge_key":"string"},"deleted_at":null,"created_at":{},"updated_at":{}}}},"required":["id","name","product_id","sender_id","operation_token_id","deleted_at","created_at","updated_at","receiver","sender","product","operation_token"]},"CreateOneOperationKeyDto":{"type":"object","properties":{"start_time":{"type":"string","example":{}},"end_time":{"type":"string","example":{}},"product_id":{"type":"number","example":1},"receiver_email":{"type":"string","example":"john.doe@example.com"},"is_unlimited":{"type":"number"}},"required":["start_time","product_id","receiver_email"]},"CreateOperationKeyDto":{"type":"object","properties":{"start_time":{"type":"string","example":{}},"end_time":{"type":"string","example":{}},"products":{"type":"array","items":{"type":"string"}},"receiver_emails":{"example":["john.doe1@example.com","john.doe2@example.com","john.doe3@example.com"],"type":"array","items":{"type":"string"}},"is_unlimited":{"type":"number"}},"required":["start_time","products","receiver_emails"]},"UpdateOperationKeyDto":{"type":"object","properties":{"name":{"type":"string","example":"New opertion key name","description":"The new name for the Operation Key"}},"required":["name"]},"OperationTokenDto":{"type":"object","properties":{"id":{"type":"number"},"product_id":{"type":"number"},"start_time":{"format":"date-time","type":"string","example":{}},"end_time":{"format":"date-time","type":"string","example":{}},"status":{"type":"string","example":"active","enum":["active","reactived","blocked","invalid","deleted","depleted","expired"]},"used_count":{"type":"number","example":0},"is_unlimited":{"type":"number"},"token_close":{"type":"object","example":{"challenge_key":"string","status_key":"string","token":"string"}},"token_open":{"type":"object","example":{"challenge_key":"string","status_key":"string","token":"string"}},"token_status":{"type":"object","example":{"challenge_key":"string","status_key":"string","token":"string"}},"deleted_at":{"format":"date-time","type":"string","example":null},"created_at":{"format":"date-time","type":"string","example":{}},"updated_at":{"format":"date-time","type":"string","example":{}},"product":{"type":"object","example":{"device_id":"B123456","id":1}}},"required":["id","product_id","start_time","end_time","status","used_count","is_unlimited","token_close","token_open","token_status","deleted_at","created_at","updated_at","product"]},"CreateOperationTokenDto":{"type":"object","properties":{"start_time":{"type":"string","example":{},"description":"The starting time for the operation token"},"end_time":{"type":"string","example":{},"description":"The end time for the operation token"},"product_id":{"type":"number","description":"The product id to controll with the operation token"},"is_unlimited":{"type":"number","description":"Should the operation key be unlimited"},"master_key_hash":{"type":"string","description":"The master key hash for the Legacy V1 Barrier"}},"required":["start_time","product_id"]},"UpdateOperationTokenDto":{"type":"object","properties":{"status":{"type":"string","example":"blocked","description":"Change the status of the operation token","enum":["active","reactived","blocked","invalid","deleted","depleted","expired"]}},"required":["status"]},"BindLicensesDto":{"type":"object","properties":{"license_ids":{"example":[1,2,3],"type":"array","items":{"type":"string"}},"product_ids":{"example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["license_ids","product_ids"]},"BindLicenseDto":{"type":"object","properties":{"license_ids":{"example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["license_ids"]},"LotWhitelistLicenseDto":{"type":"object","properties":{"id":{"type":"number"},"license_plate":{"type":"string","example":"DT-PLATE2"},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"}},"required":["id","license_plate","created_at","updated_at"]},"UnbindProductsDto":{"type":"object","properties":{"product_ids":{"example":[1,2,3],"type":"array","items":{"type":"number"}}},"required":["product_ids"]},"ProductErrorDto":{"type":"object","properties":{"product":{"type":"object","example":{"id":1,"device_id":"B123456","name":"B123456","power_type":"battery","lot_id":1,"zone_id":1,"product_type_id":2,"status":"online"}},"id":{"type":"number"},"error_code":{"type":"string"},"jammed":{"type":"number"},"sensor_dirty":{"type":"number"},"pin_broken":{"type":"number"},"rtcc_invalid":{"type":"number"},"battery_empty":{"type":"number"},"master_key_not_set":{"type":"number"},"deleted_at":{"format":"date-time","type":"string","example":null},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"}},"required":["product","id","error_code","jammed","sensor_dirty","pin_broken","rtcc_invalid","battery_empty","master_key_not_set","deleted_at","created_at","updated_at"]},"EventDto":{"type":"object","properties":{"event_id":{"type":"string","example":"8r1oG4"}},"required":["event_id"]},"ChangeProductStateDto":{"type":"object","properties":{"operation":{"type":"string","example":"open","default":"open","description":"The operation that we want to run on a product.","enum":["open","force_close","close","stay_open","stay_close","clear_stay_open","clear_stay_close"]},"wait_for_completion":{"type":"boolean","example":true,"default":true,"description":"Used to disable operation retry. In normal circumstances the API\n    is going to wait until a operation succedes in changing the state,for example\n    when sending a \"close\" command, the API will wait until the product is in a\n    closed state. If that times out it will retry multiple times. In situations\n    when using a brain, this can couse problems if the brain is not setup with\n    input sensors since there will be no open/close state to read."}},"required":["operation"]},"MasterKeyDto":{"type":"object","properties":{"id":{"type":"number","description":"Master key id"},"product_id":{"type":"number","description":"Product id"},"owner_id":{"type":"number","description":"Owning account id"},"key":{"type":"string","description":"The raw base64 master key value"},"advertisement_signature_key":{"type":"string","description":"The raw base64 advertisement key value"},"is_revoked":{"type":"number","description":"Has the key been revoked by a new key exchange"},"created_at":{"format":"date-time","type":"string","description":"Created at Date"},"updated_at":{"format":"date-time","type":"string","description":"Updated at Date"}},"required":["id","product_id","owner_id","key","advertisement_signature_key","is_revoked","created_at","updated_at"]},"ProductsProductErrorDto":{"type":"object","properties":{"id":{"type":"number","description":"Product error id"},"jammed":{"type":"number","description":"Shows if the barrier is jammed"},"sensor_dirty":{"type":"number","description":"The barrier sensor is dirty"},"pin_broken":{"type":"number","description":"The barrier pin is broken"},"rtcc_invalid":{"type":"number","description":"The realtime clock is not set on the device"},"battery_empty":{"type":"number","description":"The battery is criticaly low"},"master_key_not_set":{"type":"number","description":"The barrier has no key exchanged on it"},"deleted_at":{"format":"date-time","type":"string","example":null,"description":"Deleted at Dated"},"created_at":{"format":"date-time","type":"string","description":"Created at Date"},"updated_at":{"format":"date-time","type":"string","description":"Update at Date"},"error_code":{"type":"string","description":"The error code used for lookup"}},"required":["id","jammed","sensor_dirty","pin_broken","rtcc_invalid","battery_empty","master_key_not_set","deleted_at","created_at","updated_at","error_code"]},"BarrierDto":{"type":"object","properties":{"id":{"type":"number","description":"Barrier id"},"product_id":{"type":"number","description":"Product id"},"state":{"type":"string","example":"opened","description":"Barrier state","enum":["opened","closed"]},"is_autoclose":{"type":"number","description":"Is autoclose turned on"},"is_car_on_top":{"type":"number","description":"Is a car on top"},"autoclose_time":{"type":"number","description":"The autoclose time set by the user"},"created_at":{"format":"date-time","type":"string","description":"Created at Date"},"updated_at":{"format":"date-time","type":"string","description":"Updated at Date"}},"required":["id","product_id","state","is_autoclose","is_car_on_top","autoclose_time","created_at","updated_at"]},"BrainDto":{"type":"object","properties":{"id":{"type":"number","description":"Brain error id"},"product_id":{"type":"number","description":"Product id"},"state":{"type":"string","example":"closed","description":"Position state","enum":["opened","closed","error","unknown","reserved","disabled"]},"permanent_position":{"type":"string","example":"disabled","description":"The permanent position toggle","enum":["disabled","stay_open","stay_close"]},"deleted_at":{"format":"date-time","type":"string","example":null,"description":"Deleted at Dated"},"created_at":{"format":"date-time","type":"string","description":"Created at Date"},"updated_at":{"format":"date-time","type":"string","description":"Update at Date"}},"required":["id","product_id","state","permanent_position","deleted_at","created_at","updated_at"]},"ProductDto":{"type":"object","properties":{"master_key":{"description":"The master key exchanged with the product","allOf":[{"$ref":"#/components/schemas/MasterKeyDto"}]},"product_error":{"description":"Product error","oneOf":[{"type":"number"},{"type":"null"}],"allOf":[{"$ref":"#/components/schemas/ProductsProductErrorDto"}]},"id":{"type":"number","description":"Master key id"},"device_id":{"type":"string","example":"B123456","description":"The unique product identifier"},"name":{"type":"string","example":"B123456","description":"The user set product name"},"power_type":{"type":"string","example":"battery","description":"The power source type of the product","enum":["battery","grid"]},"lot_id":{"type":"number","description":"The lot id of to which the product is assigned"},"zone_id":{"type":"number","description":"The zone id of to which the product is assigned"},"product_type_id":{"type":"number","example":2,"description":"The product type id"},"hardware_version":{"example":"1.0.0","description":"The hardware versions of the product","oneOf":[{"type":"string"},{"type":"null"}]},"firmware_version":{"example":"1.0.0","description":"The firmware version of the product","oneOf":[{"type":"string"},{"type":"null"}]},"latitude":{"type":"number","example":43.52652359,"description":"The product latitude, acquired during setup"},"longitude":{"type":"number","example":16.450813293,"description":"The product longitude, acquired during setup"},"status":{"type":"string","example":"online","description":"The product state","enum":["online","offline"]},"advertisement_data":{"type":"string","description":"The product raw advertisement data"},"battery_status":{"description":"The product battery percentage","oneOf":[{"type":"number"},{"type":"null"}]},"product_error_id":{"description":"The product error id","oneOf":[{"type":"number"},{"type":"null"}]},"rssi":{"description":"The measured product RSSI signal to the optimal parklio gateway","oneOf":[{"type":"number"},{"type":"null"}]},"created_at":{"format":"date-time","type":"string","description":"Created at Date"},"updated_at":{"format":"date-time","type":"string","description":"Updated at Date"},"barrier":{"description":"The Barrier Data","allOf":[{"$ref":"#/components/schemas/BarrierDto"}]},"gate":{"description":"The Gate Data","allOf":[{"$ref":"#/components/schemas/BrainDto"}]},"chain":{"description":"The Chain Data","allOf":[{"$ref":"#/components/schemas/BrainDto"}]},"bollard":{"description":"The Bollard Data","allOf":[{"$ref":"#/components/schemas/BrainDto"}]},"brain":{"description":"The Brain Data","allOf":[{"$ref":"#/components/schemas/BrainDto"}]}},"required":["master_key","product_error","id","device_id","name","power_type","lot_id","zone_id","product_type_id","hardware_version","firmware_version","latitude","longitude","status","advertisement_data","battery_status","product_error_id","rssi","created_at","updated_at","barrier","gate","chain","bollard","brain"]},"ChangeProductSettingsDto":{"type":"object","properties":{"is_autoclose":{"type":"boolean","description":"Turns the barrier autoclose on or off."},"autoclose_time":{"type":"number","example":15,"description":"Changes the barrier autoclose time."}}},"UpdateProductDto":{"type":"object","properties":{"name":{"type":"string","example":"B123456","description":"The user set product name"},"longitude":{"type":"number","example":16.450813293,"description":"The product longitude, acquired during setup","default":18.3779451},"latitude":{"type":"number","example":43.52652359,"description":"The product latitude, acquired during setup","default":43.8483818},"zone_id":{"type":"number","description":"The the id of the target zone where we want to move the product"}}},"BrainSubtypeDto":{"type":"object","properties":{"product_id":{"type":"number","description":"Product id"},"product":{"description":"The product associated with the brain","allOf":[{"$ref":"#/components/schemas/SubtypeProductDto"}]},"master_key":{"description":"The master key exchanged with the product","allOf":[{"$ref":"#/components/schemas/SubtypeMasterKeyDto"}]},"id":{"type":"number","description":"Subtype id"},"state":{"type":"string","example":"closed","description":"Position state","enum":["opened","closed","error","unknown","reserved","disabled"]},"permanent_position":{"type":"string","example":"disabled","description":"Position state","enum":["disabled","stay_open","stay_close"]},"deleted_at":{"format":"date-time","type":"string","example":null,"description":"Deleted at Dated"},"created_at":{"format":"date-time","type":"string","description":"Created at Date"},"updated_at":{"format":"date-time","type":"string","description":"Update at Date"}},"required":["product_id","product","master_key","id","state","permanent_position","deleted_at","created_at","updated_at"]},"ProductAssignDto":{"type":"object","properties":{"device_id":{"type":"string","example":"B123456"},"name":{"type":"string","example":"B123456"},"master_key":{"type":"string"},"master_key_signature":{"type":"string"},"latitude":{"type":"number","example":43.52652359},"longitude":{"type":"number","example":16.450813293},"lot_id":{"type":"number"},"zone_id":{"type":"number"}},"required":["device_id","name","master_key","master_key_signature"]},"BarrierSubtypeDto":{"type":"object","properties":{"product_id":{"type":"number","description":"Product id"},"product":{"description":"The product associated with the brain","allOf":[{"$ref":"#/components/schemas/SubtypeProductDto"}]},"master_key":{"description":"The master key exchanged with the product","allOf":[{"$ref":"#/components/schemas/SubtypeMasterKeyDto"}]},"id":{"type":"number","description":"Subtype id"},"state":{"type":"string","example":"closed","description":"Position state","enum":["opened","closed"]},"is_car_on_top":{"type":"number","description":"Car on top state"},"is_autoclose":{"type":"number","description":"Is autoclose turned on"},"autoclose_time":{"type":"number","description":"Autoclose time, the value refreshes only if the value is changed via API"},"deleted_at":{"format":"date-time","type":"string","example":null,"description":"Deleted at Dated"},"created_at":{"format":"date-time","type":"string","description":"Created at Date"},"updated_at":{"format":"date-time","type":"string","description":"Update at Date"}},"required":["product_id","product","master_key","id","state","is_car_on_top","is_autoclose","autoclose_time","deleted_at","created_at","updated_at"]},"ProductLogDto":{"type":"object","properties":{"id":{"type":"number","example":1},"account_user_id":{"type":"number","example":1},"zone_id":{"type":"number","example":1},"account_user":{"type":"object","example":{"id":1,"email":"john.doe@example.com","name":"John Doe"}},"product_id":{"type":"number","example":1},"product":{"type":"object","example":{"id":1,"device_id":"B123456","name":"B123456","power_type":"battery","lot_id":1,"zone_id":1,"product_type_id":1,"status":"online"}},"operation_type":{"type":"string","example":"open","enum":["close","open","force_close","force_open","ignore_car","stay_open","stay_close","clear_stay_open","clear_stay_close"]},"type_of_access":{"type":"string","example":"app","enum":["gateway","weblink","app"]},"created_at":{"format":"date-time","type":"string","example":{}}},"required":["id","account_user_id","zone_id","account_user","product_id","product","operation_type","type_of_access","created_at"]},"WeblinkProductDto":{"type":"object","properties":{"id":{"type":"number","example":1,"description":"Unique identifier of the product"},"device_id":{"type":"string","example":"B123456","description":"Unique device identifier"},"name":{"type":"string","example":"Barrier 1","description":"Name of the product"},"lot_id":{"type":"number","example":3,"description":"ID of the lot this product belongs to","nullable":true},"zone_id":{"type":"number","example":2,"description":"ID of the zone this product belongs to","nullable":true},"power_type":{"type":"string","example":"battery","description":"Power source type of the product","enum":["battery","grid"]},"product_type_id":{"type":"number","example":1,"description":"ID referencing the type of product"},"hardware_version":{"type":"string","example":"1.0.0","description":"Hardware version of the device"},"firmware_version":{"type":"string","example":"2.3.1","description":"Firmware version currently installed on the device"},"latitude":{"type":"number","example":43.52652359,"description":"Latitude coordinate of the product location"},"longitude":{"type":"number","example":16.450813293,"description":"Longitude coordinate of the product location"},"status":{"type":"string","example":"online","description":"Current operational status of the product","enum":["online","offline"]},"advertisement_data":{"type":"string","description":"The product raw advertisement data"},"battery_status":{"type":"number","example":87,"description":"Battery charge level as a percentage (0-100)"},"product_error_id":{"type":"number","example":null,"description":"ID of the active product error, null if no error","nullable":true},"rssi":{"type":"number","example":-88,"description":"Received signal strength indicator in dBm"},"created_at":{"format":"date-time","type":"string","example":"2024-01-15T10:00:00.000Z","description":"Timestamp when the product was created"},"updated_at":{"format":"date-time","type":"string","example":"2024-06-01T08:30:00.000Z","description":"Timestamp when the product was last updated"}},"required":["id","device_id","name","lot_id","zone_id","power_type","product_type_id","hardware_version","firmware_version","latitude","longitude","status","advertisement_data","battery_status","product_error_id","rssi","created_at","updated_at"]},"WeblinkSenderDto":{"type":"object","properties":{"id":{"type":"number","example":1,"description":"Unique identifier of the account user"},"account_user_role_id":{"type":"number","example":2,"description":"ID of the role assigned to this account user"},"account_id":{"type":"number","example":5,"description":"ID of the account this user belongs to"},"email":{"type":"string","example":"john.doe@example.com","description":"Email address of the sender"},"name":{"type":"string","example":"John Doe","description":"Full name of the sender"},"phone":{"type":"string","example":"+385 555 5555","description":"Phone number of the sender"},"email_confirmed":{"type":"number","example":1,"description":"Whether the sender has confirmed their email (1 = confirmed, 0 = not confirmed)"},"created_at":{"format":"date-time","type":"string","example":"2024-01-15T10:00:00.000Z","description":"Timestamp when the account user was created"},"updated_at":{"format":"date-time","type":"string","example":"2024-06-01T08:30:00.000Z","description":"Timestamp when the account user was last updated"}},"required":["id","account_user_role_id","account_id","email","name","phone","email_confirmed","created_at","updated_at"]},"WeblinkOperationTokenDto":{"type":"object","properties":{"id":{"type":"number","example":1,"description":"Unique identifier of the operation token"},"product_id":{"type":"number","example":5,"description":"ID of the product this operation token is associated with"},"start_time":{"format":"date-time","type":"string","example":{},"description":"Date and time from which the token becomes valid"},"end_time":{"format":"date-time","type":"string","example":{},"description":"Date and time at which the token expires"},"status":{"type":"string","example":"active","description":"Current status of the operation token","enum":["active","reactived","blocked","invalid","deleted","depleted","expired"]},"used_count":{"type":"number","example":3,"description":"Number of times this token has been used"},"is_unlimited":{"type":"number","example":0,"description":"Whether the token has unlimited uses (1 = unlimited, 0 = limited)"},"created_at":{"format":"date-time","type":"string","example":"2024-01-15T10:00:00.000Z","description":"Timestamp when the token was created"},"updated_at":{"format":"date-time","type":"string","example":"2024-06-01T08:30:00.000Z","description":"Timestamp when the token was last updated"},"token_close":{"type":"string","example":"a1b2c3d4e5f6...","description":"Token string used to close/lock the product"},"token_open":{"type":"string","example":"f6e5d4c3b2a1...","description":"Token string used to open/unlock the product"},"token_status":{"type":"string","example":"active","description":"Token string used to update the product status"}},"required":["id","product_id","start_time","end_time","status","used_count","is_unlimited","created_at","updated_at","token_close","token_open","token_status"]},"WeblinkDto":{"type":"object","properties":{"id":{"type":"number","example":1,"description":"Unique identifier of the weblink"},"product_id":{"type":"number","example":5,"description":"ID of the product associated with this weblink"},"sender_id":{"type":"number","example":3,"description":"ID of the account user who sent this weblink"},"operation_token_id":{"type":"number","example":7,"description":"ID of the operation token linked to this weblink"},"receiver_identifier":{"type":"string","example":"jane.doe@example.com","description":"Email or identifier of the weblink recipient"},"receiver_identifier_type":{"type":"string","example":"email","description":"Type of the receiver identifier","enum":["email","phone","license_plate"]},"url":{"type":"string","description":"Full URL of the weblink sent to the receiver"},"max_uses":{"type":"number","example":5,"description":"Maximum number of times this weblink can be used, null means unlimited","nullable":true},"used_count":{"type":"number","example":3,"description":"Number of times this token has been used"},"created_at":{"format":"date-time","type":"string","example":"2024-01-15T10:00:00.000Z","description":"Timestamp when the weblink was created"},"updated_at":{"format":"date-time","type":"string","example":"2024-06-01T08:30:00.000Z","description":"Timestamp when the weblink was last updated"},"product":{"description":"Product associated with this weblink","allOf":[{"$ref":"#/components/schemas/WeblinkProductDto"}]},"sender":{"description":"Account user who created and sent this weblink","allOf":[{"$ref":"#/components/schemas/WeblinkSenderDto"}]},"operation_token":{"description":"Operation token that controls access permissions for this weblink","allOf":[{"$ref":"#/components/schemas/WeblinkOperationTokenDto"}]}},"required":["id","product_id","sender_id","operation_token_id","receiver_identifier","receiver_identifier_type","url","max_uses","used_count","created_at","updated_at","product","sender","operation_token"]},"BulkCreateWeblinkDto":{"type":"object","properties":{"products":{"example":[5,10,15],"description":"List of product IDs to create weblinks for","type":"array","items":{"type":"string"}},"receiver_email":{"type":"string","example":"john.doe@example.com","description":"Email address of the weblink recipient"},"start_time":{"type":"string","example":"2026-10-13T21:53:14.768Z","description":"ISO 8601 datetime from which the weblink becomes valid"},"end_time":{"type":"string","example":"2026-10-14T21:53:14.768Z","description":"ISO 8601 datetime at which the weblink expires"},"max_uses":{"type":"number","example":10,"default":1,"nullable":true,"description":"Maximum number of times the weblink can be used. Defaults to 1 if not provided. Set to null for unlimited uses."}},"required":["products","receiver_email","start_time","end_time"]},"WeblinkMetadataDto":{"type":"object","properties":{"id":{"type":"number"},"product_id":{"type":"number"},"sender_id":{"type":"number"},"operation_token_id":{"type":"number"},"receiver_identifier":{"type":"string","example":"jane.doe@example.com"},"receiver_identifier_type":{"type":"string","example":"email"},"deleted_at":{"format":"date-time","type":"string","example":null},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"},"product":{"$ref":"#/components/schemas/WeblinkProductDto"},"sender":{"$ref":"#/components/schemas/WeblinkSenderDto"}},"required":["id","product_id","sender_id","operation_token_id","receiver_identifier","receiver_identifier_type","deleted_at","created_at","updated_at","product","sender"]},"BulkUpdateWeblinksSuccessResponseDto":{"type":"object","properties":{"success":{"type":"boolean","example":true},"id":{"type":"number","example":1}},"required":["success","id"]},"ResendWeblinkDto":{"type":"object","properties":{"ids":{"example":"[1,2,3]","type":"array","items":{"type":"string"}}},"required":["ids"]},"OperateWeblinkDto":{"type":"object","properties":{"token":{"type":"string"},"operation":{"type":"string","example":"open","enum":["open","force_close","close","stay_open","stay_close","clear_stay_open","clear_stay_close"]}},"required":["token","operation"]},"BulkUpdateWeblinkDto":{"type":"object","properties":{"ids":{"example":"[1,2,3]","type":"array","items":{"type":"string"}},"status":{"type":"string","example":"blocked","enum":["active","reactived","blocked","invalid","deleted","depleted","expired"]}},"required":["ids","status"]},"UpdateWeblinkDto":{"type":"object","properties":{"status":{"type":"string","example":"blocked","enum":["active","reactived","blocked","invalid","deleted","depleted","expired"]}},"required":["status"]},"QrCodeDto":{"type":"object","properties":{"id":{"type":"number","example":1,"description":"Unique identifier of the QR code"},"account_id":{"type":"number","example":1,"description":"ID of the account this QR code belongs to"},"account_user_id":{"type":"number","example":1,"description":"ID of the account user who created this QR code"},"product_id":{"type":"number","example":1,"description":"ID of the product associated with this QR code"},"device_id":{"type":"string","example":"B123456","description":"Identifier of the device linked to this QR code"},"uuid":{"type":"string","example":"2b26e2e4-51c5-4d29-bb2b-12762245e9b3","description":"Universally unique identifier for the QR code"},"token":{"type":"string","example":"PGiTTPbwYSwQoJYETV7B5SYc710C2RjQwpGUMrKT0Qf4IS2RUFT7yskcfeyXyKmX","description":"Secure token used for QR code verification and access control"},"start_time":{"format":"date-time","type":"string","example":"2024-01-01T20:00:00.000Z","description":"Date and time from which the QR code becomes active"},"end_time":{"format":"date-time","type":"string","example":"2025-01-01T20:00:00.000Z","description":"Date and time at which the QR code expires"},"description":{"type":"string","example":"Guest parking access for Building A","description":"Optional description explaining the purpose of the QR code"},"created_at":{"format":"date-time","type":"string","example":"2024-01-01T20:00:00.000Z","description":"Timestamp when the QR code was created"},"updated_at":{"format":"date-time","type":"string","example":"2024-01-01T20:00:00.000Z","description":"Timestamp when the QR code was last updated"},"deleted_at":{"format":"date-time","type":"string","example":null}},"required":["id","account_id","account_user_id","product_id","device_id","uuid","token","start_time","end_time","description","created_at","updated_at","deleted_at"]},"CreateQrCodeDto":{"type":"object","properties":{"product_id":{"type":"number","example":1,"description":"ID of the product to associate with this QR code"},"start_time":{"type":"string","example":{},"description":"The date and time from which the QR code becomes active, in ISO 8601 format"},"end_time":{"type":"string","example":{},"description":"The date and time at which the QR code expires, in ISO 8601 format. If omitted, the QR code does not expire"},"timezone":{"type":"string","example":"+01:00","description":"Timezone offset used to interpret the start and end times, in ±HH:MM format"},"description":{"type":"string","example":"Guest parking access for Building A","description":"Optional description explaining the purpose of the QR code. Max 255 characters"}},"required":["product_id","start_time","timezone"]},"BulkDeleteQrCodeDto":{"type":"object","properties":{"ids":{"example":[1,2,3],"description":"List of QR code IDs to delete. Must contain between 1 and 30 IDs.","type":"array","items":{"type":"string"}}},"required":["ids"]},"FlowHeartbeatDto":{"type":"object","properties":{"block_name":{"type":"string","example":""}},"required":["block_name"]},"ValueDto":{"type":"object","properties":{"value":{"type":"number"}}},"FlowOccupancyChangeDto":{"type":"object","properties":{"id":{"type":"number","example":1},"name":{"type":"string","example":""},"cube_id":{"type":"number","example":1},"data":{"example":{"value":1},"allOf":[{"$ref":"#/components/schemas/ValueDto"}]}},"required":["id","name","cube_id","data"]},"ImageDataDto":{"type":"object","properties":{}},"FlowCameraFrameDto":{"type":"object","properties":{"id":{"type":"number","example":1},"name":{"type":"string","example":"Exit Camera 1"},"cube_id":{"type":"number","example":1},"data":{"example":{"image_data":""},"allOf":[{"$ref":"#/components/schemas/ImageDataDto"}]}},"required":["id","name","cube_id","data"]},"DataDto":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/EventDto"}},"header":{"example":["ID","License plate","Category","Color","Trajectory start","Trajectory end","Duration of occurrence"],"type":"array","items":{"type":"string"}}},"required":["events","header"]},"FlowViolationZoneEventDto":{"type":"object","properties":{"name":{"type":"string","example":"b21350f1-9e2b-48f2-98a7-5966282fe96c"},"data":{"$ref":"#/components/schemas/DataDto"}},"required":["name","data"]},"ParkingDetectionCameraDto":{"type":"object","properties":{"id":{"type":"number","example":1},"name":{"type":"string","example":"Parking Detection Camera 1"},"uuid":{"type":"string","example":"d3a17704-98e4-4c8b-bb2e-5c2ec4e1c1f4"},"external_id":{"type":"string","example":"0101010101010101"},"parking_detection_gateway_id":{"type":"number","example":1},"zone_id":{"type":"number","example":1},"deleted_at":{"type":"string","example":null},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"},"view_schema":{"type":"string"}},"required":["id","name","uuid","external_id","parking_detection_gateway_id","zone_id","deleted_at","created_at","updated_at","view_schema"]},"CreateParkingDetectionCameraDto":{"type":"object","properties":{"name":{"type":"string","example":"Parking Detection Camera 1"},"parking_detection_gateway_id":{"type":"number","example":1},"zone_id":{"type":"number","example":1},"external_id":{"type":"string"},"uuid":{"type":"string"}},"required":["name","parking_detection_gateway_id","zone_id"]},"UpdateParkingDetectionCameraDto":{"type":"object","properties":{"name":{"type":"string","example":"Parking Detection Camera 1"},"external_id":{"type":"string","example":"0101010101010101"},"uuid":{"type":"string","example":"d3a17704-98e4-4c8b-bb2e-5c2ec4e1c1f4"}}},"ParkingDetectionGatewayDto":{"type":"object","properties":{"id":{"type":"number","description":"Parking detection gateway id"},"name":{"type":"string","example":"Parking Detction Gateway 1","description":"Parking detection gateway name"},"uuid":{"type":"string","description":"Parking detection gateway uuid"},"lot_id":{"type":"number","description":"Lot id"},"status":{"type":"string","example":"online","description":"Parking detection gateway status","enum":["online","offline"]},"external_id":{"type":"string","description":"Parking detection gateway external id"},"created_at":{"format":"date-time","type":"string","description":"Created at Date"},"updated_at":{"format":"date-time","type":"string","description":"Updated at Date"},"deleted_at":{"format":"date-time","type":"string","example":null}},"required":["id","name","uuid","lot_id","status","external_id","created_at","updated_at","deleted_at"]},"CreateParkingDetectionGatewayDto":{"type":"object","properties":{"name":{"type":"string","example":"Parking Detection Gateway 1"},"lot_id":{"type":"number","example":1},"external_id":{"type":"string","example":"0101010101010101"},"uuid":{"type":"string","example":"d3a17704-98e4-4c8b-bb2e-5c2ec4e1c1f4"}},"required":["name","lot_id"]},"ParkingDetectionGatewayTokenDto":{"type":"object","properties":{"success":{"type":"boolean","description":"Indicates whether the request was successful or not"},"type":{"type":"string","description":"Type of the token"},"token":{"type":"string","description":"Bearer token"}},"required":["success","type","token"]},"UpdateParkingDetectionGatewayDto":{"type":"object","properties":{"name":{"type":"string","example":"Parking Detction Gateway 1"},"external_id":{"type":"string","example":"0101010101010101"},"uuid":{"type":"string","example":"d3a17704-98e4-4c8b-bb2e-5c2ec4e1c1f4"}}},"ParkingPlaceDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1},"name":{"type":"string","example":"Parking place"},"occupancy_status":{"type":"string","example":1},"deleted_at":{"format":"date-time","type":"string","example":null},"created_at":{"format":"date-time","type":"string","example":{}},"updated_at":{"format":"date-time","type":"string","example":{}},"external_id":{"type":"string","example":1},"zone_id":{"type":"number","example":1},"uuid":{"type":"string","example":"10ba038e-48da-487b-96e8-8d3b99b6d18a"},"id":{"type":"number","example":1}},"required":["lot_id","name","occupancy_status","deleted_at","created_at","updated_at","external_id","zone_id","uuid","id"]},"CreateParkingPlaceDto":{"type":"object","properties":{"name":{"type":"string","example":"Parking place"},"external_id":{"type":"string","example":1},"place_count":{"type":"number","example":5},"zone_id":{"type":"number","example":1}},"required":["name","zone_id"]},"UpdateParkingPlaceDto":{"type":"object","properties":{"name":{"type":"string","example":"Parking place"}}},"VioaltionZoneDto":{"type":"object","properties":{"id":{"type":"number","example":1},"parking_detection_camera_id":{"type":"number","example":1},"name":{"type":"string","example":"Violation Zone"},"deleted_at":{"format":"date-time","type":"string","example":null},"created_at":{"format":"date-time","type":"string","example":{}},"updated_at":{"format":"date-time","type":"string","example":{}},"uuid":{"type":"string","example":"d3a17704-98e4-4c8b-bb2e-5c2ec4e1c1f4"}},"required":["id","parking_detection_camera_id","name","deleted_at","created_at","updated_at","uuid"]},"ViolationZoneEventDto":{"type":"object","properties":{"id":{"type":"number","example":1},"license_plate":{"type":"string","example":"DT-PLATE2"},"color":{"type":"string","example":"red"},"model":{"type":"string","example":1},"stationary_time":{"type":"number","example":60},"image_url":{"type":"string","example":"string"},"deleted_at":{"format":"date-time","type":"string","example":null},"created_at":{"format":"date-time","type":"string","example":{}},"updated_at":{"format":"date-time","type":"string","example":{}},"violation_zone":{"example":{"id":1,"lot_id":1,"name":"Violation Zone","uuid":"d3a17704-98e4-4c8b-bb2e-5c2ec4e1c1f4","created_at":{},"updated_at":{},"deleted_at":null},"allOf":[{"$ref":"#/components/schemas/VioaltionZoneDto"}]}},"required":["id","license_plate","color","model","stationary_time","image_url","deleted_at","created_at","updated_at","violation_zone"]},"CreateViolationZoneDto":{"type":"object","properties":{"name":{"type":"string","example":"Violation zone"},"parking_detection_camera_id":{"type":"number","example":1}},"required":["name","parking_detection_camera_id"]},"ViolationZoneDto":{"type":"object","properties":{"parking_detection_camera_id":{"type":"number","example":1},"name":{"type":"string","example":"Violation Zone"},"deleted_at":{"format":"date-time","type":"string","example":null},"created_at":{"format":"date-time","type":"string","example":{}},"updated_at":{"format":"date-time","type":"string","example":{}},"uuid":{"type":"string","example":"d3a17704-98e4-4c8b-bb2e-5c2ec4e1c1f4"},"id":{"type":"number","example":1}},"required":["parking_detection_camera_id","name","deleted_at","created_at","updated_at","uuid","id"]},"UpdateViolationZoneDto":{"type":"object","properties":{"name":{"type":"string","example":"Violation zone"}}},"RemoteControlLogDto":{"type":"object","properties":{"id":{"type":"number"},"product_id":{"type":"number"},"account_user_id":{"type":"number"},"operation":{"type":"string","example":"open","enum":["open","force_close","close","stay_open","stay_close","clear_stay_open","clear_stay_close"]},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"},"product":{"$ref":"#/components/schemas/ProductDto"}},"required":["id","product_id","account_user_id","operation","created_at","updated_at","product"]},"RotaryParkingPlaceDto":{"type":"object","properties":{"id":{"type":"number"},"rotary_id":{"type":"number"},"is_occupied":{"type":"boolean"},"name":{"type":"string","example":"Parking Place 1"},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"}},"required":["id","rotary_id","is_occupied","name","created_at","updated_at"]},"CreateRotaryParkingPlaceDto":{"type":"object","properties":{"name":{"type":"string","example":"Parking Place 1"},"rotary_id":{"type":"number"}},"required":["name","rotary_id"]},"UpdateRotaryParkingPlaceDto":{"type":"object","properties":{"name":{"type":"string","example":"Rotary Parking Place 1"},"rotary_id":{"type":"number"},"is_occupied":{"type":"boolean"}}},"BulkUpdateRotaryParkingPlaceDto":{"type":"object","properties":{"status":{"type":"string","example":"online","enum":["online","offline"]},"ids":{"default":[1,2],"type":"array","items":{"type":"string"}},"is_occupied":{"type":"boolean"}},"required":["ids","is_occupied"]},"RotaryDto":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string","example":"Default Rotary"},"account_id":{"type":"number"},"lot_id":{"type":"number"},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"}},"required":["id","name","account_id","lot_id","created_at","updated_at"]},"CreateRotaryDto":{"type":"object","properties":{"name":{"type":"string","example":"Default Rotary"},"lot_id":{"type":"number"}},"required":["name"]},"UpdateRotaryDto":{"type":"object","properties":{"name":{"type":"string","example":"Default Rotary"},"lot_id":{"type":"number"}}},"UpdateDto":{"type":"object","properties":{"id":{"type":"number"},"uploader_id":{"type":"number"},"type":{"type":"string","example":"barrier","enum":["gateway","barrier"]},"hardware_version":{"type":"number"},"code":{"type":"number"},"version":{"type":"string","example":"V1.0.0."},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"}},"required":["id","uploader_id","type","hardware_version","code","version","created_at","updated_at"]},"CreateUpdateDto":{"type":"object","properties":{"file":{"type":"string","format":"binary"},"type":{"type":"string","example":"gateway","enum":["gateway","barrier"]},"code":{"type":"number","example":1},"hardware":{"type":"number","example":1},"version":{"type":"string","example":"V1.0.0."}},"required":["file","type","code","hardware","version"]},"ScheduleZoneAction":{"type":"object","properties":{"id":{"type":"number"},"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"},"deleted_at":{"format":"date-time","type":"string","example":null},"zone_id":{"type":"number","example":1},"action":{"type":"string","example":"open"},"time":{"format":"date-time","type":"string","example":{}},"days":{"example":[0,1,2,3,4],"type":"array","items":{"type":"string"}}},"required":["id","created_at","updated_at","deleted_at","zone_id","action","time","days"]},"CreateScheduleZoneActionDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1},"action":{"type":"string","example":"open","enum":["open","close"]},"time":{"type":"string","example":{}},"days":{"example":[0,1,2,3,4],"description":"An array representing days of the week, where 0 = Sunday and 1 = Monday 2 = Tuesday, 3 = Wednesday 4 = Thursday 5 = Friday 6 = Saturday. Each value must be an integer between 0 and 6.","type":"array","items":{"type":"string"}}},"required":["zone_id","action","time","days"]},"UpdateScheduleZoneActionDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1},"action":{"type":"string","example":"open","enum":["open","close"]},"time":{"type":"string","example":{}},"days":{"example":[0,1,2,3,4],"description":"An array representing days of the week, where 0 = Sunday and 1 = Monday 2 = Tuesday, 3 = Wednesday 4 = Thursday 5 = Friday 6 = Saturday. Each value must be an integer between 0 and 6.","type":"array","items":{"type":"string"}}}},"RequestInvoiceDto":{"type":"object","properties":{"email":{"type":"string","example":"john.doe@mail.com"},"session_id":{"type":"string","example":""},"recaptcha":{"type":"string","example":""}},"required":["email","session_id","recaptcha"]},"RequestLicensePLateInvoiceDto":{"type":"object","properties":{"license_plate":{"type":"string","example":""},"park_date":{"format":"date-time","type":"string","example":""},"recaptcha":{"type":"string","example":""}},"required":["license_plate","park_date","recaptcha"]},"DeviceInfoDto":{"type":"object","properties":{}},"ObjectDto":{"type":"object","properties":{}},"LoraOccupancyChangeDto":{"type":"object","properties":{"device_info":{"$ref":"#/components/schemas/DeviceInfoDto"},"object":{"$ref":"#/components/schemas/ObjectDto"}},"required":["device_info","object"]},"DeviceProductErrors":{"type":"object","properties":{"jammed":{"type":"boolean"},"sensor_dirty":{"type":"boolean"},"pin_broken":{"type":"boolean"},"rtcc_invalid":{"type":"boolean"},"battery_empty":{"type":"boolean"},"master_key_not_set":{"type":"boolean"}},"required":["jammed","sensor_dirty","pin_broken","rtcc_invalid","battery_empty","master_key_not_set"]},"DeviceDto":{"type":"object","properties":{"id":{"type":"number","description":"Unique identifier"},"name":{"type":"string","description":"Device name"},"device_id":{"type":"string","description":"Device unique device ID"},"status":{"type":"string","description":"Current device status"},"type":{"type":"string","description":"Type of device","enum":["barrier","gate","chain","bollard","gateway","terminal","lpr_camera"]},"rssi":{"type":"number","description":"Received Signal Strength Indicator","nullable":true},"mac":{"type":"string","description":"MAC address","nullable":true},"ip_address":{"type":"string","description":"IP address","nullable":true},"firmware_version":{"type":"string","description":"Firmware version","nullable":true},"battery_status":{"type":"number","description":"Battery status","nullable":true},"is_car_on_top":{"type":"boolean","description":"Indicates if car is on top of barrier","nullable":true},"is_autoclose":{"type":"boolean","description":"Is the autoclose feature turned on","nullable":true},"state":{"type":"string","description":"Current state","enum":["opened","closed"],"nullable":true},"permanent_position":{"type":"string","description":"Permanent position setting","enum":["disabled","stay_open","stay_close"],"nullable":true},"power_type":{"type":"string","description":"The type of power connected to the device","enum":["battery","grid"],"nullable":false},"battery_percentage":{"type":"number","description":"Battery charge percentage.","example":76},"product_error":{"description":"Object that contains the errors on the device","allOf":[{"$ref":"#/components/schemas/DeviceProductErrors"}]},"terminal_type":{"type":"string","description":"The type of the terminal.","enum":["entry","exit","pof","lp_pof","lp_exit"],"nullable":true},"zone_id":{"type":"number","description":"Zone identifier","nullable":true},"lot_id":{"type":"number","description":"Lot identifier","nullable":true},"created_at":{"format":"date-time","type":"string","description":"Creation timestamp"},"updated_at":{"format":"date-time","type":"string","description":"Updated at Date"}},"required":["id","name","device_id","status","type","rssi","mac","ip_address","firmware_version","battery_status","is_car_on_top","is_autoclose","state","permanent_position","power_type","product_error","terminal_type","zone_id","lot_id","created_at","updated_at"]},"LotScopeNoIntervalAverageDurationResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"average_duration":{"type":"number","example":28.28,"description":"The cumulative average duration across all time"}},"required":["lot_id","name","average_duration"]},"LotScopeHourIntervalAverageDurationResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"average_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of average duration for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","average_duration"]},"LotScopeDayIntervalAverageDurationResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"average_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of average duration for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","average_duration"]},"LotScopeMonthIntervalAverageDurationResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"average_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of average duration for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","average_duration"]},"ZoneScopeNoIntervalAverageDurationResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"average_duration":{"type":"number","example":28.28,"description":"The cumulative average duration across all time"}},"required":["zone_id","name","average_duration"]},"ZoneScopeHourIntervalAverageDurationResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"average_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of average duration for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","average_duration"]},"ZoneScopeDayIntervalAverageDurationResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"average_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of average duration for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","average_duration"]},"ZoneScopeMonthIntervalAverageDurationResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"average_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of average duration for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","average_duration"]},"PlaceScopeNoIntervalAverageDurationResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"average_duration":{"type":"number","example":28.28,"description":"The cumulative average duration across all time"}},"required":["parking_place_id","name","average_duration"]},"PlaceScopeHourIntervalAverageDurationResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"average_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of average duration for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["parking_place_id","name","average_duration"]},"PlaceScopeDayIntervalAverageDurationResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"average_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of average duration for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["parking_place_id","name","average_duration"]},"PlaceScopeMonthIntervalAverageDurationResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"average_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of average duration for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["parking_place_id","name","average_duration"]},"LotScopeNoIntervalAverageDurationPercentageResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"average_duration_percentage":{"type":"number","example":28.28,"description":"The cumulative average duration percentage across all time"}},"required":["lot_id","name","average_duration_percentage"]},"LotScopeHourIntervalAverageDurationPercentageResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"average_duration_percentage":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of average duration percentage for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","average_duration_percentage"]},"LotScopeDayIntervalAverageDurationPercentageResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"average_duration_percentage":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of average duration percentage for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","average_duration_percentage"]},"LotScopeMonthIntervalAverageDurationPercentageResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"average_duration_percentage":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of average duration percentage for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","average_duration_percentage"]},"ZoneScopeNoIntervalAverageDurationPercentageResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"average_duration_percentage":{"type":"number","example":28.28,"description":"The cumulative average duration percentage across all time"}},"required":["zone_id","name","average_duration_percentage"]},"ZoneScopeHourIntervalAverageDurationPercentageResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"average_duration_percentage":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of average duration percentage for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","average_duration_percentage"]},"ZoneScopeDayIntervalAverageDurationPercentageResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"average_duration_percentage":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of average duration percentage for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","average_duration_percentage"]},"ZoneScopeMonthIntervalAverageDurationPercentageResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"average_duration_percentage":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of average duration percentage for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","average_duration_percentage"]},"PlaceScopeNoIntervalAverageDurationPercentageResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"average_duration_percentage":{"type":"number","example":28.28,"description":"The cumulative average duration percentage across all time"}},"required":["parking_place_id","name","average_duration_percentage"]},"PlaceScopeHourIntervalAverageDurationPercentageResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"average_duration_percentage":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of average duration percentage for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["parking_place_id","name","average_duration_percentage"]},"PlaceScopeDayIntervalAverageDurationPercentageResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"average_duration_percentage":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of average duration percentage for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["parking_place_id","name","average_duration_percentage"]},"PlaceScopeMonthIntervalAverageDurationPercentageResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"average_duration_percentage":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of average duration percentage for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["parking_place_id","name","average_duration_percentage"]},"LotScopeNoIntervalTotalDurationResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"total_duration":{"type":"number","example":28.28,"description":"The cumulative total duration across all time"}},"required":["lot_id","name","total_duration"]},"LotScopeHourIntervalTotalDurationResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"total_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of total duration for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","total_duration"]},"LotScopeDayIntervalTotalDurationResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"total_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of total duration for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","total_duration"]},"LotScopeMonthIntervalTotalDurationResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"total_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of total duration for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","total_duration"]},"ZoneScopeNoIntervalTotalDurationResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"total_duration":{"type":"number","example":28.28,"description":"The cumulative total duration across all time"}},"required":["zone_id","name","total_duration"]},"ZoneScopeHourIntervalTotalDurationResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"total_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of total duration for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","total_duration"]},"ZoneScopeDayIntervalTotalDurationResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"total_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of total duration for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","total_duration"]},"ZoneScopeMonthIntervalTotalDurationResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"total_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of total duration for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","total_duration"]},"PlaceScopeNoIntervalTotalDurationResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"total_duration":{"type":"number","example":28.28,"description":"The cumulative total duration across all time"}},"required":["parking_place_id","name","total_duration"]},"PlaceScopeHourIntervalTotalDurationResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"total_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of total duration for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["parking_place_id","name","total_duration"]},"PlaceScopeDayIntervalTotalDurationResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"total_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of total duration for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["parking_place_id","name","total_duration"]},"PlaceScopeMonthIntervalTotalDurationResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"total_duration":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of total duration for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["parking_place_id","name","total_duration"]},"LotScopeNoIntervalTurnoverRateResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"turnover_rate":{"type":"number","example":28.28,"description":"The cumulative turnover rate across all time"}},"required":["lot_id","name","turnover_rate"]},"LotScopeHourIntervalTurnoverRateResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"turnover_rate":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of turnover rate for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","turnover_rate"]},"LotScopeDayIntervalTurnoverRateResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"turnover_rate":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of turnover rate for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","turnover_rate"]},"LotScopeMonthIntervalTurnoverRateResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"turnover_rate":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of turnover rate for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["lot_id","name","turnover_rate"]},"ZoneScopeNoIntervalTurnoverRateResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"turnover_rate":{"type":"number","example":28.28,"description":"The cumulative turnover rate across all time"}},"required":["zone_id","name","turnover_rate"]},"ZoneScopeHourIntervalTurnoverRateResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"turnover_rate":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of turnover rate for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","turnover_rate"]},"ZoneScopeDayIntervalTurnoverRateResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"turnover_rate":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of turnover rate for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","turnover_rate"]},"ZoneScopeMonthIntervalTurnoverRateResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"turnover_rate":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of turnover rate for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["zone_id","name","turnover_rate"]},"PlaceScopeNoIntervalTurnoverRateResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"turnover_rate":{"type":"number","example":28.28,"description":"The cumulative turnover rate across all time"}},"required":["parking_place_id","name","turnover_rate"]},"PlaceScopeHourIntervalTurnoverRateResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"turnover_rate":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9,31.2,29.4,27.8,26.5,24.3,22.1,20.9,18.7,17.5,16.3,15.1,14.2],"description":"List of turnover rate for each hour of the day (0 = midnight, 23 = 11PM), contains 24 values","type":"array","items":{"type":"number"}}},"required":["parking_place_id","name","turnover_rate"]},"PlaceScopeDayIntervalTurnoverRateResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"turnover_rate":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81],"description":"List of turnover rate for each day of the week (0 = Sunday, 6 = Saturday), contains 7 values","type":"array","items":{"type":"number"}}},"required":["parking_place_id","name","turnover_rate"]},"PlaceScopeMonthIntervalTurnoverRateResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"turnover_rate":{"example":[28.28,33.29,26.67,31.33,34.9,27.73,24.81,19.12,22.45,30.11,25.67,28.9],"description":"List of turnover rate for each month of the year (0 = January, 11 = December), contains 12 values","type":"array","items":{"type":"number"}}},"required":["parking_place_id","name","turnover_rate"]},"LotScopePeakOccupancyHourResponseDto":{"type":"object","properties":{"lot_id":{"type":"number","example":1,"description":"The unique identifier of the lot"},"name":{"type":"string","example":"Default Lot","description":"The name of the lot"},"peak_occupancy_hour":{"type":"number","example":14,"description":"The hour of the day (0-23) with the highest occupancy"}},"required":["lot_id","name","peak_occupancy_hour"]},"ZoneScopePeakOccupancyHourResponseDto":{"type":"object","properties":{"zone_id":{"type":"number","example":1,"description":"The unique identifier of the zone"},"name":{"type":"string","example":"Zone A","description":"The name of the zone"},"peak_occupancy_hour":{"type":"number","example":14,"description":"The hour of the day (0-23) with the highest occupancy"}},"required":["zone_id","name","peak_occupancy_hour"]},"PlaceScopePeakOccupancyHourResponseDto":{"type":"object","properties":{"parking_place_id":{"type":"number","example":1,"description":"The unique identifier of the parking place"},"name":{"type":"string","example":"Place A1","description":"The name of the parking place"},"peak_occupancy_hour":{"type":"number","example":14,"description":"The hour of the day (0-23) with the highest occupancy"}},"required":["parking_place_id","name","peak_occupancy_hour"]},"NoScopePeakOccupancyHourResponseDto":{"type":"object","properties":{"peak_occupancy_hour":{"type":"number","example":14,"description":"The hour of the day (0-23) with the highest occupancy","nullable":true}},"required":["peak_occupancy_hour"]},"ShareableZones":{"type":"object","properties":{}},"ShareableDto":{"type":"object","properties":{"id":{"type":"number","example":1},"max_uses":{"type":"number","example":5,"description":"Maximum number of times this weblink can be used, null means unlimited","nullable":true},"used_count":{"type":"number","example":3,"description":"Number of times this token has been used"},"type":{"type":"string","example":"weblink","enum":["key_invite","key_log","lot_whitelist","qr_code","weblink"]},"status":{"type":"string","example":"active","enum":["active","expired","invalid","blocked","depleted","pending"]},"start_time":{"format":"date-time","type":"string","example":{}},"end_time":{"format":"date-time","type":"string","example":{}},"receiver_email":{"type":"string","example":"jane.doe@example.com"},"sender_email":{"type":"string","example":"john.doe@example.com"},"zone":{"example":{"id":1,"name":"Defualt Zone"},"allOf":[{"$ref":"#/components/schemas/ShareableZones"}]},"license_plate":{"type":"string","example":"DT-PLATe2"},"device_id":{"type":"string","example":"B123456"},"url":{"type":"string","example":"https://pms.parklio.com/weblinks/1/operation?token=abc123","nullable":true,"description":"URL of the weblink. Null for other shareable types."},"created_at":{"format":"date-time","type":"string","example":{}},"updated_at":{"format":"date-time","type":"string","example":{}}},"required":["id","max_uses","used_count","type","status","start_time","end_time","receiver_email","sender_email","zone","license_plate","device_id","url","created_at","updated_at"]},"LotShareViewLotDto":{"type":"object","properties":{"id":{"type":"number","description":"The unique identifier of the lot","example":1},"name":{"type":"string","description":"The name of the lot","example":"Default Lot"},"spot_count":{"type":"number","description":"The total number of parking spots in the lot","example":10},"occupied_count":{"type":"number","description":"The number of currently occupied parking spots in the lot","example":0}},"required":["id","name","spot_count","occupied_count"]},"LotShareViewZoneDto":{"type":"object","properties":{"id":{"type":"number","description":"The unique identifier of the zone","example":1},"name":{"type":"string","description":"The name of the zone","example":"Zone A"},"spot_count":{"type":"number","description":"The total number of parking spots in the zone","example":10},"occupied_count":{"type":"number","description":"The number of currently occupied parking spots in the zone","example":0}},"required":["id","name","spot_count","occupied_count"]},"LotShareViewDto":{"type":"object","properties":{"id":{"type":"number","description":"The unique identifier of the lot share view","example":1},"revoked":{"type":"boolean","description":"Whether the lot share view has been revoked and can no longer be accessed","example":false},"url":{"type":"string","description":"The public URL used to access the lot share view without authentication"},"lot_share_view_type":{"type":"string","description":"The type of view rendered when the share link is opened","enum":["counts_only","live_camera","vector_map"],"example":"counts_only"},"lot":{"description":"The lot this share view belongs to","allOf":[{"$ref":"#/components/schemas/LotShareViewLotDto"}]},"zones":{"description":"The zones included in this share view","type":"array","items":{"$ref":"#/components/schemas/LotShareViewZoneDto"}},"created_at":{"format":"date-time","type":"string","description":"The date and time the lot share view was created","example":{}},"updated_at":{"format":"date-time","type":"string","description":"The date and time the lot share view was last updated","example":{}}},"required":["id","revoked","url","lot_share_view_type","lot","zones","created_at","updated_at"]},"AssignZonesToLotShareViewDto":{"type":"object","properties":{"ids":{"description":"The IDs of the zones to assign to this lot share view.","example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["ids"]},"CreateLotShareViewDto":{"type":"object","properties":{"lot_id":{"type":"number","description":"The ID of the lot this lot share view belongs to.","example":1},"zone_ids":{"description":"The IDs of the zones to include in this lot share view. At least one zone must be provided.","example":[1,2],"type":"array","items":{"type":"string"}},"lot_share_view_type":{"type":"string","description":"The type of view rendered when the share link is opened. Determines what information is displayed to the public.","example":"counts_only","enum":["counts_only","live_camera","vector_map"]}},"required":["lot_id","lot_share_view_type"]},"UpdateLotShareViewDto":{"type":"object","properties":{"revoked":{"type":"boolean","description":"Set to true to revoke the lot share view, immediately blocking further access. Set to false to restore access to a previously revoked lot share view.","example":true}}},"ReplaceZonesForLotShareViewDto":{"type":"object","properties":{"ids":{"description":"The IDs of the zones to assign to this lot share view, replacing any previously assigned zones.","example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["ids"]},"UnassignZonesToLotShareViewDto":{"type":"object","properties":{"ids":{"description":"The IDs of the zones to unassign from this lot share view.","example":[1,2,3],"type":"array","items":{"type":"string"}}},"required":["ids"]},"RgbDisplayRuleDto":{"type":"object","properties":{"id":{"type":"number","example":1,"description":"The unique identifier of the RGB display rule."},"name":{"type":"string","example":"Low availability","description":"The name of the rule used to identify it in the list."},"operator":{"type":"string","enum":["eq","lt","gt","between"],"example":"gt","description":"The comparison operator used to evaluate the rule. Supported values: `eq` (equal), `lt` (less than), `gt` (greater than), `between` (inclusive range)."},"occupied_value":{"type":"number","example":5,"description":"The value to compare the occupied spot count against. When operator is `between`, this represents the lower bound of the range."},"occupied_value_to":{"type":"number","example":10,"nullable":true,"description":"The upper bound value used only when operator is `between`.Null for all other operators."},"display_text":{"type":"string","example":"{free} FREE","description":"The text to display when this rule matches. Supports placeholders: `{free}` (current free spots) and `{total}` (total zone capacity)."},"order":{"type":"number","example":0,"description":"The position of this rule in the evaluation order. Rules are evaluated top-to-bottom and the first match wins."},"start_time":{"format":"date-time","type":"string","example":"2024-01-01T08:00:00.000Z","nullable":true,"description":"The time from which this rule is active. If null the rule is active at all times. Must be used together with `endTime`."},"end_time":{"format":"date-time","type":"string","example":"2024-01-01T20:00:00.000Z","nullable":true,"description":"The time until which this rule is active. If null the rule is active at all times. Must be used together with `startTime`."}},"required":["id","name","operator","occupied_value","occupied_value_to","display_text","order","start_time","end_time"]},"RgbDisplayDto":{"type":"object","properties":{"id":{"type":"number","example":1,"description":"The unique identifier of the RGB display."},"name":{"type":"string","example":"RGB Display name","description":"The display name of the RGB display. Must be between 3 and 255 characters."},"status":{"type":"string","example":"online","enum":["offline","online"],"description":"The current connectivity status of the RGB display."},"last_seen":{"format":"date-time","type":"string","example":"2022-01-28T15:02:23.000Z","nullable":true,"description":"The last time the rgb display was seen"},"total_occupied_count":{"type":"number","example":12,"description":"The total number of currently occupied spots, summed across all of this RGB display's source zones."},"total_spot_count":{"type":"number","example":20,"description":"The total number of parking spots, summed across all of this RGB display's source zones."},"serial_number":{"type":"string","example":"RGB Display serial number","description":"The serial number of the RGB display. Unique per device, used to identify and distinguish individual units."},"default_message":{"type":"string","example":"{free} FREE","nullable":true,"description":"The default message shown on the display when no conditional rule matches. Supports placeholders: `{free}` (current free spots) and `{total}` (total zone capacity)."},"zone_id":{"type":"number","example":1,"nullable":true,"description":"The ID of the zone this RGB display is associated with."},"lot_id":{"type":"number","example":1,"nullable":true,"description":"The ID of the lot this RGB display is associated with."},"rules":{"description":"The list of conditional rules associated with this display, ordered by evaluation priority. Rules are evaluated top-to-bottom and the first match wins. Falls back to `defaultMessage` if no rule matches.","type":"array","items":{"$ref":"#/components/schemas/RgbDisplayRuleDto"}},"source_zones":{"description":"The list of zones this display sources occupancy counts from. Used to calculate the values shown on the display via placeholders.","type":"array","items":{"$ref":"#/components/schemas/RgbDisplayRuleDto"}},"created_at":{"format":"date-time","type":"string","example":"2026-10-12T21:53:15.188+00:00","description":"Timestamp of when the RGB display record was created."},"updated_at":{"format":"date-time","type":"string","example":"2026-10-12T21:53:15.188+00:00","description":"Timestamp of when the RGB display record was last updated."}},"required":["id","name","status","last_seen","total_occupied_count","total_spot_count","serial_number","default_message","zone_id","lot_id","rules","source_zones","created_at","updated_at"]},"AssignRgbDisplayDto":{"type":"object","properties":{"serial_number":{"type":"string","example":"RGB Display serial number","description":"The display name of the RGB display. Must be between 3 and 255 characters."},"name":{"type":"string","example":"RGB Display name","description":"The display name of the RGB display. Must be between 3 and 255 characters."},"zone_id":{"type":"number","example":1,"description":"The ID of the zone this RGB display is associated with."},"default_message":{"type":"string","example":"{free} FREE","nullable":true,"description":"The default message shown on the display when no conditional rule matches. Supports placeholders: `{free}` (current free spots) and `{total}` (total zone capacity)."}},"required":["serial_number","name","zone_id","default_message"]},"AssignSourceZonesToRgbDisplayDto":{"type":"object","properties":{"ids":{"example":[1,2,3],"description":"The list of zone ids to assign to this RGB display as source zones.","type":"array","items":{"type":"number"}}},"required":["ids"]},"SimulateRgbDisplayDto":{"type":"object","properties":{"occupied_spots":{"type":"number","example":5,"description":"The number of occupied spots to simulate. This value is evaluated against the display's rules, and the first matching rule determines the output message."},"current_time":{"format":"date-time","type":"string","example":"2024-01-01T12:00:00.000Z","description":"The point in time to simulate the rule evaluation at. Used to check whether time-windowed rules (`startTime`/`endTime`) would be active at that moment."}},"required":["occupied_spots","current_time"]},"RgbDisplayOutputDto":{"type":"object","properties":{"spots":{"type":"string","example":"10"}},"required":["spots"]},"UpdateRgbDisplayDto":{"type":"object","properties":{"name":{"type":"string","example":"RGB Display name","description":"The display name of the RGB display. Must be between 3 and 255 characters."},"default_message":{"type":"string","example":"{free} FREE","description":"Optional default message shown on the display when no conditional rule matches. Maximum length is 255 characters. Supports placeholders: `{free}` (current free spots) and `{total}` (total zone capacity)."},"zone_id":{"type":"number","example":1,"description":"The ID of the zone this RGB display is associated with."}},"required":["name","default_message","zone_id"]},"UnassignSourceZonesFromRgbDisplaysDto":{"type":"object","properties":{"ids":{"example":[1,2,3],"description":"The list of zone ids to unassign from this RGB display's source zones.","type":"array","items":{"type":"number"}}},"required":["ids"]},"ReplaceRgbDisplayDto":{"type":"object","properties":{"name":{"type":"string","example":"RGB Display name","description":"The display name of the RGB display. Must be between 3 and 255 characters."},"source_zone_ids":{"example":[1,2,3],"description":"The list of zone ids that will fully replace this RGB display's current source zones.","type":"array","items":{"type":"number"}},"default_message":{"type":"string","example":"{free} FREE","description":"The default message shown on the display when no conditional rule matches. Supports placeholders: `{free}` (current free spots) and `{total}` (total zone capacity)."}},"required":["name","source_zone_ids","default_message"]},"ReplaceSourceZonesToRgbDisplayDto":{"type":"object","properties":{"ids":{"example":[1,2,3],"description":"The list of zone ids that will fully replace this RGB display's current source zones.","type":"array","items":{"type":"number"}}},"required":["ids"]},"UpdateRgbDisplayRuleDto":{"type":"object","properties":{"name":{"type":"string","example":"Low availability","description":"The name of the rule used to identify it in the list."},"operator":{"type":"string","enum":["eq","lt","gt","between"],"example":"gt","description":"The comparison operator used to evaluate the rule against the available spot count. Supported values: `eq` (equal), `lt` (less than), `gt` (greater than), `between` (inclusive range)."},"occupied_value":{"type":"number","example":5,"description":"The value to compare the occupied spot count against. When operator is `between`, this represents the lower bound of the range."},"occupied_value_to":{"type":"number","example":10,"nullable":true,"description":"The upper bound occupied value used only when operator is `between`. Required when operator is `between`, ignored for all other operators."},"display_text":{"type":"string","example":"{free} FREE","description":"The text to display when this rule matches. Supports placeholders: `{free}` (current free spots) and `{total}` (total zone capacity)."},"start_time":{"format":"date-time","type":"string","example":"2024-01-01T08:00:00.000Z","nullable":true,"description":"The time from which this rule is active. If null the rule is active at all times. Must be used together with `endTime`."},"end_time":{"format":"date-time","type":"string","example":"2024-01-01T20:00:00.000Z","nullable":true,"description":"The time until which this rule is active. If null the rule is active at all times. Must be used together with `startTime`."},"order":{"type":"number","example":0,"description":"The position of this rule in the evaluation order. Rules are evaluated top-to-bottom and the first match wins. If omitted, the existing order is preserved."}}}}}}