Compare commits

...
10 Commits
118 changed files with 4165 additions and 487 deletions
@@ -0,0 +1,50 @@
## Simulating a device from the shell
This document describes how one can register a device, read the status and add used time at the TimeLimit server using curl and jq.
It requires a previous installation of the official client at some other device.
---
First, setup TimeLimit somehwere and chose the "add device" option at the overview screen to get a code.
In this example, it's "Spagat vertreiben Waise Schnitzel subtil". The Server is running in localhost in this case.
Then one can register a new device using this token.
```
curl -X POST -H "Content-Type: application/json" --data '{"registerToken":"Spagat vertreiben Waise Schnitzel subtil","deviceName":"Test-PC","childDevice":{"model":"PC"}}' http://localhost:8080/child/add-device
# response:
# {"deviceAuthToken":"bAz5nArfZz8IbsPlpinav5ODHpl6KyrQ","ownDeviceId":"q61lT0"}
```
The TimeLimit client will now show this new minimal device. Both values are important and should be written down for using them later.
The first idea would be to get the current configuration:
```
curl -X POST -H "Content-Type: application/json" --data '{"deviceAuthToken":"bAz5nArfZz8IbsPlpinav5ODHpl6KyrQ","status":{"devices":"","apps":{},"categories":{},"users":"","clientLevel":3}}' http://localhost:8080/sync/pull-status | jq .
```
This status parameters are required to get the current status. They can be set for caching, but for testing it's enough to kepp the values empty.
By replacing the dot as parameter for jq, it's possible to get some specific data.
One example would be to get the info for the device itself using ``curl ... | jq '[ .devices.data[] | {key:.deviceId,value:.} ] | from_entries | .q61lT0'``.
It's a good idea to read <https://stedolan.github.io/jq/manual/> to know how to extract values from this data using jq.
In this case, there is the category "Erlaubte Spiele" with the categoryId ``SLwtDr`` (can be found in the response). The error diagnose of the client showed 18608 as current day of epoch.
```
# first encode the action itself
echo '{"type":"ADD_USED_TIME_V2","d":18608,"i":[{"categoryId":"SLwtDr","tta":60000,"etts":0}]}' | jq --raw-input .
# d = dayOfEpoch
# tta = time to add in milliseconds
# etts = extra time to subtract in milliseconds
# then put it as the encodedAction here
curl -X POST -H "Content-Type: application/json" --data '{"deviceAuthToken":"bAz5nArfZz8IbsPlpinav5ODHpl6KyrQ","actions":[{"encodedAction":"{\"type\":\"ADD_USED_TIME_V2\",\"d\":18608,\"i\":[{\"categoryId\":\"SLwtDr\",\"tta\":60000,\"etts\":0}]}","sequenceNumber":2,"integrity":"","type":"appLogic","userId":""}]}' http://localhost:8080/sync/push-actions
# response: {"shouldDoFullSync":false} which indicates success
```
The sequence number must be increased. Otherwise, the actions are ignored. This allows sending actions again if the connection was interrupted without counting the time twice.
After running this, the client should show one used minute for the day and the pull-status should report it too.
jq can be used for constructing the request bodies and correctly escaping the values during this. For this, ``--arg name value`` which is described in its documentation is useful. For reading and using values, ``--raw-output`` can help.
@@ -62,6 +62,9 @@
},
"usedTime": {
"type": "string"
},
"tasks": {
"type": "string"
}
},
"additionalProperties": false,
+100 -86
View File
@@ -43,175 +43,186 @@
- [NewDeviceInfo](./createfamilybymailtokenrequest-properties-newdeviceinfo.md) `https://timelimit.io/CreateFamilyByMailTokenRequest#/properties/parentDevice`
- [ParentPassword](./serializedparentaction-definitions-serializedadduseraction-properties-parentpassword.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedAddUserAction/properties/password`
- [ParentPassword](./createfamilybymailtokenrequest-definitions-parentpassword.md) `https://timelimit.io/CreateFamilyByMailTokenRequest#/definitions/ParentPassword`
- [ParentPassword](./serializedchildaction-definitions-serializedchildchangepasswordaction-properties-parentpassword.md) `https://timelimit.io/SerializedChildAction#/definitions/SerializedChildChangePasswordAction/properties/password`
- [ParentPassword](./serializedparentaction-definitions-serializedsetchildpasswordaction-properties-parentpassword.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetChildPasswordAction/properties/newPassword`
- [ParentPassword](./serializedchildaction-definitions-serializedchildchangepasswordaction-properties-parentpassword.md) `https://timelimit.io/SerializedChildAction#/definitions/SerializedChildChangePasswordAction/properties/password`
- [ParentPassword](./serializedparentaction-definitions-parentpassword.md) `https://timelimit.io/SerializedParentAction#/definitions/ParentPassword`
- [ParentPassword](./recoverparentpasswordrequest-definitions-parentpassword.md) `https://timelimit.io/RecoverParentPasswordRequest#/definitions/ParentPassword`
- [ParentPassword](./createfamilybymailtokenrequest-properties-parentpassword.md) `https://timelimit.io/CreateFamilyByMailTokenRequest#/properties/parentPassword`
- [ParentPassword](./serializedchildaction-definitions-parentpassword.md) `https://timelimit.io/SerializedChildAction#/definitions/ParentPassword`
- [ParentPassword](./recoverparentpasswordrequest-properties-parentpassword.md) `https://timelimit.io/RecoverParentPasswordRequest#/properties/password`
- [ParentPassword](./recoverparentpasswordrequest-definitions-parentpassword.md) `https://timelimit.io/RecoverParentPasswordRequest#/definitions/ParentPassword`
- [ParentPassword](./serializedparentaction-definitions-serializedsetchildpasswordaction-properties-parentpassword.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetChildPasswordAction/properties/newPassword`
- [ParentPassword](./serializedparentaction-definitions-parentpassword.md) `https://timelimit.io/SerializedParentAction#/definitions/ParentPassword`
- [ParentPassword](./createfamilybymailtokenrequest-properties-parentpassword.md) `https://timelimit.io/CreateFamilyByMailTokenRequest#/properties/parentPassword`
- [ParentPassword](./serializedparentaction-definitions-serializedsetchildpasswordaction-properties-parentpassword.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetChildPasswordAction/properties/newPassword`
- [ParentPassword](./serializedparentaction-definitions-serializedadduseraction-properties-parentpassword.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedAddUserAction/properties/password`
- [ParentPassword](./serializedchildaction-definitions-parentpassword.md) `https://timelimit.io/SerializedChildAction#/definitions/ParentPassword`
- [ParentPassword](./serializedchildaction-definitions-serializedchildchangepasswordaction-properties-parentpassword.md) `https://timelimit.io/SerializedChildAction#/definitions/SerializedChildChangePasswordAction/properties/password`
- [ParentPassword](./serializedchildaction-definitions-serializedchildchangepasswordaction-properties-parentpassword.md) `https://timelimit.io/SerializedChildAction#/definitions/SerializedChildChangePasswordAction/properties/password`
- [SerialiezdTriedDisablingDeviceAdminAction](./serializedapplogicaction-definitions-serialiezdtrieddisablingdeviceadminaction.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerialiezdTriedDisablingDeviceAdminAction`
- [SerialiezdTriedDisablingDeviceAdminAction](./serializedapplogicaction-anyof-serialiezdtrieddisablingdeviceadminaction.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/6`
- [SerialiezdTriedDisablingDeviceAdminAction](./serializedapplogicaction-anyof-serialiezdtrieddisablingdeviceadminaction.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/7`
- [SerialiizedUpdateNetworkTimeVerificationAction](./serializedparentaction-definitions-serialiizedupdatenetworktimeverificationaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerialiizedUpdateNetworkTimeVerificationAction`
- [SerialiizedUpdateNetworkTimeVerificationAction](./serializedparentaction-anyof-serialiizedupdatenetworktimeverificationaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/38`
- [SerializeResetCategoryNetworkIdsAction](./serializedparentaction-anyof-serializeresetcategorynetworkidsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/13`
- [SerialiizedUpdateNetworkTimeVerificationAction](./serializedparentaction-anyof-serialiizedupdatenetworktimeverificationaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/40`
- [SerializeResetCategoryNetworkIdsAction](./serializedparentaction-definitions-serializeresetcategorynetworkidsaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializeResetCategoryNetworkIdsAction`
- [SerializedAddCategoryAppsAction](./serializedparentaction-anyof-serializedaddcategoryappsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/0`
- [SerializeResetCategoryNetworkIdsAction](./serializedparentaction-anyof-serializeresetcategorynetworkidsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/14`
- [SerializedAddCategoryAppsAction](./serializedparentaction-definitions-serializedaddcategoryappsaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedAddCategoryAppsAction`
- [SerializedAddCategoryNetworkIdAction](./serializedparentaction-anyof-serializedaddcategorynetworkidaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/1`
- [SerializedAddCategoryAppsAction](./serializedparentaction-anyof-serializedaddcategoryappsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/0`
- [SerializedAddCategoryNetworkIdAction](./serializedparentaction-definitions-serializedaddcategorynetworkidaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedAddCategoryNetworkIdAction`
- [SerializedAddCategoryNetworkIdAction](./serializedparentaction-anyof-serializedaddcategorynetworkidaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/1`
- [SerializedAddInstalledAppsAction](./serializedapplogicaction-definitions-serializedaddinstalledappsaction.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddInstalledAppsAction`
- [SerializedAddInstalledAppsAction](./serializedapplogicaction-anyof-serializedaddinstalledappsaction.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/0`
- [SerializedAddUsedTimeAction](./serializedapplogicaction-anyof-serializedaddusedtimeaction.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/1`
- [SerializedAddUsedTimeAction](./serializedapplogicaction-definitions-serializedaddusedtimeaction.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddUsedTimeAction`
- [SerializedAddUsedTimeActionVersion2](./serializedapplogicaction-anyof-serializedaddusedtimeactionversion2.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/2`
- [SerializedAddUsedTimeActionVersion2](./serializedapplogicaction-definitions-serializedaddusedtimeactionversion2.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddUsedTimeActionVersion2`
- [SerializedAddUsedTimeActionVersion2](./serializedapplogicaction-anyof-serializedaddusedtimeactionversion2.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/2`
- [SerializedAddUserAction](./serializedparentaction-anyof-serializedadduseraction.md) `https://timelimit.io/SerializedParentAction#/anyOf/2`
- [SerializedAddUserAction](./serializedparentaction-definitions-serializedadduseraction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedAddUserAction`
- [SerializedAppActivityItem](./serverdatastatus-definitions-serverinstalledappsdata-properties-activities-serializedappactivityitem.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerInstalledAppsData/properties/activities/items`
- [SerializedAppActivityItem](./serializedapplogicaction-definitions-serializedappactivityitem.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAppActivityItem`
- [SerializedAppActivityItem](./serverdatastatus-definitions-serializedappactivityitem.md) `https://timelimit.io/ServerDataStatus#/definitions/SerializedAppActivityItem`
- [SerializedAppActivityItem](./serializedapplogicaction-definitions-serializedupdateappactivitiesaction-properties-updatedoradded-serializedappactivityitem.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedUpdateAppActivitiesAction/properties/updatedOrAdded/items`
- [SerializedAppActivityItem](./serializedapplogicaction-definitions-serializedappactivityitem.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAppActivityItem`
- [SerializedAppActivityItem](./serverdatastatus-definitions-serverinstalledappsdata-properties-activities-serializedappactivityitem.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerInstalledAppsData/properties/activities/items`
- [SerializedAppActivityItem](./serializedapplogicaction-definitions-serializedupdateappactivitiesaction-properties-updatedoradded-serializedappactivityitem.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedUpdateAppActivitiesAction/properties/updatedOrAdded/items`
- [SerializedAppActivityItem](./serverdatastatus-definitions-serverinstalledappsdata-properties-activities-serializedappactivityitem.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerInstalledAppsData/properties/activities/items`
- [SerializedChangeParentPasswordAction](./serializedparentaction-definitions-serializedchangeparentpasswordaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedChangeParentPasswordAction`
- [SerializedChangeParentPasswordAction](./serializedparentaction-anyof-serializedchangeparentpasswordaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/3`
- [SerializedChildChangePasswordAction](./serializedchildaction-definitions-serializedchildchangepasswordaction.md) `https://timelimit.io/SerializedChildAction#/definitions/SerializedChildChangePasswordAction`
- [SerializedChangeParentPasswordAction](./serializedparentaction-definitions-serializedchangeparentpasswordaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedChangeParentPasswordAction`
- [SerializedChildChangePasswordAction](./serializedchildaction-anyof-serializedchildchangepasswordaction.md) `https://timelimit.io/SerializedChildAction#/anyOf/0`
- [SerializedChildSignInAction](./serializedchildaction-definitions-serializedchildsigninaction.md) `https://timelimit.io/SerializedChildAction#/definitions/SerializedChildSignInAction`
- [SerializedChildChangePasswordAction](./serializedchildaction-definitions-serializedchildchangepasswordaction.md) `https://timelimit.io/SerializedChildAction#/definitions/SerializedChildChangePasswordAction`
- [SerializedChildSignInAction](./serializedchildaction-anyof-serializedchildsigninaction.md) `https://timelimit.io/SerializedChildAction#/anyOf/1`
- [SerializedCreateCategoryAction](./serializedparentaction-definitions-serializedcreatecategoryaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedCreateCategoryAction`
- [SerializedChildSignInAction](./serializedchildaction-definitions-serializedchildsigninaction.md) `https://timelimit.io/SerializedChildAction#/definitions/SerializedChildSignInAction`
- [SerializedCreateCategoryAction](./serializedparentaction-anyof-serializedcreatecategoryaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/4`
- [SerializedCreateTimelimtRuleAction](./serializedparentaction-anyof-serializedcreatetimelimtruleaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/5`
- [SerializedCreateCategoryAction](./serializedparentaction-definitions-serializedcreatecategoryaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedCreateCategoryAction`
- [SerializedCreateTimelimtRuleAction](./serializedparentaction-definitions-serializedcreatetimelimtruleaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedCreateTimelimtRuleAction`
- [SerializedCreateTimelimtRuleAction](./serializedparentaction-anyof-serializedcreatetimelimtruleaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/5`
- [SerializedDeleteCategoryAction](./serializedparentaction-anyof-serializeddeletecategoryaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/6`
- [SerializedDeleteCategoryAction](./serializedparentaction-definitions-serializeddeletecategoryaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedDeleteCategoryAction`
- [SerializedDeleteTimeLimitRuleAction](./serializedparentaction-anyof-serializeddeletetimelimitruleaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/7`
- [SerializedDeleteChildTaskAction](./serializedparentaction-anyof-serializeddeletechildtaskaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/7`
- [SerializedDeleteChildTaskAction](./serializedparentaction-definitions-serializeddeletechildtaskaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction`
- [SerializedDeleteTimeLimitRuleAction](./serializedparentaction-anyof-serializeddeletetimelimitruleaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/8`
- [SerializedDeleteTimeLimitRuleAction](./serializedparentaction-definitions-serializeddeletetimelimitruleaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedDeleteTimeLimitRuleAction`
- [SerializedForceSyncAction](./serializedapplogicaction-definitions-serializedforcesyncaction.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedForceSyncAction`
- [SerializedForceSyncAction](./serializedapplogicaction-anyof-serializedforcesyncaction.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/3`
- [SerializedForceSyncAction](./serializedapplogicaction-definitions-serializedforcesyncaction.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedForceSyncAction`
- [SerializedIgnoreManipulationAction](./serializedparentaction-anyof-serializedignoremanipulationaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/9`
- [SerializedIgnoreManipulationAction](./serializedparentaction-definitions-serializedignoremanipulationaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedIgnoreManipulationAction`
- [SerializedIgnoreManipulationAction](./serializedparentaction-anyof-serializedignoremanipulationaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/8`
- [SerializedIncrementCategoryExtraTimeAction](./serializedparentaction-definitions-serializedincrementcategoryextratimeaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedIncrementCategoryExtraTimeAction`
- [SerializedIncrementCategoryExtraTimeAction](./serializedparentaction-anyof-serializedincrementcategoryextratimeaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/9`
- [SerializedInstalledApp](./serverdatastatus-definitions-serializedinstalledapp.md) `https://timelimit.io/ServerDataStatus#/definitions/SerializedInstalledApp`
- [SerializedInstalledApp](./serverdatastatus-definitions-serverinstalledappsdata-properties-apps-serializedinstalledapp.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerInstalledAppsData/properties/apps/items`
- [SerializedInstalledApp](./serializedapplogicaction-definitions-serializedaddinstalledappsaction-properties-apps-serializedinstalledapp.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddInstalledAppsAction/properties/apps/items`
- [SerializedIncrementCategoryExtraTimeAction](./serializedparentaction-anyof-serializedincrementcategoryextratimeaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/10`
- [SerializedInstalledApp](./serializedapplogicaction-definitions-serializedinstalledapp.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedInstalledApp`
- [SerializedInstalledApp](./serverdatastatus-definitions-serverinstalledappsdata-properties-apps-serializedinstalledapp.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerInstalledAppsData/properties/apps/items`
- [SerializedInstalledApp](./serializedapplogicaction-definitions-serializedaddinstalledappsaction-properties-apps-serializedinstalledapp.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddInstalledAppsAction/properties/apps/items`
- [SerializedRemoveCategoryAppsAction](./serializedparentaction-anyof-serializedremovecategoryappsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/10`
- [SerializedInstalledApp](./serverdatastatus-definitions-serverinstalledappsdata-properties-apps-serializedinstalledapp.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerInstalledAppsData/properties/apps/items`
- [SerializedInstalledApp](./serverdatastatus-definitions-serverinstalledappsdata-properties-apps-serializedinstalledapp.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerInstalledAppsData/properties/apps/items`
- [SerializedInstalledApp](./serverdatastatus-definitions-serializedinstalledapp.md) `https://timelimit.io/ServerDataStatus#/definitions/SerializedInstalledApp`
- [SerializedInstalledApp](./serializedapplogicaction-definitions-serializedaddinstalledappsaction-properties-apps-serializedinstalledapp.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddInstalledAppsAction/properties/apps/items`
- [SerializedMarkTaskPendingAction](./serializedapplogicaction-definitions-serializedmarktaskpendingaction.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction`
- [SerializedMarkTaskPendingAction](./serializedapplogicaction-anyof-serializedmarktaskpendingaction.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/4`
- [SerializedRemoveCategoryAppsAction](./serializedparentaction-definitions-serializedremovecategoryappsaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedRemoveCategoryAppsAction`
- [SerializedRemoveCategoryAppsAction](./serializedparentaction-anyof-serializedremovecategoryappsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/11`
- [SerializedRemoveInstalledAppsAction](./serializedapplogicaction-anyof-serializedremoveinstalledappsaction.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/5`
- [SerializedRemoveInstalledAppsAction](./serializedapplogicaction-definitions-serializedremoveinstalledappsaction.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedRemoveInstalledAppsAction`
- [SerializedRemoveInstalledAppsAction](./serializedapplogicaction-anyof-serializedremoveinstalledappsaction.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/4`
- [SerializedRemoveUserAction](./serializedparentaction-anyof-serializedremoveuseraction.md) `https://timelimit.io/SerializedParentAction#/anyOf/11`
- [SerializedRemoveUserAction](./serializedparentaction-definitions-serializedremoveuseraction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedRemoveUserAction`
- [SerializedRemoveUserAction](./serializedparentaction-anyof-serializedremoveuseraction.md) `https://timelimit.io/SerializedParentAction#/anyOf/12`
- [SerializedRenameChildAction](./serializedparentaction-definitions-serializedrenamechildaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedRenameChildAction`
- [SerializedRenameChildAction](./serializedparentaction-anyof-serializedrenamechildaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/12`
- [SerializedResetParentBlockedTimesAction](./serializedparentaction-anyof-serializedresetparentblockedtimesaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/14`
- [SerializedResetParentBlockedTimesAction](./serializedparentaction-definitions-serializedresetparentblockedtimesaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedResetParentBlockedTimesAction`
- [SerializedRenameChildAction](./serializedparentaction-anyof-serializedrenamechildaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/13`
- [SerializedReviewChildTaskAction](./serializedparentaction-definitions-serializedreviewchildtaskaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction`
- [SerializedReviewChildTaskAction](./serializedparentaction-anyof-serializedreviewchildtaskaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/15`
- [SerializedSetCategoryExtraTimeAction](./serializedparentaction-anyof-serializedsetcategoryextratimeaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/16`
- [SerializedSetCategoryExtraTimeAction](./serializedparentaction-definitions-serializedsetcategoryextratimeaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetCategoryExtraTimeAction`
- [SerializedSetCategoryExtraTimeAction](./serializedparentaction-anyof-serializedsetcategoryextratimeaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/15`
- [SerializedSetCategoryForUnassignedAppsAction](./serializedparentaction-definitions-serializedsetcategoryforunassignedappsaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetCategoryForUnassignedAppsAction`
- [SerializedSetCategoryForUnassignedAppsAction](./serializedparentaction-anyof-serializedsetcategoryforunassignedappsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/16`
- [SerializedSetCategoryForUnassignedAppsAction](./serializedparentaction-anyof-serializedsetcategoryforunassignedappsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/17`
- [SerializedSetChildPasswordAction](./serializedparentaction-anyof-serializedsetchildpasswordaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/18`
- [SerializedSetChildPasswordAction](./serializedparentaction-definitions-serializedsetchildpasswordaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetChildPasswordAction`
- [SerializedSetChildPasswordAction](./serializedparentaction-anyof-serializedsetchildpasswordaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/17`
- [SerializedSetConsiderRebootManipulationAction](./serializedparentaction-anyof-serializedsetconsiderrebootmanipulationaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/19`
- [SerializedSetConsiderRebootManipulationAction](./serializedparentaction-definitions-serializedsetconsiderrebootmanipulationaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetConsiderRebootManipulationAction`
- [SerializedSetConsiderRebootManipulationAction](./serializedparentaction-anyof-serializedsetconsiderrebootmanipulationaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/18`
- [SerializedSetDeviceDefaultUserAction](./serializedparentaction-anyof-serializedsetdevicedefaultuseraction.md) `https://timelimit.io/SerializedParentAction#/anyOf/19`
- [SerializedSetDeviceDefaultUserAction](./serializedparentaction-definitions-serializedsetdevicedefaultuseraction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetDeviceDefaultUserAction`
- [SerializedSetDeviceDefaultUserAction](./serializedparentaction-anyof-serializedsetdevicedefaultuseraction.md) `https://timelimit.io/SerializedParentAction#/anyOf/20`
- [SerializedSetDeviceDefaultUserTimeoutAction](./serializedparentaction-definitions-serializedsetdevicedefaultusertimeoutaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetDeviceDefaultUserTimeoutAction`
- [SerializedSetDeviceDefaultUserTimeoutAction](./serializedparentaction-anyof-serializedsetdevicedefaultusertimeoutaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/20`
- [SerializedSetDeviceDefaultUserTimeoutAction](./serializedparentaction-anyof-serializedsetdevicedefaultusertimeoutaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/21`
- [SerializedSetDeviceUserAction](./serializedparentaction-definitions-serializedsetdeviceuseraction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetDeviceUserAction`
- [SerializedSetDeviceUserAction](./serializedparentaction-anyof-serializedsetdeviceuseraction.md) `https://timelimit.io/SerializedParentAction#/anyOf/21`
- [SerializedSetDeviceUserAction](./serializedparentaction-anyof-serializedsetdeviceuseraction.md) `https://timelimit.io/SerializedParentAction#/anyOf/22`
- [SerializedSetKeepSignedInAction](./serializedparentaction-definitions-serializedsetkeepsignedinaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetKeepSignedInAction`
- [SerializedSetKeepSignedInAction](./serializedparentaction-anyof-serializedsetkeepsignedinaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/22`
- [SerializedSetParentCategoryAction](./serializedparentaction-anyof-serializedsetparentcategoryaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/23`
- [SerializedSetKeepSignedInAction](./serializedparentaction-anyof-serializedsetkeepsignedinaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/23`
- [SerializedSetParentCategoryAction](./serializedparentaction-definitions-serializedsetparentcategoryaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetParentCategoryAction`
- [SerializedSetRelaxPrimaryDeviceAction](./serializedparentaction-anyof-serializedsetrelaxprimarydeviceaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/24`
- [SerializedSetParentCategoryAction](./serializedparentaction-anyof-serializedsetparentcategoryaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/24`
- [SerializedSetRelaxPrimaryDeviceAction](./serializedparentaction-anyof-serializedsetrelaxprimarydeviceaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/25`
- [SerializedSetRelaxPrimaryDeviceAction](./serializedparentaction-definitions-serializedsetrelaxprimarydeviceaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetRelaxPrimaryDeviceAction`
- [SerializedSetSendDeviceConnected](./serializedparentaction-definitions-serializedsetsenddeviceconnected.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetSendDeviceConnected`
- [SerializedSetSendDeviceConnected](./serializedparentaction-anyof-serializedsetsenddeviceconnected.md) `https://timelimit.io/SerializedParentAction#/anyOf/25`
- [SerializedSetSendDeviceConnected](./serializedparentaction-anyof-serializedsetsenddeviceconnected.md) `https://timelimit.io/SerializedParentAction#/anyOf/26`
- [SerializedSetUserDisableLimitsUntilAction](./serializedparentaction-definitions-serializedsetuserdisablelimitsuntilaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetUserDisableLimitsUntilAction`
- [SerializedSetUserDisableLimitsUntilAction](./serializedparentaction-anyof-serializedsetuserdisablelimitsuntilaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/26`
- [SerializedSetUserDisableLimitsUntilAction](./serializedparentaction-anyof-serializedsetuserdisablelimitsuntilaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/27`
- [SerializedSetUserTimezoneAction](./serializedparentaction-anyof-serializedsetusertimezoneaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/28`
- [SerializedSetUserTimezoneAction](./serializedparentaction-definitions-serializedsetusertimezoneaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetUserTimezoneAction`
- [SerializedSetUserTimezoneAction](./serializedparentaction-anyof-serializedsetusertimezoneaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/27`
- [SerializedSignOutAtDeviceAction](./serializedapplogicaction-anyof-serializedsignoutatdeviceaction.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/6`
- [SerializedSignOutAtDeviceAction](./serializedapplogicaction-definitions-serializedsignoutatdeviceaction.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedSignOutAtDeviceAction`
- [SerializedSignOutAtDeviceAction](./serializedapplogicaction-anyof-serializedsignoutatdeviceaction.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/5`
- [SerializedTimeLimitRule](./serializedparentaction-definitions-serializedcreatetimelimtruleaction-properties-serializedtimelimitrule.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedCreateTimelimtRuleAction/properties/rule`
- [SerializedTimeLimitRule](./serializedparentaction-definitions-serializedcreatetimelimtruleaction-properties-serializedtimelimitrule.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedCreateTimelimtRuleAction/properties/rule`
- [SerializedTimeLimitRule](./serializedparentaction-definitions-serializedtimelimitrule.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedTimeLimitRule`
- [SerializedUpdatCategoryDisableLimitsAction](./serializedparentaction-anyof-serializedupdatcategorydisablelimitsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/31`
- [SerializedUpdatCategoryDisableLimitsAction](./serializedparentaction-definitions-serializedupdatcategorydisablelimitsaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdatCategoryDisableLimitsAction`
- [SerializedUpdatCategoryDisableLimitsAction](./serializedparentaction-anyof-serializedupdatcategorydisablelimitsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/32`
- [SerializedUpdateAppActivitiesAction](./serializedapplogicaction-definitions-serializedupdateappactivitiesaction.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedUpdateAppActivitiesAction`
- [SerializedUpdateAppActivitiesAction](./serializedapplogicaction-anyof-serializedupdateappactivitiesaction.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/7`
- [SerializedUpdateAppActivitiesAction](./serializedapplogicaction-anyof-serializedupdateappactivitiesaction.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/8`
- [SerializedUpdateCategoryBatteryLimitAction](./serializedparentaction-definitions-serializedupdatecategorybatterylimitaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateCategoryBatteryLimitAction`
- [SerializedUpdateCategoryBatteryLimitAction](./serializedparentaction-anyof-serializedupdatecategorybatterylimitaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/28`
- [SerializedUpdateCategoryBatteryLimitAction](./serializedparentaction-anyof-serializedupdatecategorybatterylimitaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/29`
- [SerializedUpdateCategoryBlockAllNotificationsAction](./serializedparentaction-definitions-serializedupdatecategoryblockallnotificationsaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateCategoryBlockAllNotificationsAction`
- [SerializedUpdateCategoryBlockAllNotificationsAction](./serializedparentaction-anyof-serializedupdatecategoryblockallnotificationsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/29`
- [SerializedUpdateCategoryBlockedTimesAction](./serializedparentaction-anyof-serializedupdatecategoryblockedtimesaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/30`
- [SerializedUpdateCategoryBlockAllNotificationsAction](./serializedparentaction-anyof-serializedupdatecategoryblockallnotificationsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/30`
- [SerializedUpdateCategoryBlockedTimesAction](./serializedparentaction-definitions-serializedupdatecategoryblockedtimesaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateCategoryBlockedTimesAction`
- [SerializedUpdateCategoryBlockedTimesAction](./serializedparentaction-anyof-serializedupdatecategoryblockedtimesaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/31`
- [SerializedUpdateCategorySortingAction](./serializedparentaction-anyof-serializedupdatecategorysortingaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/33`
- [SerializedUpdateCategorySortingAction](./serializedparentaction-definitions-serializedupdatecategorysortingaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateCategorySortingAction`
- [SerializedUpdateCategorySortingAction](./serializedparentaction-anyof-serializedupdatecategorysortingaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/32`
- [SerializedUpdateCategoryTemporarilyBlockedAction](./serializedparentaction-anyof-serializedupdatecategorytemporarilyblockedaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/34`
- [SerializedUpdateCategoryTemporarilyBlockedAction](./serializedparentaction-definitions-serializedupdatecategorytemporarilyblockedaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateCategoryTemporarilyBlockedAction`
- [SerializedUpdateCategoryTemporarilyBlockedAction](./serializedparentaction-anyof-serializedupdatecategorytemporarilyblockedaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/33`
- [SerializedUpdateCategoryTimeWarningsAction](./serializedparentaction-anyof-serializedupdatecategorytimewarningsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/34`
- [SerializedUpdateCategoryTimeWarningsAction](./serializedparentaction-anyof-serializedupdatecategorytimewarningsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/35`
- [SerializedUpdateCategoryTimeWarningsAction](./serializedparentaction-definitions-serializedupdatecategorytimewarningsaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateCategoryTimeWarningsAction`
- [SerializedUpdateCategoryTitleAction](./serializedparentaction-anyof-serializedupdatecategorytitleaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/36`
- [SerializedUpdateCategoryTitleAction](./serializedparentaction-definitions-serializedupdatecategorytitleaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateCategoryTitleAction`
- [SerializedUpdateCategoryTitleAction](./serializedparentaction-anyof-serializedupdatecategorytitleaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/35`
- [SerializedUpdateDeviceNameAction](./serializedparentaction-anyof-serializedupdatedevicenameaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/36`
- [SerializedUpdateChildTaskAction](./serializedparentaction-anyof-serializedupdatechildtaskaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/37`
- [SerializedUpdateChildTaskAction](./serializedparentaction-definitions-serializedupdatechildtaskaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction`
- [SerializedUpdateDeviceNameAction](./serializedparentaction-anyof-serializedupdatedevicenameaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/38`
- [SerializedUpdateDeviceNameAction](./serializedparentaction-definitions-serializedupdatedevicenameaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateDeviceNameAction`
- [SerializedUpdateDeviceStatusAction](./serializedapplogicaction-anyof-serializedupdatedevicestatusaction.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/9`
- [SerializedUpdateDeviceStatusAction](./serializedapplogicaction-definitions-serializedupdatedevicestatusaction.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedUpdateDeviceStatusAction`
- [SerializedUpdateDeviceStatusAction](./serializedapplogicaction-anyof-serializedupdatedevicestatusaction.md) `https://timelimit.io/SerializedAppLogicAction#/anyOf/8`
- [SerializedUpdateEnableActivityLevelBlockingAction](./serializedparentaction-anyof-serializedupdateenableactivitylevelblockingaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/37`
- [SerializedUpdateEnableActivityLevelBlockingAction](./serializedparentaction-anyof-serializedupdateenableactivitylevelblockingaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/39`
- [SerializedUpdateEnableActivityLevelBlockingAction](./serializedparentaction-definitions-serializedupdateenableactivitylevelblockingaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateEnableActivityLevelBlockingAction`
- [SerializedUpdateParentBlockedTimesAction](./serializedparentaction-definitions-serializedupdateparentblockedtimesaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateParentBlockedTimesAction`
- [SerializedUpdateParentBlockedTimesAction](./serializedparentaction-anyof-serializedupdateparentblockedtimesaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/39`
- [SerializedUpdateParentNotificationFlagsAction](./serializedparentaction-anyof-serializedupdateparentnotificationflagsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/40`
- [SerializedUpdateParentNotificationFlagsAction](./serializedparentaction-anyof-serializedupdateparentnotificationflagsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/41`
- [SerializedUpdateParentNotificationFlagsAction](./serializedparentaction-definitions-serializedupdateparentnotificationflagsaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateParentNotificationFlagsAction`
- [SerializedUpdateTimelimitRuleAction](./serializedparentaction-anyof-serializedupdatetimelimitruleaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/42`
- [SerializedUpdateTimelimitRuleAction](./serializedparentaction-definitions-serializedupdatetimelimitruleaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateTimelimitRuleAction`
- [SerializedUpdateTimelimitRuleAction](./serializedparentaction-anyof-serializedupdatetimelimitruleaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/41`
- [SerializedUpdateUserFlagsAction](./serializedparentaction-anyof-serializedupdateuserflagsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/42`
- [SerializedUpdateUserFlagsAction](./serializedparentaction-definitions-serializedupdateuserflagsaction.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserFlagsAction`
- [SerializedUpdateUserFlagsAction](./serializedparentaction-anyof-serializedupdateuserflagsaction.md) `https://timelimit.io/SerializedParentAction#/anyOf/43`
- [SerializedUpdateUserLimitLoginCategory](./serializedparentaction-anyof-serializedupdateuserlimitlogincategory.md) `https://timelimit.io/SerializedParentAction#/anyOf/44`
- [SerializedUpdateUserLimitLoginCategory](./serializedparentaction-definitions-serializedupdateuserlimitlogincategory.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginCategory`
- [SerializedUpdateUserLimitLoginCategory](./serializedparentaction-anyof-serializedupdateuserlimitlogincategory.md) `https://timelimit.io/SerializedParentAction#/anyOf/43`
- [ServerCategoryNetworkId](./serverdatastatus-definitions-serverupdatedcategorybasedata-properties-networks-servercategorynetworkid.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryBaseData/properties/networks/items`
- [ServerCategoryNetworkId](./serverdatastatus-definitions-serverupdatedcategorybasedata-properties-networks-servercategorynetworkid.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryBaseData/properties/networks/items`
- [SerializedUpdateUserLimitLoginPreBlockDuration](./serializedparentaction-anyof-serializedupdateuserlimitloginpreblockduration.md) `https://timelimit.io/SerializedParentAction#/anyOf/45`
- [SerializedUpdateUserLimitLoginPreBlockDuration](./serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration`
- [ServerCategoryNetworkId](./serverdatastatus-definitions-servercategorynetworkid.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerCategoryNetworkId`
- [ServerDeviceData](./serverdatastatus-definitions-serverdevicelist-properties-data-serverdevicedata.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerDeviceList/properties/data/items`
- [ServerCategoryNetworkId](./serverdatastatus-definitions-serverupdatedcategorybasedata-properties-networks-servercategorynetworkid.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryBaseData/properties/networks/items`
- [ServerCategoryNetworkId](./serverdatastatus-definitions-serverupdatedcategorybasedata-properties-networks-servercategorynetworkid.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryBaseData/properties/networks/items`
- [ServerDeviceData](./serverdatastatus-definitions-serverdevicedata.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerDeviceData`
- [ServerDeviceData](./serverdatastatus-definitions-serverdevicelist-properties-data-serverdevicedata.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerDeviceList/properties/data/items`
- [ServerDeviceData](./serverdatastatus-definitions-serverdevicelist-properties-data-serverdevicedata.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerDeviceList/properties/data/items`
- [ServerDeviceList](./serverdatastatus-properties-serverdevicelist.md) `https://timelimit.io/ServerDataStatus#/properties/devices`
- [ServerDeviceList](./serverdatastatus-definitions-serverdevicelist.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerDeviceList`
- [ServerInstalledAppsData](./serverdatastatus-definitions-serverinstalledappsdata.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerInstalledAppsData`
- [ServerInstalledAppsData](./serverdatastatus-properties-apps-serverinstalledappsdata.md) `https://timelimit.io/ServerDataStatus#/properties/apps/items`
- [ServerInstalledAppsData](./serverdatastatus-definitions-serverinstalledappsdata.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerInstalledAppsData`
- [ServerSessionDurationItem](./serverdatastatus-definitions-serverupdatedcategoryusedtimes-properties-sessiondurations-serversessiondurationitem.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryUsedTimes/properties/sessionDurations/items`
- [ServerSessionDurationItem](./serverdatastatus-definitions-serverupdatedcategoryusedtimes-properties-sessiondurations-serversessiondurationitem.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryUsedTimes/properties/sessionDurations/items`
- [ServerSessionDurationItem](./serverdatastatus-definitions-serversessiondurationitem.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerSessionDurationItem`
- [ServerSessionDurationItem](./serverdatastatus-definitions-serverupdatedcategoryusedtimes-properties-sessiondurations-serversessiondurationitem.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryUsedTimes/properties/sessionDurations/items`
- [ServerTimeLimitRule](./serverdatastatus-definitions-serverupdatedtimelimitrules-properties-rules-servertimelimitrule.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedTimeLimitRules/properties/rules/items`
- [ServerTimeLimitRule](./serverdatastatus-definitions-servertimelimitrule.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerTimeLimitRule`
- [ServerTimeLimitRule](./serverdatastatus-definitions-serverupdatedtimelimitrules-properties-rules-servertimelimitrule.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedTimeLimitRules/properties/rules/items`
- [ServerUpdatedCategoryAssignedApps](./serverdatastatus-definitions-serverupdatedcategoryassignedapps.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryAssignedApps`
- [ServerUpdatedCategoryAssignedApps](./serverdatastatus-properties-categoryapp-serverupdatedcategoryassignedapps.md) `https://timelimit.io/ServerDataStatus#/properties/categoryApp/items`
- [ServerUpdatedCategoryBaseData](./serverdatastatus-properties-categorybase-serverupdatedcategorybasedata.md) `https://timelimit.io/ServerDataStatus#/properties/categoryBase/items`
- [ServerUpdatedCategoryAssignedApps](./serverdatastatus-definitions-serverupdatedcategoryassignedapps.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryAssignedApps`
- [ServerUpdatedCategoryBaseData](./serverdatastatus-definitions-serverupdatedcategorybasedata.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryBaseData`
- [ServerUpdatedCategoryBaseData](./serverdatastatus-properties-categorybase-serverupdatedcategorybasedata.md) `https://timelimit.io/ServerDataStatus#/properties/categoryBase/items`
- [ServerUpdatedCategoryTask](./serverdatastatus-definitions-serverupdatedcategorytask.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask`
- [ServerUpdatedCategoryTask](./serverdatastatus-definitions-serverupdatedcategorytasks-properties-tasks-serverupdatedcategorytask.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/tasks/items`
- [ServerUpdatedCategoryTask](./serverdatastatus-definitions-serverupdatedcategorytasks-properties-tasks-serverupdatedcategorytask.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/tasks/items`
- [ServerUpdatedCategoryTasks](./serverdatastatus-definitions-serverupdatedcategorytasks.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks`
- [ServerUpdatedCategoryTasks](./serverdatastatus-properties-tasks-serverupdatedcategorytasks.md) `https://timelimit.io/ServerDataStatus#/properties/tasks/items`
- [ServerUpdatedCategoryUsedTimes](./serverdatastatus-properties-usedtimes-serverupdatedcategoryusedtimes.md) `https://timelimit.io/ServerDataStatus#/properties/usedTimes/items`
- [ServerUpdatedCategoryUsedTimes](./serverdatastatus-definitions-serverupdatedcategoryusedtimes.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryUsedTimes`
- [ServerUpdatedTimeLimitRules](./serverdatastatus-properties-rules-serverupdatedtimelimitrules.md) `https://timelimit.io/ServerDataStatus#/properties/rules/items`
- [ServerUpdatedTimeLimitRules](./serverdatastatus-definitions-serverupdatedtimelimitrules.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedTimeLimitRules`
- [ServerUpdatedTimeLimitRules](./serverdatastatus-properties-rules-serverupdatedtimelimitrules.md) `https://timelimit.io/ServerDataStatus#/properties/rules/items`
- [ServerUsedTimeItem](./serverdatastatus-definitions-serverupdatedcategoryusedtimes-properties-times-serverusedtimeitem.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryUsedTimes/properties/times/items`
- [ServerUsedTimeItem](./serverdatastatus-definitions-serverupdatedcategoryusedtimes-properties-times-serverusedtimeitem.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryUsedTimes/properties/times/items`
- [ServerUsedTimeItem](./serverdatastatus-definitions-serverusedtimeitem.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUsedTimeItem`
- [ServerUsedTimeItem](./serverdatastatus-definitions-serverupdatedcategoryusedtimes-properties-times-serverusedtimeitem.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryUsedTimes/properties/times/items`
- [ServerUsedTimeItem](./serverdatastatus-definitions-serverupdatedcategoryusedtimes-properties-times-serverusedtimeitem.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryUsedTimes/properties/times/items`
- [ServerUserEntry](./serverdatastatus-definitions-serveruserlist-properties-data-serveruserentry.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUserList/properties/data/items`
- [ServerUserEntry](./serverdatastatus-definitions-serveruserlist-properties-data-serveruserentry.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUserList/properties/data/items`
- [ServerUserEntry](./serverdatastatus-definitions-serveruserentry.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUserEntry`
- [ServerUserEntry](./serverdatastatus-definitions-serveruserlist-properties-data-serveruserentry.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUserList/properties/data/items`
- [ServerUserList](./serverdatastatus-properties-serveruserlist.md) `https://timelimit.io/ServerDataStatus#/properties/users`
- [ServerUserList](./serverdatastatus-definitions-serveruserlist.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUserList`
- [Untitled object in ClientPullChangesRequest](./clientpullchangesrequest-definitions-clientdatastatus-properties-categories.md) `https://timelimit.io/ClientPullChangesRequest#/definitions/ClientDataStatus/properties/categories`
- [ServerUserList](./serverdatastatus-properties-serveruserlist.md) `https://timelimit.io/ServerDataStatus#/properties/users`
- [Untitled object in ClientPullChangesRequest](./clientpullchangesrequest-definitions-clientdatastatus-properties-apps.md) `https://timelimit.io/ClientPullChangesRequest#/definitions/ClientDataStatus/properties/apps`
- [Untitled object in ClientPullChangesRequest](./clientpullchangesrequest-definitions-clientdatastatus-properties-categories.md) `https://timelimit.io/ClientPullChangesRequest#/definitions/ClientDataStatus/properties/categories`
- [Untitled object in ClientPullChangesRequest](./clientpullchangesrequest-definitions-clientdatastatus-properties-apps.md) `https://timelimit.io/ClientPullChangesRequest#/definitions/ClientDataStatus/properties/apps`
- [Untitled object in ClientPullChangesRequest](./clientpullchangesrequest-definitions-clientdatastatus-properties-categories.md) `https://timelimit.io/ClientPullChangesRequest#/definitions/ClientDataStatus/properties/categories`
- [Untitled object in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedaddusedtimeactionversion2-properties-i-items.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddUsedTimeActionVersion2/properties/i/items`
@@ -229,25 +240,25 @@
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedupdateappactivitiesaction-properties-removed.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedUpdateAppActivitiesAction/properties/removed`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedupdateappactivitiesaction-properties-removed-items.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedUpdateAppActivitiesAction/properties/removed/items`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedupdateappactivitiesaction-properties-updatedoradded.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedUpdateAppActivitiesAction/properties/updatedOrAdded`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedaddusedtimeactionversion2-properties-i.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddUsedTimeActionVersion2/properties/i`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedaddinstalledappsaction-properties-apps.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddInstalledAppsAction/properties/apps`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedaddusedtimeactionversion2-properties-i.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddUsedTimeActionVersion2/properties/i`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedaddusedtimeactionversion2-properties-i-items-properties-as.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddUsedTimeActionVersion2/properties/i/items/properties/as`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedaddusedtimeactionversion2-properties-i-items-properties-as-items.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddUsedTimeActionVersion2/properties/i/items/properties/as/items`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedaddusedtimeactionversion2-properties-i.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddUsedTimeActionVersion2/properties/i`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedaddusedtimeactionversion2-properties-i-items-properties-sdl.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddUsedTimeActionVersion2/properties/i/items/properties/sdl`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedaddusedtimeactionversion2-properties-i-items-properties-sdl-items.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddUsedTimeActionVersion2/properties/i/items/properties/sdl/items`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedremoveinstalledappsaction-properties-packagenames.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedRemoveInstalledAppsAction/properties/packageNames`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedupdateappactivitiesaction-properties-removed.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedUpdateAppActivitiesAction/properties/removed`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedupdateappactivitiesaction-properties-removed-items.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedUpdateAppActivitiesAction/properties/removed/items`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedupdateappactivitiesaction-properties-updatedoradded.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedUpdateAppActivitiesAction/properties/updatedOrAdded`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedaddinstalledappsaction-properties-apps.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddInstalledAppsAction/properties/apps`
- [Untitled array in SerializedAppLogicAction](./serializedapplogicaction-definitions-serializedaddusedtimeactionversion2-properties-i-items-properties-as-items.md) `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddUsedTimeActionVersion2/properties/i/items/properties/as/items`
- [Untitled array in SerializedParentAction](./serializedparentaction-definitions-serializedaddcategoryappsaction-properties-packagenames.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedAddCategoryAppsAction/properties/packageNames`
- [Untitled array in SerializedParentAction](./serializedparentaction-definitions-serializedremovecategoryappsaction-properties-packagenames.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedRemoveCategoryAppsAction/properties/packageNames`
- [Untitled array in SerializedParentAction](./serializedparentaction-definitions-serializedupdatecategorysortingaction-properties-categoryids.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateCategorySortingAction/properties/categoryIds`
- [Untitled array in SerializedParentAction](./serializedparentaction-definitions-serializedaddcategoryappsaction-properties-packagenames.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedAddCategoryAppsAction/properties/packageNames`
- [Untitled array in SerializedParentAction](./serializedparentaction-definitions-serializedremovecategoryappsaction-properties-packagenames.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedRemoveCategoryAppsAction/properties/packageNames`
- [Untitled array in SerializedParentAction](./serializedparentaction-definitions-serializedupdatecategorysortingaction-properties-categoryids.md) `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateCategorySortingAction/properties/categoryIds`
- [Untitled array in ServerDataStatus](./serverdatastatus-properties-rules.md) `https://timelimit.io/ServerDataStatus#/properties/rules`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serverdevicelist-properties-data.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerDeviceList/properties/data`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serveruserlist-properties-data.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUserList/properties/data`
- [Untitled array in ServerDataStatus](./serverdatastatus-properties-apps.md) `https://timelimit.io/ServerDataStatus#/properties/apps`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serverinstalledappsdata-properties-apps.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerInstalledAppsData/properties/apps`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serverinstalledappsdata-properties-activities.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerInstalledAppsData/properties/activities`
- [Untitled array in ServerDataStatus](./serverdatastatus-properties-rmcategories.md) `https://timelimit.io/ServerDataStatus#/properties/rmCategories`
@@ -258,8 +269,10 @@
- [Untitled array in ServerDataStatus](./serverdatastatus-properties-usedtimes.md) `https://timelimit.io/ServerDataStatus#/properties/usedTimes`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serverupdatedcategoryusedtimes-properties-times.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryUsedTimes/properties/times`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serverupdatedcategoryusedtimes-properties-sessiondurations.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryUsedTimes/properties/sessionDurations`
- [Untitled array in ServerDataStatus](./serverdatastatus-properties-apps.md) `https://timelimit.io/ServerDataStatus#/properties/apps`
- [Untitled array in ServerDataStatus](./serverdatastatus-properties-rules.md) `https://timelimit.io/ServerDataStatus#/properties/rules`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serverupdatedtimelimitrules-properties-rules.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedTimeLimitRules/properties/rules`
- [Untitled array in ServerDataStatus](./serverdatastatus-properties-tasks.md) `https://timelimit.io/ServerDataStatus#/properties/tasks`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serverupdatedcategorytasks-properties-tasks.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/tasks`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serveruserlist-properties-data.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUserList/properties/data`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serverdevicelist-properties-data.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerDeviceList/properties/data`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serverinstalledappsdata-properties-apps.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerInstalledAppsData/properties/apps`
@@ -269,7 +282,8 @@
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serverupdatedcategoryusedtimes-properties-times.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryUsedTimes/properties/times`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serverupdatedcategoryusedtimes-properties-sessiondurations.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryUsedTimes/properties/sessionDurations`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serverupdatedtimelimitrules-properties-rules.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedTimeLimitRules/properties/rules`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serveruserlist-properties-data.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUserList/properties/data`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serverupdatedcategorytasks-properties-tasks.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/tasks`
- [Untitled array in ServerDataStatus](./serverdatastatus-definitions-serverdevicelist-properties-data.md) `https://timelimit.io/ServerDataStatus#/definitions/ServerDeviceList/properties/data`
## Version Note
@@ -12,6 +12,9 @@
{
"$ref": "#/definitions/SerializedForceSyncAction"
},
{
"$ref": "#/definitions/SerializedMarkTaskPendingAction"
},
{
"$ref": "#/definitions/SerializedRemoveInstalledAppsAction"
},
@@ -243,6 +246,26 @@
],
"title": "SerializedForceSyncAction"
},
"SerializedMarkTaskPendingAction": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"MARK_TASK_PENDING"
]
},
"taskId": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"taskId",
"type"
],
"title": "SerializedMarkTaskPendingAction"
},
"SerializedRemoveInstalledAppsAction": {
"type": "object",
"properties": {
+109 -33
View File
@@ -21,6 +21,9 @@
{
"$ref": "#/definitions/SerializedDeleteCategoryAction"
},
{
"$ref": "#/definitions/SerializedDeleteChildTaskAction"
},
{
"$ref": "#/definitions/SerializedDeleteTimeLimitRuleAction"
},
@@ -43,7 +46,7 @@
"$ref": "#/definitions/SerializeResetCategoryNetworkIdsAction"
},
{
"$ref": "#/definitions/SerializedResetParentBlockedTimesAction"
"$ref": "#/definitions/SerializedReviewChildTaskAction"
},
{
"$ref": "#/definitions/SerializedSetCategoryExtraTimeAction"
@@ -108,6 +111,9 @@
{
"$ref": "#/definitions/SerializedUpdateCategoryTitleAction"
},
{
"$ref": "#/definitions/SerializedUpdateChildTaskAction"
},
{
"$ref": "#/definitions/SerializedUpdateDeviceNameAction"
},
@@ -117,9 +123,6 @@
{
"$ref": "#/definitions/SerialiizedUpdateNetworkTimeVerificationAction"
},
{
"$ref": "#/definitions/SerializedUpdateParentBlockedTimesAction"
},
{
"$ref": "#/definitions/SerializedUpdateParentNotificationFlagsAction"
},
@@ -131,6 +134,9 @@
},
{
"$ref": "#/definitions/SerializedUpdateUserLimitLoginCategory"
},
{
"$ref": "#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration"
}
],
"definitions": {
@@ -362,6 +368,9 @@
},
"pause": {
"type": "number"
},
"perDay": {
"type": "boolean"
}
},
"additionalProperties": false,
@@ -394,6 +403,26 @@
],
"title": "SerializedDeleteCategoryAction"
},
"SerializedDeleteChildTaskAction": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"DELETE_CHILD_TASK"
]
},
"taskId": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"taskId",
"type"
],
"title": "SerializedDeleteChildTaskAction"
},
"SerializedDeleteTimeLimitRuleAction": {
"type": "object",
"properties": {
@@ -591,25 +620,33 @@
],
"title": "SerializeResetCategoryNetworkIdsAction"
},
"SerializedResetParentBlockedTimesAction": {
"SerializedReviewChildTaskAction": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"RESET_PARENT_BLOCKED_TIMES"
"REVIEW_CHILD_TASK"
]
},
"parentId": {
"taskId": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"time": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"parentId",
"ok",
"taskId",
"time",
"type"
],
"title": "SerializedResetParentBlockedTimesAction"
"title": "SerializedReviewChildTaskAction"
},
"SerializedSetCategoryExtraTimeAction": {
"type": "object",
@@ -1126,6 +1163,42 @@
],
"title": "SerializedUpdateCategoryTitleAction"
},
"SerializedUpdateChildTaskAction": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"UPDATE_CHILD_TASK"
]
},
"isNew": {
"type": "boolean"
},
"taskId": {
"type": "string"
},
"categoryId": {
"type": "string"
},
"taskTitle": {
"type": "string"
},
"extraTimeDuration": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"categoryId",
"extraTimeDuration",
"isNew",
"taskId",
"taskTitle",
"type"
],
"title": "SerializedUpdateChildTaskAction"
},
"SerializedUpdateDeviceNameAction": {
"type": "object",
"properties": {
@@ -1203,30 +1276,6 @@
],
"title": "SerialiizedUpdateNetworkTimeVerificationAction"
},
"SerializedUpdateParentBlockedTimesAction": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"UPDATE_PARENT_BLOCKED_TIMES"
]
},
"parentId": {
"type": "string"
},
"times": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"parentId",
"times",
"type"
],
"title": "SerializedUpdateParentBlockedTimesAction"
},
"SerializedUpdateParentNotificationFlagsAction": {
"type": "object",
"properties": {
@@ -1287,6 +1336,9 @@
},
"pause": {
"type": "number"
},
"perDay": {
"type": "boolean"
}
},
"additionalProperties": false,
@@ -1349,6 +1401,30 @@
"userId"
],
"title": "SerializedUpdateUserLimitLoginCategory"
},
"SerializedUpdateUserLimitLoginPreBlockDuration": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"UPDATE_USER_LIMIT_LOGIN_PRE_BLOCK_DURATION"
]
},
"userId": {
"type": "string"
},
"preBlockDuration": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"preBlockDuration",
"type",
"userId"
],
"title": "SerializedUpdateUserLimitLoginPreBlockDuration"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
+66
View File
@@ -40,6 +40,12 @@
"$ref": "#/definitions/ServerUpdatedTimeLimitRules"
}
},
"tasks": {
"type": "array",
"items": {
"$ref": "#/definitions/ServerUpdatedCategoryTasks"
}
},
"users": {
"$ref": "#/definitions/ServerUserList"
},
@@ -589,6 +595,9 @@
},
"pause": {
"type": "number"
},
"perDay": {
"type": "boolean"
}
},
"additionalProperties": false,
@@ -599,11 +608,65 @@
"id",
"maxTime",
"pause",
"perDay",
"session",
"start"
],
"title": "ServerTimeLimitRule"
},
"ServerUpdatedCategoryTasks": {
"type": "object",
"properties": {
"categoryId": {
"type": "string"
},
"version": {
"type": "string"
},
"tasks": {
"type": "array",
"items": {
"$ref": "#/definitions/ServerUpdatedCategoryTask"
}
}
},
"additionalProperties": false,
"required": [
"categoryId",
"tasks",
"version"
],
"title": "ServerUpdatedCategoryTasks"
},
"ServerUpdatedCategoryTask": {
"type": "object",
"properties": {
"i": {
"type": "string"
},
"t": {
"type": "string"
},
"d": {
"type": "number"
},
"p": {
"type": "boolean"
},
"l": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"d",
"i",
"l",
"p",
"t"
],
"title": "ServerUpdatedCategoryTask"
},
"ServerUserList": {
"type": "object",
"properties": {
@@ -675,6 +738,9 @@
},
"llc": {
"type": "string"
},
"pbd": {
"type": "number"
}
},
"additionalProperties": false,
@@ -0,0 +1,16 @@
# Untitled string in ClientPullChangesRequest Schema
```txt
https://timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/tasks
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ----------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [ClientPullChangesRequest.schema.json\*](ClientPullChangesRequest.schema.json "open original schema") |
## tasks Type
`string`
@@ -23,6 +23,7 @@ https://timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus
| [apps](#apps) | `string` | Required | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-apps.md "https&#x3A;//timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/apps") |
| [rules](#rules) | `string` | Required | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-rules.md "https&#x3A;//timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/rules") |
| [usedTime](#usedTime) | `string` | Required | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-usedtime.md "https&#x3A;//timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/usedTime") |
| [tasks](#tasks) | `string` | Optional | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-tasks.md "https&#x3A;//timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/tasks") |
## base
@@ -87,3 +88,19 @@ https://timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus
### usedTime Type
`string`
## tasks
`tasks`
- is optional
- Type: `string`
- cannot be null
- defined in: [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-tasks.md "https&#x3A;//timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/tasks")
### tasks Type
`string`
+17
View File
@@ -127,6 +127,7 @@ Reference this group by using
| [apps](#apps) | `string` | Required | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-apps.md "https&#x3A;//timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/apps") |
| [rules](#rules) | `string` | Required | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-rules.md "https&#x3A;//timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/rules") |
| [usedTime](#usedTime) | `string` | Required | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-usedtime.md "https&#x3A;//timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/usedTime") |
| [tasks](#tasks) | `string` | Optional | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-tasks.md "https&#x3A;//timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/tasks") |
### base
@@ -192,6 +193,22 @@ Reference this group by using
`string`
### tasks
`tasks`
- is optional
- Type: `string`
- cannot be null
- defined in: [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-tasks.md "https&#x3A;//timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/tasks")
#### tasks Type
`string`
# ClientPullChangesRequest Properties
| Property | Type | Required | Nullable | Defined by |
@@ -0,0 +1,16 @@
# Untitled string in SerializedAppLogicAction Schema
```txt
https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties/taskId
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ----------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedAppLogicAction.schema.json\*](SerializedAppLogicAction.schema.json "open original schema") |
## taskId Type
`string`
@@ -0,0 +1,24 @@
# Untitled string in SerializedAppLogicAction Schema
```txt
https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties/type
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ----------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedAppLogicAction.schema.json\*](SerializedAppLogicAction.schema.json "open original schema") |
## type Type
`string`
## type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :-------------------- | ----------- |
| `"MARK_TASK_PENDING"` | |
@@ -0,0 +1,16 @@
# Untitled undefined type in SerializedAppLogicAction Schema
```txt
https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ----------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedAppLogicAction.schema.json\*](SerializedAppLogicAction.schema.json "open original schema") |
## properties Type
unknown
@@ -0,0 +1,63 @@
# SerializedMarkTaskPendingAction Schema
```txt
https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ------------ | :---------------- | --------------------- | ------------------- | ----------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [SerializedAppLogicAction.schema.json\*](SerializedAppLogicAction.schema.json "open original schema") |
## SerializedMarkTaskPendingAction Type
`object` ([SerializedMarkTaskPendingAction](serializedapplogicaction-definitions-serializedmarktaskpendingaction.md))
# SerializedMarkTaskPendingAction Properties
| Property | Type | Required | Nullable | Defined by |
| :---------------- | -------- | -------- | -------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [type](#type) | `string` | Required | cannot be null | [SerializedAppLogicAction](serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-type.md "https&#x3A;//timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties/type") |
| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedAppLogicAction](serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties/taskId") |
## type
`type`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedAppLogicAction](serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-type.md "https&#x3A;//timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties/type")
### type Type
`string`
### type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :-------------------- | ----------- |
| `"MARK_TASK_PENDING"` | |
## taskId
`taskId`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedAppLogicAction](serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties/taskId")
### taskId Type
`string`
+54
View File
@@ -21,6 +21,7 @@ any of
- [SerializedAddUsedTimeAction](serializedapplogicaction-definitions-serializedaddusedtimeaction.md "check type definition")
- [SerializedAddUsedTimeActionVersion2](serializedapplogicaction-definitions-serializedaddusedtimeactionversion2.md "check type definition")
- [SerializedForceSyncAction](serializedapplogicaction-definitions-serializedforcesyncaction.md "check type definition")
- [SerializedMarkTaskPendingAction](serializedapplogicaction-definitions-serializedmarktaskpendingaction.md "check type definition")
- [SerializedRemoveInstalledAppsAction](serializedapplogicaction-definitions-serializedremoveinstalledappsaction.md "check type definition")
- [SerializedSignOutAtDeviceAction](serializedapplogicaction-definitions-serializedsignoutatdeviceaction.md "check type definition")
- [SerialiezdTriedDisablingDeviceAdminAction](serializedapplogicaction-definitions-serialiezdtrieddisablingdeviceadminaction.md "check type definition")
@@ -409,6 +410,59 @@ Reference this group by using
| :------------- | ----------- |
| `"FORCE_SYNC"` | |
## Definitions group SerializedMarkTaskPendingAction
Reference this group by using
```json
{"$ref":"https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction"}
```
| Property | Type | Required | Nullable | Defined by |
| :---------------- | -------- | -------- | -------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [type](#type) | `string` | Required | cannot be null | [SerializedAppLogicAction](serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-type.md "https&#x3A;//timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties/type") |
| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedAppLogicAction](serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties/taskId") |
### type
`type`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedAppLogicAction](serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-type.md "https&#x3A;//timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties/type")
#### type Type
`string`
#### type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :-------------------- | ----------- |
| `"MARK_TASK_PENDING"` | |
### taskId
`taskId`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedAppLogicAction](serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties/taskId")
#### taskId Type
`string`
## Definitions group SerializedRemoveInstalledAppsAction
Reference this group by using
@@ -0,0 +1,16 @@
# Untitled string in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties/taskId
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## taskId Type
`string`
@@ -0,0 +1,24 @@
# Untitled string in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties/type
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## type Type
`string`
## type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :-------------------- | ----------- |
| `"DELETE_CHILD_TASK"` | |
@@ -0,0 +1,16 @@
# Untitled undefined type in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## properties Type
unknown
@@ -0,0 +1,63 @@
# SerializedDeleteChildTaskAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ------------ | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## SerializedDeleteChildTaskAction Type
`object` ([SerializedDeleteChildTaskAction](serializedparentaction-definitions-serializeddeletechildtaskaction.md))
# SerializedDeleteChildTaskAction Properties
| Property | Type | Required | Nullable | Defined by |
| :---------------- | -------- | -------- | -------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [type](#type) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializeddeletechildtaskaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties/type") |
| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializeddeletechildtaskaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties/taskId") |
## type
`type`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializeddeletechildtaskaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties/type")
### type Type
`string`
### type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :-------------------- | ----------- |
| `"DELETE_CHILD_TASK"` | |
## taskId
`taskId`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializeddeletechildtaskaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties/taskId")
### taskId Type
`string`
@@ -0,0 +1,16 @@
# Untitled boolean in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/ok
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## ok Type
`boolean`
@@ -0,0 +1,16 @@
# Untitled string in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/taskId
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## taskId Type
`string`
@@ -0,0 +1,16 @@
# Untitled number in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/time
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## time Type
`number`
@@ -0,0 +1,24 @@
# Untitled string in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/type
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## type Type
`string`
## type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :-------------------- | ----------- |
| `"REVIEW_CHILD_TASK"` | |
@@ -0,0 +1,16 @@
# Untitled undefined type in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## properties Type
unknown
@@ -0,0 +1,97 @@
# SerializedReviewChildTaskAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ------------ | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## SerializedReviewChildTaskAction Type
`object` ([SerializedReviewChildTaskAction](serializedparentaction-definitions-serializedreviewchildtaskaction.md))
# SerializedReviewChildTaskAction Properties
| Property | Type | Required | Nullable | Defined by |
| :---------------- | --------- | -------- | -------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [type](#type) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/type") |
| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/taskId") |
| [ok](#ok) | `boolean` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-ok.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/ok") |
| [time](#time) | `number` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-time.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/time") |
## type
`type`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/type")
### type Type
`string`
### type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :-------------------- | ----------- |
| `"REVIEW_CHILD_TASK"` | |
## taskId
`taskId`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/taskId")
### taskId Type
`string`
## ok
`ok`
- is required
- Type: `boolean`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-ok.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/ok")
### ok Type
`boolean`
## time
`time`
- is required
- Type: `number`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-time.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/time")
### time Type
`number`
@@ -0,0 +1,16 @@
# Untitled boolean in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedTimeLimitRule/properties/perDay
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## perDay Type
`boolean`
@@ -28,6 +28,7 @@ https://timelimit.io/SerializedParentAction#/definitions/SerializedTimeLimitRule
| [end](#end) | `number` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedtimelimitrule-properties-end.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedTimeLimitRule/properties/end") |
| [dur](#dur) | `number` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedtimelimitrule-properties-dur.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedTimeLimitRule/properties/dur") |
| [pause](#pause) | `number` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedtimelimitrule-properties-pause.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedTimeLimitRule/properties/pause") |
| [perDay](#perDay) | `boolean` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedtimelimitrule-properties-perday.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedTimeLimitRule/properties/perDay") |
## ruleId
@@ -172,3 +173,19 @@ https://timelimit.io/SerializedParentAction#/definitions/SerializedTimeLimitRule
### pause Type
`number`
## perDay
`perDay`
- is optional
- Type: `boolean`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedtimelimitrule-properties-perday.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedTimeLimitRule/properties/perDay")
### perDay Type
`boolean`
@@ -0,0 +1,16 @@
# Untitled string in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/categoryId
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## categoryId Type
`string`
@@ -0,0 +1,16 @@
# Untitled number in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/extraTimeDuration
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## extraTimeDuration Type
`number`
@@ -0,0 +1,16 @@
# Untitled boolean in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/isNew
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## isNew Type
`boolean`
@@ -0,0 +1,16 @@
# Untitled string in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/taskId
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## taskId Type
`string`
@@ -0,0 +1,16 @@
# Untitled string in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/taskTitle
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## taskTitle Type
`string`
@@ -0,0 +1,24 @@
# Untitled string in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/type
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## type Type
`string`
## type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :-------------------- | ----------- |
| `"UPDATE_CHILD_TASK"` | |
@@ -0,0 +1,16 @@
# Untitled undefined type in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## properties Type
unknown
@@ -0,0 +1,131 @@
# SerializedUpdateChildTaskAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ------------ | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## SerializedUpdateChildTaskAction Type
`object` ([SerializedUpdateChildTaskAction](serializedparentaction-definitions-serializedupdatechildtaskaction.md))
# SerializedUpdateChildTaskAction Properties
| Property | Type | Required | Nullable | Defined by |
| :-------------------------------------- | --------- | -------- | -------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [type](#type) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/type") |
| [isNew](#isNew) | `boolean` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-isnew.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/isNew") |
| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/taskId") |
| [categoryId](#categoryId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-categoryid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/categoryId") |
| [taskTitle](#taskTitle) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-tasktitle.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/taskTitle") |
| [extraTimeDuration](#extraTimeDuration) | `number` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-extratimeduration.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/extraTimeDuration") |
## type
`type`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/type")
### type Type
`string`
### type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :-------------------- | ----------- |
| `"UPDATE_CHILD_TASK"` | |
## isNew
`isNew`
- is required
- Type: `boolean`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-isnew.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/isNew")
### isNew Type
`boolean`
## taskId
`taskId`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/taskId")
### taskId Type
`string`
## categoryId
`categoryId`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-categoryid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/categoryId")
### categoryId Type
`string`
## taskTitle
`taskTitle`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-tasktitle.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/taskTitle")
### taskTitle Type
`string`
## extraTimeDuration
`extraTimeDuration`
- is required
- Type: `number`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-extratimeduration.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/extraTimeDuration")
### extraTimeDuration Type
`number`
@@ -0,0 +1,16 @@
# Untitled boolean in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateTimelimitRuleAction/properties/perDay
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## perDay Type
`boolean`
@@ -28,6 +28,7 @@ https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateTimelim
| [end](#end) | `number` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatetimelimitruleaction-properties-end.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateTimelimitRuleAction/properties/end") |
| [dur](#dur) | `number` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatetimelimitruleaction-properties-dur.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateTimelimitRuleAction/properties/dur") |
| [pause](#pause) | `number` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatetimelimitruleaction-properties-pause.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateTimelimitRuleAction/properties/pause") |
| [perDay](#perDay) | `boolean` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatetimelimitruleaction-properties-perday.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateTimelimitRuleAction/properties/perDay") |
## type
@@ -180,3 +181,19 @@ https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateTimelim
### pause Type
`number`
## perDay
`perDay`
- is optional
- Type: `boolean`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdatetimelimitruleaction-properties-perday.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateTimelimitRuleAction/properties/perDay")
### perDay Type
`boolean`
@@ -0,0 +1,16 @@
# Untitled number in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/preBlockDuration
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## preBlockDuration Type
`number`
@@ -0,0 +1,24 @@
# Untitled string in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/type
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## type Type
`string`
## type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :--------------------------------------------- | ----------- |
| `"UPDATE_USER_LIMIT_LOGIN_PRE_BLOCK_DURATION"` | |
@@ -0,0 +1,16 @@
# Untitled string in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/userId
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## userId Type
`string`
@@ -0,0 +1,16 @@
# Untitled undefined type in SerializedParentAction Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## properties Type
unknown
@@ -0,0 +1,80 @@
# SerializedUpdateUserLimitLoginPreBlockDuration Schema
```txt
https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ------------ | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [SerializedParentAction.schema.json\*](SerializedParentAction.schema.json "open original schema") |
## SerializedUpdateUserLimitLoginPreBlockDuration Type
`object` ([SerializedUpdateUserLimitLoginPreBlockDuration](serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration.md))
# SerializedUpdateUserLimitLoginPreBlockDuration Properties
| Property | Type | Required | Nullable | Defined by |
| :------------------------------------ | -------- | -------- | -------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [type](#type) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/type") |
| [userId](#userId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration-properties-userid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/userId") |
| [preBlockDuration](#preBlockDuration) | `number` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration-properties-preblockduration.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/preBlockDuration") |
## type
`type`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/type")
### type Type
`string`
### type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :--------------------------------------------- | ----------- |
| `"UPDATE_USER_LIMIT_LOGIN_PRE_BLOCK_DURATION"` | |
## userId
`userId`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration-properties-userid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/userId")
### userId Type
`string`
## preBlockDuration
`preBlockDuration`
- is required
- Type: `number`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration-properties-preblockduration.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/preBlockDuration")
### preBlockDuration Type
`number`
+330 -86
View File
@@ -24,6 +24,7 @@ any of
- [SerializedCreateCategoryAction](serializedparentaction-definitions-serializedcreatecategoryaction.md "check type definition")
- [SerializedCreateTimelimtRuleAction](serializedparentaction-definitions-serializedcreatetimelimtruleaction.md "check type definition")
- [SerializedDeleteCategoryAction](serializedparentaction-definitions-serializeddeletecategoryaction.md "check type definition")
- [SerializedDeleteChildTaskAction](serializedparentaction-definitions-serializeddeletechildtaskaction.md "check type definition")
- [SerializedDeleteTimeLimitRuleAction](serializedparentaction-definitions-serializeddeletetimelimitruleaction.md "check type definition")
- [SerializedIgnoreManipulationAction](serializedparentaction-definitions-serializedignoremanipulationaction.md "check type definition")
- [SerializedIncrementCategoryExtraTimeAction](serializedparentaction-definitions-serializedincrementcategoryextratimeaction.md "check type definition")
@@ -31,7 +32,7 @@ any of
- [SerializedRemoveUserAction](serializedparentaction-definitions-serializedremoveuseraction.md "check type definition")
- [SerializedRenameChildAction](serializedparentaction-definitions-serializedrenamechildaction.md "check type definition")
- [SerializeResetCategoryNetworkIdsAction](serializedparentaction-definitions-serializeresetcategorynetworkidsaction.md "check type definition")
- [SerializedResetParentBlockedTimesAction](serializedparentaction-definitions-serializedresetparentblockedtimesaction.md "check type definition")
- [SerializedReviewChildTaskAction](serializedparentaction-definitions-serializedreviewchildtaskaction.md "check type definition")
- [SerializedSetCategoryExtraTimeAction](serializedparentaction-definitions-serializedsetcategoryextratimeaction.md "check type definition")
- [SerializedSetCategoryForUnassignedAppsAction](serializedparentaction-definitions-serializedsetcategoryforunassignedappsaction.md "check type definition")
- [SerializedSetChildPasswordAction](serializedparentaction-definitions-serializedsetchildpasswordaction.md "check type definition")
@@ -53,14 +54,15 @@ any of
- [SerializedUpdateCategoryTemporarilyBlockedAction](serializedparentaction-definitions-serializedupdatecategorytemporarilyblockedaction.md "check type definition")
- [SerializedUpdateCategoryTimeWarningsAction](serializedparentaction-definitions-serializedupdatecategorytimewarningsaction.md "check type definition")
- [SerializedUpdateCategoryTitleAction](serializedparentaction-definitions-serializedupdatecategorytitleaction.md "check type definition")
- [SerializedUpdateChildTaskAction](serializedparentaction-definitions-serializedupdatechildtaskaction.md "check type definition")
- [SerializedUpdateDeviceNameAction](serializedparentaction-definitions-serializedupdatedevicenameaction.md "check type definition")
- [SerializedUpdateEnableActivityLevelBlockingAction](serializedparentaction-definitions-serializedupdateenableactivitylevelblockingaction.md "check type definition")
- [SerialiizedUpdateNetworkTimeVerificationAction](serializedparentaction-definitions-serialiizedupdatenetworktimeverificationaction.md "check type definition")
- [SerializedUpdateParentBlockedTimesAction](serializedparentaction-definitions-serializedupdateparentblockedtimesaction.md "check type definition")
- [SerializedUpdateParentNotificationFlagsAction](serializedparentaction-definitions-serializedupdateparentnotificationflagsaction.md "check type definition")
- [SerializedUpdateTimelimitRuleAction](serializedparentaction-definitions-serializedupdatetimelimitruleaction.md "check type definition")
- [SerializedUpdateUserFlagsAction](serializedparentaction-definitions-serializedupdateuserflagsaction.md "check type definition")
- [SerializedUpdateUserLimitLoginCategory](serializedparentaction-definitions-serializedupdateuserlimitlogincategory.md "check type definition")
- [SerializedUpdateUserLimitLoginPreBlockDuration](serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration.md "check type definition")
# SerializedParentAction Definitions
@@ -693,6 +695,7 @@ Reference this group by using
| [end](#end) | `number` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedtimelimitrule-properties-end.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedTimeLimitRule/properties/end") |
| [dur](#dur) | `number` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedtimelimitrule-properties-dur.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedTimeLimitRule/properties/dur") |
| [pause](#pause) | `number` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedtimelimitrule-properties-pause.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedTimeLimitRule/properties/pause") |
| [perDay](#perDay) | `boolean` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedtimelimitrule-properties-perday.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedTimeLimitRule/properties/perDay") |
### ruleId
@@ -838,6 +841,22 @@ Reference this group by using
`number`
### perDay
`perDay`
- is optional
- Type: `boolean`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedtimelimitrule-properties-perday.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedTimeLimitRule/properties/perDay")
#### perDay Type
`boolean`
## Definitions group SerializedDeleteCategoryAction
Reference this group by using
@@ -891,6 +910,59 @@ Reference this group by using
`string`
## Definitions group SerializedDeleteChildTaskAction
Reference this group by using
```json
{"$ref":"https://timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction"}
```
| Property | Type | Required | Nullable | Defined by |
| :---------------- | -------- | -------- | -------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [type](#type) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializeddeletechildtaskaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties/type") |
| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializeddeletechildtaskaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties/taskId") |
### type
`type`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializeddeletechildtaskaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties/type")
#### type Type
`string`
#### type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :-------------------- | ----------- |
| `"DELETE_CHILD_TASK"` | |
### taskId
`taskId`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializeddeletechildtaskaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties/taskId")
#### taskId Type
`string`
## Definitions group SerializedDeleteTimeLimitRuleAction
Reference this group by using
@@ -1517,18 +1589,20 @@ Reference this group by using
`string`
## Definitions group SerializedResetParentBlockedTimesAction
## Definitions group SerializedReviewChildTaskAction
Reference this group by using
```json
{"$ref":"https://timelimit.io/SerializedParentAction#/definitions/SerializedResetParentBlockedTimesAction"}
{"$ref":"https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction"}
```
| Property | Type | Required | Nullable | Defined by |
| :-------------------- | -------- | -------- | -------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [type](#type) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedresetparentblockedtimesaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedResetParentBlockedTimesAction/properties/type") |
| [parentId](#parentId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedresetparentblockedtimesaction-properties-parentid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedResetParentBlockedTimesAction/properties/parentId") |
| Property | Type | Required | Nullable | Defined by |
| :---------------- | --------- | -------- | -------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [type](#type) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/type") |
| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/taskId") |
| [ok](#ok) | `boolean` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-ok.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/ok") |
| [time](#time) | `number` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-time.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/time") |
### type
@@ -1540,7 +1614,7 @@ Reference this group by using
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedresetparentblockedtimesaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedResetParentBlockedTimesAction/properties/type")
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/type")
#### type Type
@@ -1550,26 +1624,58 @@ Reference this group by using
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :----------------------------- | ----------- |
| `"RESET_PARENT_BLOCKED_TIMES"` | |
| Value | Explanation |
| :-------------------- | ----------- |
| `"REVIEW_CHILD_TASK"` | |
### parentId
### taskId
`parentId`
`taskId`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedresetparentblockedtimesaction-properties-parentid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedResetParentBlockedTimesAction/properties/parentId")
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/taskId")
#### parentId Type
#### taskId Type
`string`
### ok
`ok`
- is required
- Type: `boolean`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-ok.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/ok")
#### ok Type
`boolean`
### time
`time`
- is required
- Type: `number`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-time.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/time")
#### time Type
`number`
## Definitions group SerializedSetCategoryExtraTimeAction
Reference this group by using
@@ -3091,6 +3197,127 @@ Reference this group by using
`string`
## Definitions group SerializedUpdateChildTaskAction
Reference this group by using
```json
{"$ref":"https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction"}
```
| Property | Type | Required | Nullable | Defined by |
| :-------------------------------------- | --------- | -------- | -------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [type](#type) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/type") |
| [isNew](#isNew) | `boolean` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-isnew.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/isNew") |
| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/taskId") |
| [categoryId](#categoryId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-categoryid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/categoryId") |
| [taskTitle](#taskTitle) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-tasktitle.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/taskTitle") |
| [extraTimeDuration](#extraTimeDuration) | `number` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-extratimeduration.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/extraTimeDuration") |
### type
`type`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/type")
#### type Type
`string`
#### type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :-------------------- | ----------- |
| `"UPDATE_CHILD_TASK"` | |
### isNew
`isNew`
- is required
- Type: `boolean`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-isnew.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/isNew")
#### isNew Type
`boolean`
### taskId
`taskId`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-taskid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/taskId")
#### taskId Type
`string`
### categoryId
`categoryId`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-categoryid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/categoryId")
#### categoryId Type
`string`
### taskTitle
`taskTitle`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-tasktitle.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/taskTitle")
#### taskTitle Type
`string`
### extraTimeDuration
`extraTimeDuration`
- is required
- Type: `number`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-extratimeduration.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/extraTimeDuration")
#### extraTimeDuration Type
`number`
## Definitions group SerializedUpdateDeviceNameAction
Reference this group by using
@@ -3311,76 +3538,6 @@ Reference this group by using
| `"enabled"` | |
| `"if possible"` | |
## Definitions group SerializedUpdateParentBlockedTimesAction
Reference this group by using
```json
{"$ref":"https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateParentBlockedTimesAction"}
```
| Property | Type | Required | Nullable | Defined by |
| :-------------------- | -------- | -------- | -------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [type](#type) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdateparentblockedtimesaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateParentBlockedTimesAction/properties/type") |
| [parentId](#parentId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdateparentblockedtimesaction-properties-parentid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateParentBlockedTimesAction/properties/parentId") |
| [times](#times) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdateparentblockedtimesaction-properties-times.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateParentBlockedTimesAction/properties/times") |
### type
`type`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdateparentblockedtimesaction-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateParentBlockedTimesAction/properties/type")
#### type Type
`string`
#### type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :------------------------------ | ----------- |
| `"UPDATE_PARENT_BLOCKED_TIMES"` | |
### parentId
`parentId`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdateparentblockedtimesaction-properties-parentid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateParentBlockedTimesAction/properties/parentId")
#### parentId Type
`string`
### times
`times`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdateparentblockedtimesaction-properties-times.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateParentBlockedTimesAction/properties/times")
#### times Type
`string`
## Definitions group SerializedUpdateParentNotificationFlagsAction
Reference this group by using
@@ -3487,6 +3644,7 @@ Reference this group by using
| [end](#end) | `number` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatetimelimitruleaction-properties-end.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateTimelimitRuleAction/properties/end") |
| [dur](#dur) | `number` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatetimelimitruleaction-properties-dur.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateTimelimitRuleAction/properties/dur") |
| [pause](#pause) | `number` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatetimelimitruleaction-properties-pause.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateTimelimitRuleAction/properties/pause") |
| [perDay](#perDay) | `boolean` | Optional | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatetimelimitruleaction-properties-perday.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateTimelimitRuleAction/properties/perDay") |
### type
@@ -3640,6 +3798,22 @@ Reference this group by using
`number`
### perDay
`perDay`
- is optional
- Type: `boolean`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdatetimelimitruleaction-properties-perday.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateTimelimitRuleAction/properties/perDay")
#### perDay Type
`boolean`
## Definitions group SerializedUpdateUserFlagsAction
Reference this group by using
@@ -3796,3 +3970,73 @@ Reference this group by using
#### categoryId Type
`string`
## Definitions group SerializedUpdateUserLimitLoginPreBlockDuration
Reference this group by using
```json
{"$ref":"https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration"}
```
| Property | Type | Required | Nullable | Defined by |
| :------------------------------------ | -------- | -------- | -------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [type](#type) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/type") |
| [userId](#userId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration-properties-userid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/userId") |
| [preBlockDuration](#preBlockDuration) | `number` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration-properties-preblockduration.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/preBlockDuration") |
### type
`type`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration-properties-type.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/type")
#### type Type
`string`
#### type Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :--------------------------------------------- | ----------- |
| `"UPDATE_USER_LIMIT_LOGIN_PRE_BLOCK_DURATION"` | |
### userId
`userId`
- is required
- Type: `string`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration-properties-userid.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/userId")
#### userId Type
`string`
### preBlockDuration
`preBlockDuration`
- is required
- Type: `number`
- cannot be null
- defined in: [SerializedParentAction](serializedparentaction-definitions-serializedupdateuserlimitloginpreblockduration-properties-preblockduration.md "https&#x3A;//timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration/properties/preBlockDuration")
#### preBlockDuration Type
`number`
@@ -0,0 +1,16 @@
# Untitled boolean in ServerDataStatus Schema
```txt
https://timelimit.io/ServerDataStatus#/definitions/ServerTimeLimitRule/properties/perDay
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## perDay Type
`boolean`
@@ -27,6 +27,7 @@ https://timelimit.io/ServerDataStatus#/definitions/ServerTimeLimitRule
| [end](#end) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-servertimelimitrule-properties-end.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerTimeLimitRule/properties/end") |
| [session](#session) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-servertimelimitrule-properties-session.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerTimeLimitRule/properties/session") |
| [pause](#pause) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-servertimelimitrule-properties-pause.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerTimeLimitRule/properties/pause") |
| [perDay](#perDay) | `boolean` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-servertimelimitrule-properties-perday.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerTimeLimitRule/properties/perDay") |
## id
@@ -155,3 +156,19 @@ https://timelimit.io/ServerDataStatus#/definitions/ServerTimeLimitRule
### pause Type
`number`
## perDay
`perDay`
- is required
- Type: `boolean`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-servertimelimitrule-properties-perday.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerTimeLimitRule/properties/perDay")
### perDay Type
`boolean`
@@ -0,0 +1,16 @@
# Untitled number in ServerDataStatus Schema
```txt
https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/d
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## d Type
`number`
@@ -0,0 +1,16 @@
# Untitled string in ServerDataStatus Schema
```txt
https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/i
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## i Type
`string`
@@ -0,0 +1,16 @@
# Untitled number in ServerDataStatus Schema
```txt
https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/l
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## l Type
`number`
@@ -0,0 +1,16 @@
# Untitled boolean in ServerDataStatus Schema
```txt
https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/p
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## p Type
`boolean`
@@ -0,0 +1,16 @@
# Untitled string in ServerDataStatus Schema
```txt
https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/t
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## t Type
`string`
@@ -0,0 +1,16 @@
# Untitled undefined type in ServerDataStatus Schema
```txt
https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## properties Type
unknown
@@ -0,0 +1,106 @@
# ServerUpdatedCategoryTask Schema
```txt
https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ------------ | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## ServerUpdatedCategoryTask Type
`object` ([ServerUpdatedCategoryTask](serverdatastatus-definitions-serverupdatedcategorytask.md))
# ServerUpdatedCategoryTask Properties
| Property | Type | Required | Nullable | Defined by |
| :------- | --------- | -------- | -------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [i](#i) | `string` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-i.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/i") |
| [t](#t) | `string` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-t.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/t") |
| [d](#d) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-d.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/d") |
| [p](#p) | `boolean` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-p.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/p") |
| [l](#l) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-l.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/l") |
## i
`i`
- is required
- Type: `string`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-i.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/i")
### i Type
`string`
## t
`t`
- is required
- Type: `string`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-t.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/t")
### t Type
`string`
## d
`d`
- is required
- Type: `number`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-d.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/d")
### d Type
`number`
## p
`p`
- is required
- Type: `boolean`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-p.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/p")
### p Type
`boolean`
## l
`l`
- is required
- Type: `number`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-l.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/l")
### l Type
`number`
@@ -0,0 +1,16 @@
# Untitled string in ServerDataStatus Schema
```txt
https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/categoryId
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## categoryId Type
`string`
@@ -0,0 +1,16 @@
# Untitled array in ServerDataStatus Schema
```txt
https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/tasks
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## tasks Type
`object[]` ([ServerUpdatedCategoryTask](serverdatastatus-definitions-serverupdatedcategorytask.md))
@@ -0,0 +1,16 @@
# Untitled string in ServerDataStatus Schema
```txt
https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/version
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## version Type
`string`
@@ -0,0 +1,16 @@
# Untitled undefined type in ServerDataStatus Schema
```txt
https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## properties Type
unknown
@@ -0,0 +1,72 @@
# ServerUpdatedCategoryTasks Schema
```txt
https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ------------ | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## ServerUpdatedCategoryTasks Type
`object` ([ServerUpdatedCategoryTasks](serverdatastatus-definitions-serverupdatedcategorytasks.md))
# ServerUpdatedCategoryTasks Properties
| Property | Type | Required | Nullable | Defined by |
| :------------------------ | -------- | -------- | -------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [categoryId](#categoryId) | `string` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-categoryid.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/categoryId") |
| [version](#version) | `string` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-version.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/version") |
| [tasks](#tasks) | `array` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-tasks.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/tasks") |
## categoryId
`categoryId`
- is required
- Type: `string`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-categoryid.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/categoryId")
### categoryId Type
`string`
## version
`version`
- is required
- Type: `string`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-version.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/version")
### version Type
`string`
## tasks
`tasks`
- is required
- Type: `object[]` ([ServerUpdatedCategoryTask](serverdatastatus-definitions-serverupdatedcategorytask.md))
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-tasks.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/tasks")
### tasks Type
`object[]` ([ServerUpdatedCategoryTask](serverdatastatus-definitions-serverupdatedcategorytask.md))
@@ -0,0 +1,16 @@
# Untitled number in ServerDataStatus Schema
```txt
https://timelimit.io/ServerDataStatus#/definitions/ServerUserEntry/properties/pbd
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## pbd Type
`number`
@@ -34,6 +34,7 @@ https://timelimit.io/ServerDataStatus#/definitions/ServerUserEntry
| [blockedTimes](#blockedTimes) | `string` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serveruserentry-properties-blockedtimes.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUserEntry/properties/blockedTimes") |
| [flags](#flags) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serveruserentry-properties-flags.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUserEntry/properties/flags") |
| [llc](#llc) | `string` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serveruserentry-properties-llc.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUserEntry/properties/llc") |
| [pbd](#pbd) | `number` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serveruserentry-properties-pbd.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUserEntry/properties/pbd") |
## id
@@ -283,3 +284,19 @@ https://timelimit.io/ServerDataStatus#/definitions/ServerUserEntry
### llc Type
`string`
## pbd
`pbd`
- is optional
- Type: `number`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serveruserentry-properties-pbd.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUserEntry/properties/pbd")
### pbd Type
`number`
@@ -0,0 +1,16 @@
# Untitled array in ServerDataStatus Schema
```txt
https://timelimit.io/ServerDataStatus#/properties/tasks
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | ---------- | -------------- | ----------------------- | :---------------- | --------------------- | ------------------- | ------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [ServerDataStatus.schema.json\*](ServerDataStatus.schema.json "open original schema") |
## tasks Type
`object[]` ([ServerUpdatedCategoryTasks](serverdatastatus-definitions-serverupdatedcategorytasks.md))
+209
View File
@@ -1709,6 +1709,7 @@ Reference this group by using
| [end](#end) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-servertimelimitrule-properties-end.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerTimeLimitRule/properties/end") |
| [session](#session) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-servertimelimitrule-properties-session.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerTimeLimitRule/properties/session") |
| [pause](#pause) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-servertimelimitrule-properties-pause.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerTimeLimitRule/properties/pause") |
| [perDay](#perDay) | `boolean` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-servertimelimitrule-properties-perday.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerTimeLimitRule/properties/perDay") |
### id
@@ -1838,6 +1839,180 @@ Reference this group by using
`number`
### perDay
`perDay`
- is required
- Type: `boolean`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-servertimelimitrule-properties-perday.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerTimeLimitRule/properties/perDay")
#### perDay Type
`boolean`
## Definitions group ServerUpdatedCategoryTasks
Reference this group by using
```json
{"$ref":"https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks"}
```
| Property | Type | Required | Nullable | Defined by |
| :------------------------ | -------- | -------- | -------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [categoryId](#categoryId) | `string` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-categoryid.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/categoryId") |
| [version](#version) | `string` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-version.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/version") |
| [tasks](#tasks) | `array` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-tasks.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/tasks") |
### categoryId
`categoryId`
- is required
- Type: `string`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-categoryid.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/categoryId")
#### categoryId Type
`string`
### version
`version`
- is required
- Type: `string`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-version.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/version")
#### version Type
`string`
### tasks
`tasks`
- is required
- Type: `object[]` ([ServerUpdatedCategoryTask](serverdatastatus-definitions-serverupdatedcategorytask.md))
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-tasks.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/tasks")
#### tasks Type
`object[]` ([ServerUpdatedCategoryTask](serverdatastatus-definitions-serverupdatedcategorytask.md))
## Definitions group ServerUpdatedCategoryTask
Reference this group by using
```json
{"$ref":"https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask"}
```
| Property | Type | Required | Nullable | Defined by |
| :------- | --------- | -------- | -------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [i](#i) | `string` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-i.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/i") |
| [t](#t) | `string` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-t.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/t") |
| [d](#d) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-d.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/d") |
| [p](#p) | `boolean` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-p.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/p") |
| [l](#l) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-l.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/l") |
### i
`i`
- is required
- Type: `string`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-i.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/i")
#### i Type
`string`
### t
`t`
- is required
- Type: `string`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-t.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/t")
#### t Type
`string`
### d
`d`
- is required
- Type: `number`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-d.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/d")
#### d Type
`number`
### p
`p`
- is required
- Type: `boolean`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-p.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/p")
#### p Type
`boolean`
### l
`l`
- is required
- Type: `number`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-l.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/l")
#### l Type
`number`
## Definitions group ServerUserList
Reference this group by using
@@ -1908,6 +2083,7 @@ Reference this group by using
| [blockedTimes](#blockedTimes) | `string` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serveruserentry-properties-blockedtimes.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUserEntry/properties/blockedTimes") |
| [flags](#flags) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serveruserentry-properties-flags.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUserEntry/properties/flags") |
| [llc](#llc) | `string` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serveruserentry-properties-llc.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUserEntry/properties/llc") |
| [pbd](#pbd) | `number` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serveruserentry-properties-pbd.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUserEntry/properties/pbd") |
### id
@@ -2158,6 +2334,22 @@ Reference this group by using
`string`
### pbd
`pbd`
- is optional
- Type: `number`
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-definitions-serveruserentry-properties-pbd.md "https&#x3A;//timelimit.io/ServerDataStatus#/definitions/ServerUserEntry/properties/pbd")
#### pbd Type
`number`
# ServerDataStatus Properties
| Property | Type | Required | Nullable | Defined by |
@@ -2169,6 +2361,7 @@ Reference this group by using
| [categoryApp](#categoryApp) | `array` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-properties-categoryapp.md "https&#x3A;//timelimit.io/ServerDataStatus#/properties/categoryApp") |
| [usedTimes](#usedTimes) | `array` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-properties-usedtimes.md "https&#x3A;//timelimit.io/ServerDataStatus#/properties/usedTimes") |
| [rules](#rules) | `array` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-properties-rules.md "https&#x3A;//timelimit.io/ServerDataStatus#/properties/rules") |
| [tasks](#tasks) | `array` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-properties-tasks.md "https&#x3A;//timelimit.io/ServerDataStatus#/properties/tasks") |
| [users](#users) | `object` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serveruserlist.md "https&#x3A;//timelimit.io/ServerDataStatus#/properties/users") |
| [fullVersion](#fullVersion) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-properties-fullversion.md "https&#x3A;//timelimit.io/ServerDataStatus#/properties/fullVersion") |
| [message](#message) | `string` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-properties-message.md "https&#x3A;//timelimit.io/ServerDataStatus#/properties/message") |
@@ -2285,6 +2478,22 @@ Reference this group by using
`object[]` ([ServerUpdatedTimeLimitRules](serverdatastatus-definitions-serverupdatedtimelimitrules.md))
## tasks
`tasks`
- is optional
- Type: `object[]` ([ServerUpdatedCategoryTasks](serverdatastatus-definitions-serverupdatedcategorytasks.md))
- cannot be null
- defined in: [ServerDataStatus](serverdatastatus-properties-tasks.md "https&#x3A;//timelimit.io/ServerDataStatus#/properties/tasks")
### tasks Type
`object[]` ([ServerUpdatedCategoryTasks](serverdatastatus-definitions-serverupdatedcategorytasks.md))
## users
+5
View File
@@ -41,3 +41,8 @@ server {
}
}
```
You can obtain valid certificates using certbot. If your server is not public,
then avoid serving it on a subdomain called timelimit. Most CAs provide a public
log of all issued certificates and using this, it is easy to find your timelimit-server
installation if the certificate is for ``timelimit.[yourdomain].[tld]``.
+287
View File
@@ -0,0 +1,287 @@
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<title> </title>
<!--[if !mso]><!-- -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#outlook a {
padding: 0;
}
body {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table,
td {
border-collapse: collapse;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
img {
border: 0;
height: auto;
line-height: 100%;
outline: none;
text-decoration: none;
-ms-interpolation-mode: bicubic;
}
p {
display: block;
margin: 13px 0;
}
</style>
<!--[if mso]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<!--[if lte mso 11]>
<style type="text/css">
.mj-outlook-group-fix { width:100% !important; }
</style>
<![endif]-->
<!--[if !mso]><!-->
<!--<![endif]-->
<style type="text/css">
@media only screen and (min-width:480px) {
.mj-column-per-100 {
width: 100% !important;
max-width: 100%;
}
}
</style>
<style type="text/css">
</style>
</head>
<body>
<div style="">
<!--[if mso | IE]>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="background:#009688;background-color:#009688;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#009688;background-color:#009688;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:20px;line-height:1;text-align:left;color:#ffffff;">TimeLimit</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:left;color:#000000;">
<p>
<%= child %> hat angegeben, dass die Aufgabe
<%= task %> erledigt wurde. Die angeblich erledigten Aufgaben werden auf der Startseite der TimeLimit-App angezeigt. Dort kann die Erledigung bestätigt werden. </p>
<p> Da die Anzahl der Benachrichtigungs-E-Mails begrenzt ist erhalten Sie möglicherweise nicht bei jeder Aufgabenerledigung eine derartige E-Mail. </p>
<p>
<%= child %> reported that
<%= task %> was finished. You can see the tasks which are marked as finished at the overview screen of the TimeLimit application. You can confirm the task completion there. </p>
<p> There are limits for the notifications mails so that it can happen that you do not get a mail for each completed task. </p>
</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td style="font-size:0px;padding:10px 25px;word-break:break-word;">
<p style="border-top:dashed 1px lightgrey;font-size:1px;margin:0px auto;width:100%;"> </p>
<!--[if mso | IE]>
<table
align="center" border="0" cellpadding="0" cellspacing="0" style="border-top:dashed 1px lightgrey;font-size:1px;margin:0px auto;width:550px;" role="presentation" width="550px"
>
<tr>
<td style="height:0;line-height:0;">
&nbsp;
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:left;color:#000000;">
<p> Sie erhalten diese Nachricht, weil Sie E-Mail-Benachrichtigungen in TimeLimit aktiviert haben. Sie können die Nachrichten in der TimeLimit-App abbestellen. Falls Sie Fragen haben können Sie einfach auf diese E-Mail antworten. </p>
<p> You got this mail because you enable mail notifications for this in TimeLimit. You can disable getting these messages in the TimeLimit App. If you have got any questions, then you can reply to this messagge. </p>
<p> &copy;
<%= mailimprint %>
</p>
</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</div>
</body>
</html>
+57
View File
@@ -0,0 +1,57 @@
<mjml>
<mj-body>
<mj-section background-color="#009688">
<mj-column>
<mj-text font-size="20px" color="#ffffff">TimeLimit</mj-text>
</mj-column>
</mj-section>
<mj-section>
<mj-column>
<mj-text>
<p>
<%= child %> hat angegeben, dass die Aufgabe <%= task %> erledigt wurde.
Die angeblich erledigten Aufgaben werden auf der Startseite der TimeLimit-App
angezeigt. Dort kann die Erledigung bestätigt werden.
</p>
<p>
Da die Anzahl der Benachrichtigungs-E-Mails begrenzt ist erhalten Sie
möglicherweise nicht bei jeder Aufgabenerledigung eine derartige E-Mail.
</p>
<p>
<%= child %> reported that <%= task %> was finished.
You can see the tasks which are marked as finished at the overview screen
of the TimeLimit application. You can confirm the task completion there.
</p>
<p>
There are limits for the notifications mails so that it can happen that
you do not get a mail for each completed task.
</p>
</mj-text>
</mj-column>
</mj-section>
<mj-section>
<mj-column>
<mj-divider border-width="1px" border-style="dashed" border-color="lightgrey" />
</mj-column>
</mj-section>
<mj-section>
<mj-column>
<mj-text>
<p>
Sie erhalten diese Nachricht, weil Sie E-Mail-Benachrichtigungen in TimeLimit aktiviert haben.
Sie können die Nachrichten in der TimeLimit-App abbestellen.
Falls Sie Fragen haben können Sie einfach auf diese E-Mail antworten.
</p>
<p>
You got this mail because you enable mail notifications for this in TimeLimit.
You can disable getting these messages in the TimeLimit App.
If you have got any questions, then you can reply to this messagge.
</p>
<p>
&copy; <%= mailimprint %>
</p>
</mj-text>
</mj-column>
</mj-section>
</mj-body>
</mjml>
+1
View File
@@ -0,0 +1 @@
<%= child %>/<%= task %>
+25
View File
@@ -0,0 +1,25 @@
<%= child %> hat angegeben, dass die Aufgabe <%= task %> erledigt wurde.
Die angeblich erledigten Aufgaben werden auf der Startseite der TimeLimit-App
angezeigt. Dort kann die Erledigung bestätigt werden.
Da die Anzahl der Benachrichtigungs-E-Mails begrenzt ist erhalten Sie
möglicherweise nicht bei jeder Aufgabenerledigung eine derartige E-Mail.
<%= child %> reported that <%= task %> was finished.
You can see the tasks which are marked as finished at the overview screen
of the TimeLimit application. You can confirm the task completion there.
There are limits for the notifications mails so that it can happen that
you do not get a mail for each completed task.
----------------------
Sie erhalten diese Nachricht, weil Sie E-Mail-Benachrichtigungen in TimeLimit aktiviert haben.
Sie können die Nachrichten in der TimeLimit-App abbestellen.
Falls Sie Fragen haben können Sie einfach auf diese E-Mail antworten.
You got this mail because you enable mail notifications for this in TimeLimit.
You can disable getting these messages in the TimeLimit App.
If you have got any questions, then you can reply to this messagge.
<C> <%= mailimprint %>
@@ -18,29 +18,25 @@
import { ParentAction } from './basetypes'
import { assertIdWithinFamily } from './meta/util'
const actionType = 'ResetParentBlockedTimesAction'
const actionType = 'DeleteChildTaskAction'
export class ResetParentBlockedTimesAction extends ParentAction {
readonly parentId: string
export class DeleteChildTaskAction extends ParentAction {
readonly taskId: string
constructor ({ parentId }: {
parentId: string
}) {
constructor ({ taskId }: { taskId: string }) {
super()
assertIdWithinFamily({ actionType, field: 'parentId', value: parentId })
assertIdWithinFamily({ actionType, field: 'taskId', value: taskId })
this.parentId = parentId
this.taskId = taskId
}
static parse = ({ parentId }: SerializedResetParentBlockedTimesAction) => (
new ResetParentBlockedTimesAction({
parentId
})
static parse = ({ taskId }: SerializedDeleteChildTaskAction) => (
new DeleteChildTaskAction({ taskId })
)
}
export interface SerializedResetParentBlockedTimesAction {
type: 'RESET_PARENT_BLOCKED_TIMES'
parentId: string
export interface SerializedDeleteChildTaskAction {
type: 'DELETE_CHILD_TASK'
taskId: string
}
+5 -2
View File
@@ -38,7 +38,6 @@ export { RemoveInstalledAppsAction } from './removeinstalledapps'
export { RemoveUserAction } from './removeuser'
export { ResetCategoryNetworkIdsAction } from './resetcategorynetworkids'
export { RenameChildAction } from './renamechild'
export { ResetParentBlockedTimesAction } from './resetparentblockedtimes'
export { SetCategoryExtraTimeAction } from './setcategoryextratime'
export { SetCategoryForUnassignedAppsAction } from './setcategoryforunassignedapps'
export { SetChildPasswordAction } from './setchildpassword'
@@ -67,8 +66,12 @@ export { UpdateDeviceNameAction } from './updatedevicename'
export { UpdateDeviceStatusAction } from './updatedevicestatus'
export { UpdateEnableActivityLevelBlockingAction } from './updateenableactivitylevelblocking'
export { UpdateNetworkTimeVerificationAction } from './updatenetworktimeverification'
export { UpdateParentBlockedTimesAction } from './updateparentblockedtimes'
export { UpdateParentNotificationFlagsAction } from './updateparentnotificationflags'
export { UpdateTimelimitRuleAction } from './updatetimelimitrule'
export { UpdateUserFlagsAction } from './updateuserflags'
export { UpdateUserLimitLoginCategory } from './updateuserlimitlogincategory'
export { MarkTaskPendingAction } from './marktaskpendingaction'
export { DeleteChildTaskAction } from './deletechildtaskaction'
export { UpdateChildTaskAction } from './updatechildtaskaction'
export { ReviewChildTaskAction } from './reviewchildtaskaction'
export { UpdateUserLimitLoginPreBlockDuration } from './updateuserlimitloginpreblockduration'
+42
View File
@@ -0,0 +1,42 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { AppLogicAction } from './basetypes'
import { assertIdWithinFamily } from './meta/util'
const actionType = 'MarkTaskPendingAction'
export class MarkTaskPendingAction extends AppLogicAction {
readonly taskId: string
constructor ({ taskId }: { taskId: string }) {
super()
assertIdWithinFamily({ actionType, field: 'taskId', value: taskId })
this.taskId = taskId
}
static parse = ({ taskId }: SerializedMarkTaskPendingAction) => (
new MarkTaskPendingAction({ taskId })
)
}
export interface SerializedMarkTaskPendingAction {
type: 'MARK_TASK_PENDING'
taskId: string
}
+57
View File
@@ -0,0 +1,57 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { ParentAction } from './basetypes'
import { assertIdWithinFamily, assertSafeInteger, throwOutOfRange } from './meta/util'
const actionType = 'ReviewChildTaskAction'
export class ReviewChildTaskAction extends ParentAction {
readonly taskId: string
readonly ok: boolean
readonly time: number
constructor ({ taskId, ok, time }: {
taskId: string
ok: boolean
time: number
}) {
super()
assertIdWithinFamily({ actionType, field: 'taskId', value: taskId })
assertSafeInteger({ actionType, field: 'time', value: time })
if (time <= 0) {
throwOutOfRange({ actionType, field: 'time', value: time })
}
this.taskId = taskId
this.ok = ok
this.time = time
}
static parse = ({ taskId, ok, time }: SerializedReviewChildTaskAction) => (
new ReviewChildTaskAction({ taskId, ok, time })
)
}
export interface SerializedReviewChildTaskAction {
type: 'REVIEW_CHILD_TASK'
taskId: string
ok: boolean
time: number
}
@@ -20,6 +20,7 @@ import { AddUsedTimeAction, SerializedAddUsedTimeAction } from '../addusedtime'
import { AddUsedTimeActionVersion2, SerializedAddUsedTimeActionVersion2 } from '../addusedtime2'
import { AppLogicAction } from '../basetypes'
import { ForceSyncAction, SerializedForceSyncAction } from '../forcesync'
import { MarkTaskPendingAction, SerializedMarkTaskPendingAction } from '../marktaskpendingaction'
import { UnknownActionTypeException } from '../meta/exception'
import { RemoveInstalledAppsAction, SerializedRemoveInstalledAppsAction } from '../removeinstalledapps'
import { SerializedSignOutAtDeviceAction, SignOutAtDeviceAction } from '../signoutatdevice'
@@ -32,6 +33,7 @@ export type SerializedAppLogicAction =
SerializedAddUsedTimeAction |
SerializedAddUsedTimeActionVersion2 |
SerializedForceSyncAction |
SerializedMarkTaskPendingAction |
SerializedRemoveInstalledAppsAction |
SerializedSignOutAtDeviceAction |
SerialiezdTriedDisablingDeviceAdminAction |
@@ -47,6 +49,8 @@ export const parseAppLogicAction = (serialized: SerializedAppLogicAction): AppLo
return AddInstalledAppsAction.parse(serialized)
} else if (serialized.type === 'FORCE_SYNC') {
return ForceSyncAction.parse(serialized)
} else if (serialized.type === 'MARK_TASK_PENDING') {
return MarkTaskPendingAction.parse(serialized)
} else if (serialized.type === 'REMOVE_INSTALLED_APPS') {
return RemoveInstalledAppsAction.parse(serialized)
} else if (serialized.type === 'SIGN_OUT_AT_DEVICE') {
+17 -9
View File
@@ -23,6 +23,7 @@ import { ChangeParentPasswordAction, SerializedChangeParentPasswordAction } from
import { CreateCategoryAction, SerializedCreateCategoryAction } from '../createcategory'
import { CreateTimeLimitRuleAction, SerializedCreateTimelimtRuleAction } from '../createtimelimitrule'
import { DeleteCategoryAction, SerializedDeleteCategoryAction } from '../deletecategory'
import { DeleteChildTaskAction, SerializedDeleteChildTaskAction } from '../deletechildtaskaction'
import { DeleteTimeLimitRuleAction, SerializedDeleteTimeLimitRuleAction } from '../deletetimelimitrule'
import { IgnoreManipulationAction, SerializedIgnoreManipulationAction } from '../ignoremanipulation'
import { IncrementCategoryExtraTimeAction, SerializedIncrementCategoryExtraTimeAction } from '../incrementcategoryextratime'
@@ -31,7 +32,7 @@ import { RemoveCategoryAppsAction, SerializedRemoveCategoryAppsAction } from '..
import { RemoveUserAction, SerializedRemoveUserAction } from '../removeuser'
import { RenameChildAction, SerializedRenameChildAction } from '../renamechild'
import { ResetCategoryNetworkIdsAction, SerializeResetCategoryNetworkIdsAction } from '../resetcategorynetworkids'
import { ResetParentBlockedTimesAction, SerializedResetParentBlockedTimesAction } from '../resetparentblockedtimes'
import { ReviewChildTaskAction, SerializedReviewChildTaskAction } from '../reviewchildtaskaction'
import { SerializedSetCategoryExtraTimeAction, SetCategoryExtraTimeAction } from '../setcategoryextratime'
import { SerializedSetCategoryForUnassignedAppsAction, SetCategoryForUnassignedAppsAction } from '../setcategoryforunassignedapps'
import { SerializedSetChildPasswordAction, SetChildPasswordAction } from '../setchildpassword'
@@ -53,14 +54,15 @@ import { SerializedUpdateCategorySortingAction, UpdateCategorySortingAction } fr
import { SerializedUpdateCategoryTemporarilyBlockedAction, UpdateCategoryTemporarilyBlockedAction } from '../updatecategorytemporarilyblocked'
import { SerializedUpdateCategoryTimeWarningsAction, UpdateCategoryTimeWarningsAction } from '../updatecategorytimewarnings'
import { SerializedUpdateCategoryTitleAction, UpdateCategoryTitleAction } from '../updatecategorytitle'
import { SerializedUpdateChildTaskAction, UpdateChildTaskAction } from '../updatechildtaskaction'
import { SerializedUpdateDeviceNameAction, UpdateDeviceNameAction } from '../updatedevicename'
import { SerializedUpdateEnableActivityLevelBlockingAction, UpdateEnableActivityLevelBlockingAction } from '../updateenableactivitylevelblocking'
import { SerialiizedUpdateNetworkTimeVerificationAction, UpdateNetworkTimeVerificationAction } from '../updatenetworktimeverification'
import { SerializedUpdateParentBlockedTimesAction, UpdateParentBlockedTimesAction } from '../updateparentblockedtimes'
import { SerializedUpdateParentNotificationFlagsAction, UpdateParentNotificationFlagsAction } from '../updateparentnotificationflags'
import { SerializedUpdateTimelimitRuleAction, UpdateTimelimitRuleAction } from '../updatetimelimitrule'
import { SerializedUpdateUserFlagsAction, UpdateUserFlagsAction } from '../updateuserflags'
import { SerializedUpdateUserLimitLoginCategory, UpdateUserLimitLoginCategory } from '../updateuserlimitlogincategory'
import { SerializedUpdateUserLimitLoginPreBlockDuration, UpdateUserLimitLoginPreBlockDuration } from '../updateuserlimitloginpreblockduration'
export type SerializedParentAction =
SerializedAddCategoryAppsAction |
@@ -70,6 +72,7 @@ export type SerializedParentAction =
SerializedCreateCategoryAction |
SerializedCreateTimelimtRuleAction |
SerializedDeleteCategoryAction |
SerializedDeleteChildTaskAction |
SerializedDeleteTimeLimitRuleAction |
SerializedIgnoreManipulationAction |
SerializedIncrementCategoryExtraTimeAction |
@@ -77,7 +80,7 @@ export type SerializedParentAction =
SerializedRemoveUserAction |
SerializedRenameChildAction |
SerializeResetCategoryNetworkIdsAction |
SerializedResetParentBlockedTimesAction |
SerializedReviewChildTaskAction |
SerializedSetCategoryForUnassignedAppsAction |
SerializedSetChildPasswordAction |
SerializedSetConsiderRebootManipulationAction |
@@ -99,14 +102,15 @@ export type SerializedParentAction =
SerializedUpdateCategoryTemporarilyBlockedAction |
SerializedUpdateCategoryTimeWarningsAction |
SerializedUpdateCategoryTitleAction |
SerializedUpdateChildTaskAction |
SerializedUpdateDeviceNameAction |
SerializedUpdateEnableActivityLevelBlockingAction |
SerialiizedUpdateNetworkTimeVerificationAction |
SerializedUpdateParentBlockedTimesAction |
SerializedUpdateParentNotificationFlagsAction |
SerializedUpdateTimelimitRuleAction |
SerializedUpdateUserFlagsAction |
SerializedUpdateUserLimitLoginCategory
SerializedUpdateUserLimitLoginCategory |
SerializedUpdateUserLimitLoginPreBlockDuration
export const parseParentAction = (action: SerializedParentAction): ParentAction => {
if (action.type === 'ADD_CATEGORY_APPS') {
@@ -123,6 +127,8 @@ export const parseParentAction = (action: SerializedParentAction): ParentAction
return CreateTimeLimitRuleAction.parse(action)
} else if (action.type === 'DELETE_CATEGORY') {
return DeleteCategoryAction.parse(action)
} else if (action.type === 'DELETE_CHILD_TASK') {
return DeleteChildTaskAction.parse(action)
} else if (action.type === 'DELETE_TIMELIMIT_RULE') {
return DeleteTimeLimitRuleAction.parse(action)
} else if (action.type === 'IGNORE_MANIPULATION') {
@@ -137,8 +143,8 @@ export const parseParentAction = (action: SerializedParentAction): ParentAction
return RenameChildAction.parse(action)
} else if (action.type === 'RESET_CATEGORY_NETWORK_IDS') {
return ResetCategoryNetworkIdsAction.parse(action)
} else if (action.type === 'RESET_PARENT_BLOCKED_TIMES') {
return ResetParentBlockedTimesAction.parse(action)
} else if (action.type === 'REVIEW_CHILD_TASK') {
return ReviewChildTaskAction.parse(action)
} else if (action.type === 'SET_CATEGORY_EXTRA_TIME') {
return SetCategoryExtraTimeAction.parse(action)
} else if (action.type === 'SET_CATEGORY_FOR_UNASSIGNED_APPS') {
@@ -179,6 +185,8 @@ export const parseParentAction = (action: SerializedParentAction): ParentAction
return UpdateCategoryTimeWarningsAction.parse(action)
} else if (action.type === 'UPDATE_CATEGORY_TITLE') {
return UpdateCategoryTitleAction.parse(action)
} else if (action.type === 'UPDATE_CHILD_TASK') {
return UpdateChildTaskAction.parse(action)
} else if (action.type === 'UPDATE_CATEGORY_TEMPORARILY_BLOCKED') {
return UpdateCategoryTemporarilyBlockedAction.parse(action)
} else if (action.type === 'UPDATE_DEVICE_NAME') {
@@ -187,8 +195,6 @@ export const parseParentAction = (action: SerializedParentAction): ParentAction
return UpdateEnableActivityLevelBlockingAction.parse(action)
} else if (action.type === 'UPDATE_NETWORK_TIME_VERIFICATION') {
return UpdateNetworkTimeVerificationAction.parse(action)
} else if (action.type === 'UPDATE_PARENT_BLOCKED_TIMES') {
return UpdateParentBlockedTimesAction.parse(action)
} else if (action.type === 'UPDATE_PARENT_NOTIFICATION_FLAGS') {
return UpdateParentNotificationFlagsAction.parse(action)
} else if (action.type === 'UPDATE_TIMELIMIT_RULE') {
@@ -197,6 +203,8 @@ export const parseParentAction = (action: SerializedParentAction): ParentAction
return UpdateUserFlagsAction.parse(action)
} else if (action.type === 'UPDATE_USER_LIMIT_LOGIN_CATEGORY') {
return UpdateUserLimitLoginCategory.parse(action)
} else if (action.type === 'UPDATE_USER_LIMIT_LOGIN_PRE_BLOCK_DURATION') {
return UpdateUserLimitLoginPreBlockDuration.parse(action)
} else {
throw new UnknownActionTypeException({ group: 'parent' })
}
+72
View File
@@ -0,0 +1,72 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { maxExtraTime, maxTitleLength } from '../database/childtask'
import { ParentAction } from './basetypes'
import { InvalidActionParameterException } from './meta/exception'
import { assertIdWithinFamily, assertSafeInteger, throwOutOfRange } from './meta/util'
const actionType = 'UpdateChildTaskAction'
export class UpdateChildTaskAction extends ParentAction {
readonly isNew: boolean
readonly taskId: string
readonly categoryId: string
readonly taskTitle: string
readonly extraTimeDuration: number
constructor ({ isNew, taskId, categoryId, taskTitle, extraTimeDuration }: {
isNew: boolean
taskId: string
categoryId: string
taskTitle: string
extraTimeDuration: number
}) {
super()
assertIdWithinFamily({ actionType, field: 'taskId', value: taskId })
assertIdWithinFamily({ actionType, field: 'categoryId', value: categoryId })
assertSafeInteger({ actionType, field: 'extraTimeDuration', value: extraTimeDuration })
if (taskTitle === '' || taskTitle.length > maxTitleLength) {
throw new InvalidActionParameterException({ actionType, staticMessage: 'invalid title' })
}
if (extraTimeDuration <= 0 || extraTimeDuration > maxExtraTime) {
throwOutOfRange({ actionType, field: 'extraTimeDuration', value: extraTimeDuration })
}
this.isNew = isNew
this.taskId = taskId
this.categoryId = categoryId
this.taskTitle = taskTitle
this.extraTimeDuration = extraTimeDuration
}
static parse = ({ isNew, taskId, categoryId, taskTitle, extraTimeDuration }: SerializedUpdateChildTaskAction) => (
new UpdateChildTaskAction({ isNew, taskId, categoryId, taskTitle, extraTimeDuration })
)
}
export interface SerializedUpdateChildTaskAction {
type: 'UPDATE_CHILD_TASK'
isNew: boolean
taskId: string
categoryId: string
taskTitle: string
extraTimeDuration: number
}
-81
View File
@@ -1,81 +0,0 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { BitmapValidationException, validateAndParseBitmask } from '../util/bitmask'
import { ParentAction } from './basetypes'
import { InvalidActionParameterException } from './meta/exception'
import { assertIdWithinFamily } from './meta/util'
const actionType = 'UpdateParentBlockedTimesAction'
export class UpdateParentBlockedTimesAction extends ParentAction {
readonly parentId: string
readonly blockedTimes: string
constructor ({ parentId, blockedTimes }: {
parentId: string
blockedTimes: string
}) {
super()
assertIdWithinFamily({ actionType, field: 'parentId', value: parentId })
try {
const parsedBlockedTimes = validateAndParseBitmask(blockedTimes, 60 * 24 * 7 /* number of minutes per week */)
for (let day = 0; day < 7; day++) {
let blockedMinutes = 0
for (let minute = 0; minute < 60 * 24 /* 1 day */; minute++) {
if (parsedBlockedTimes[day * 60 * 24 + minute]) {
blockedMinutes++
}
}
if (blockedMinutes > 60 * 18 /* 18 hours */) {
throw new InvalidActionParameterException({
actionType,
staticMessage: 'too much blocked minutes per day'
})
}
}
} catch (ex) {
if (ex instanceof BitmapValidationException) {
throw new InvalidActionParameterException({
actionType,
staticMessage: 'invalid bitmask'
})
} else throw ex
}
this.parentId = parentId
this.blockedTimes = blockedTimes
}
static parse = ({ parentId, times }: SerializedUpdateParentBlockedTimesAction) => (
new UpdateParentBlockedTimesAction({
parentId,
blockedTimes: times
})
)
}
export interface SerializedUpdateParentBlockedTimesAction {
type: 'UPDATE_PARENT_BLOCKED_TIMES'
parentId: string
times: string
}
+2 -1
View File
@@ -15,6 +15,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { maxMailNotificationFlags } from '../database/user'
import { ParentAction } from './basetypes'
import { assertIdWithinFamily, assertSafeInteger, throwOutOfRange } from './meta/util'
@@ -36,7 +37,7 @@ export class UpdateParentNotificationFlagsAction extends ParentAction {
assertSafeInteger({ actionType, field: 'flags', value: flags })
if (flags < 0 || flags > 1) {
if (flags < 0 || flags > maxMailNotificationFlags) {
throwOutOfRange({ actionType, field: 'flags', value: flags })
}
+9 -3
View File
@@ -31,10 +31,12 @@ export class UpdateTimelimitRuleAction extends ParentAction {
readonly end: number
readonly sessionDurationMilliseconds: number
readonly sessionPauseMilliseconds: number
readonly perDay: boolean
constructor ({
ruleId, maximumTimeInMillis, dayMask, applyToExtraTimeUsage,
start, end, sessionDurationMilliseconds, sessionPauseMilliseconds
start, end, sessionDurationMilliseconds, sessionPauseMilliseconds,
perDay
}: {
ruleId: string
maximumTimeInMillis: number
@@ -44,6 +46,7 @@ export class UpdateTimelimitRuleAction extends ParentAction {
end: number
sessionDurationMilliseconds: number
sessionPauseMilliseconds: number
perDay: boolean
}) {
super()
@@ -55,6 +58,7 @@ export class UpdateTimelimitRuleAction extends ParentAction {
this.end = end
this.sessionDurationMilliseconds = sessionDurationMilliseconds
this.sessionPauseMilliseconds = sessionPauseMilliseconds
this.perDay = perDay
assertIdWithinFamily({ actionType, field: 'ruleId', value: ruleId })
@@ -90,7 +94,7 @@ export class UpdateTimelimitRuleAction extends ParentAction {
}
}
static parse = ({ ruleId, time, days, extraTime, start, end, dur, pause }: SerializedUpdateTimelimitRuleAction) => (
static parse = ({ ruleId, time, days, extraTime, start, end, dur, pause, perDay }: SerializedUpdateTimelimitRuleAction) => (
new UpdateTimelimitRuleAction({
ruleId,
maximumTimeInMillis: time,
@@ -99,7 +103,8 @@ export class UpdateTimelimitRuleAction extends ParentAction {
start: start ?? MinuteOfDay.MIN,
end: end ?? MinuteOfDay.MAX,
sessionDurationMilliseconds: dur ?? 0,
sessionPauseMilliseconds: pause ?? 0
sessionPauseMilliseconds: pause ?? 0,
perDay: perDay ?? false
})
)
}
@@ -114,4 +119,5 @@ export interface SerializedUpdateTimelimitRuleAction {
end?: number
dur?: number
pause?: number
perDay?: boolean
}
@@ -0,0 +1,57 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { maxPreBlockDuration } from '../database/userlimitlogincategory'
import { ParentAction } from './basetypes'
import { assertIdWithinFamily, assertSafeInteger, throwOutOfRange } from './meta/util'
const actionType = 'UpdateUserLimitLoginPreBlockDuration'
export class UpdateUserLimitLoginPreBlockDuration extends ParentAction {
readonly userId: string
readonly preBlockDuration: number
constructor ({ userId, preBlockDuration }: {
userId: string,
preBlockDuration: number
}) {
super()
assertIdWithinFamily({ actionType, field: 'userId', value: userId })
assertSafeInteger({ actionType, field: 'preBlockDuration', value: preBlockDuration })
if (preBlockDuration < 0 || preBlockDuration > maxPreBlockDuration) {
throwOutOfRange({ actionType, field: 'preBlockDuration', value: preBlockDuration })
}
this.userId = userId
this.preBlockDuration = preBlockDuration
}
static parse = ({ userId, preBlockDuration }: SerializedUpdateUserLimitLoginPreBlockDuration) => (
new UpdateUserLimitLoginPreBlockDuration({
userId,
preBlockDuration
})
)
}
export interface SerializedUpdateUserLimitLoginPreBlockDuration {
type: 'UPDATE_USER_LIMIT_LOGIN_PRE_BLOCK_DURATION'
userId: string
preBlockDuration: number
}
+188 -31
View File
@@ -84,6 +84,9 @@ const definitions = {
},
"usedTime": {
"type": "string"
},
"tasks": {
"type": "string"
}
},
"additionalProperties": false,
@@ -327,6 +330,9 @@ const definitions = {
},
"pause": {
"type": "number"
},
"perDay": {
"type": "boolean"
}
},
"additionalProperties": false,
@@ -357,6 +363,25 @@ const definitions = {
"type"
]
},
"SerializedDeleteChildTaskAction": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"DELETE_CHILD_TASK"
]
},
"taskId": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"taskId",
"type"
]
},
"SerializedDeleteTimeLimitRuleAction": {
"type": "object",
"properties": {
@@ -547,22 +572,30 @@ const definitions = {
"type"
]
},
"SerializedResetParentBlockedTimesAction": {
"SerializedReviewChildTaskAction": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"RESET_PARENT_BLOCKED_TIMES"
"REVIEW_CHILD_TASK"
]
},
"parentId": {
"taskId": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"time": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"parentId",
"ok",
"taskId",
"time",
"type"
]
},
@@ -1060,6 +1093,41 @@ const definitions = {
"type"
]
},
"SerializedUpdateChildTaskAction": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"UPDATE_CHILD_TASK"
]
},
"isNew": {
"type": "boolean"
},
"taskId": {
"type": "string"
},
"categoryId": {
"type": "string"
},
"taskTitle": {
"type": "string"
},
"extraTimeDuration": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"categoryId",
"extraTimeDuration",
"isNew",
"taskId",
"taskTitle",
"type"
]
},
"SerializedUpdateDeviceNameAction": {
"type": "object",
"properties": {
@@ -1134,29 +1202,6 @@ const definitions = {
"type"
]
},
"SerializedUpdateParentBlockedTimesAction": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"UPDATE_PARENT_BLOCKED_TIMES"
]
},
"parentId": {
"type": "string"
},
"times": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"parentId",
"times",
"type"
]
},
"SerializedUpdateParentNotificationFlagsAction": {
"type": "object",
"properties": {
@@ -1216,6 +1261,9 @@ const definitions = {
},
"pause": {
"type": "number"
},
"perDay": {
"type": "boolean"
}
},
"additionalProperties": false,
@@ -1276,6 +1324,29 @@ const definitions = {
"userId"
]
},
"SerializedUpdateUserLimitLoginPreBlockDuration": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"UPDATE_USER_LIMIT_LOGIN_PRE_BLOCK_DURATION"
]
},
"userId": {
"type": "string"
},
"preBlockDuration": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"preBlockDuration",
"type",
"userId"
]
},
"SerializedAddInstalledAppsAction": {
"type": "object",
"properties": {
@@ -1484,6 +1555,25 @@ const definitions = {
"type"
]
},
"SerializedMarkTaskPendingAction": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"MARK_TASK_PENDING"
]
},
"taskId": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"taskId",
"type"
]
},
"SerializedRemoveInstalledAppsAction": {
"type": "object",
"properties": {
@@ -2164,6 +2254,9 @@ const definitions = {
},
"pause": {
"type": "number"
},
"perDay": {
"type": "boolean"
}
},
"additionalProperties": false,
@@ -2174,10 +2267,62 @@ const definitions = {
"id",
"maxTime",
"pause",
"perDay",
"session",
"start"
]
},
"ServerUpdatedCategoryTasks": {
"type": "object",
"properties": {
"categoryId": {
"type": "string"
},
"version": {
"type": "string"
},
"tasks": {
"type": "array",
"items": {
"$ref": "#/definitions/ServerUpdatedCategoryTask"
}
}
},
"additionalProperties": false,
"required": [
"categoryId",
"tasks",
"version"
]
},
"ServerUpdatedCategoryTask": {
"type": "object",
"properties": {
"i": {
"type": "string"
},
"t": {
"type": "string"
},
"d": {
"type": "number"
},
"p": {
"type": "boolean"
},
"l": {
"type": "number"
}
},
"additionalProperties": false,
"required": [
"d",
"i",
"l",
"p",
"t"
]
},
"ServerUserList": {
"type": "object",
"properties": {
@@ -2248,6 +2393,9 @@ const definitions = {
},
"llc": {
"type": "string"
},
"pbd": {
"type": "number"
}
},
"additionalProperties": false,
@@ -2460,6 +2608,9 @@ export const isSerializedParentAction: (value: object) => value is SerializedPar
{
"$ref": "#/definitions/SerializedDeleteCategoryAction"
},
{
"$ref": "#/definitions/SerializedDeleteChildTaskAction"
},
{
"$ref": "#/definitions/SerializedDeleteTimeLimitRuleAction"
},
@@ -2482,7 +2633,7 @@ export const isSerializedParentAction: (value: object) => value is SerializedPar
"$ref": "#/definitions/SerializeResetCategoryNetworkIdsAction"
},
{
"$ref": "#/definitions/SerializedResetParentBlockedTimesAction"
"$ref": "#/definitions/SerializedReviewChildTaskAction"
},
{
"$ref": "#/definitions/SerializedSetCategoryExtraTimeAction"
@@ -2547,6 +2698,9 @@ export const isSerializedParentAction: (value: object) => value is SerializedPar
{
"$ref": "#/definitions/SerializedUpdateCategoryTitleAction"
},
{
"$ref": "#/definitions/SerializedUpdateChildTaskAction"
},
{
"$ref": "#/definitions/SerializedUpdateDeviceNameAction"
},
@@ -2556,9 +2710,6 @@ export const isSerializedParentAction: (value: object) => value is SerializedPar
{
"$ref": "#/definitions/SerialiizedUpdateNetworkTimeVerificationAction"
},
{
"$ref": "#/definitions/SerializedUpdateParentBlockedTimesAction"
},
{
"$ref": "#/definitions/SerializedUpdateParentNotificationFlagsAction"
},
@@ -2570,6 +2721,9 @@ export const isSerializedParentAction: (value: object) => value is SerializedPar
},
{
"$ref": "#/definitions/SerializedUpdateUserLimitLoginCategory"
},
{
"$ref": "#/definitions/SerializedUpdateUserLimitLoginPreBlockDuration"
}
],
"definitions": definitions,
@@ -2589,6 +2743,9 @@ export const isSerializedAppLogicAction: (value: object) => value is SerializedA
{
"$ref": "#/definitions/SerializedForceSyncAction"
},
{
"$ref": "#/definitions/SerializedMarkTaskPendingAction"
},
{
"$ref": "#/definitions/SerializedRemoveInstalledAppsAction"
},
+14 -2
View File
@@ -69,10 +69,14 @@ export interface CategoryAttributesVersion9 {
disableLimitsUntil: string
}
export interface CategoryAttributesVersion10 {
taskListVersion: string
}
export type CategoryAttributes = CategoryAttributesVersion1 & CategoryAttributesVersion2 &
CategoryAttributesVersion3 & CategoryAttributesVersion4 & CategoryAttributesVersion5 &
CategoryAttributesVersion6 & CategoryAttributesVersion7 & CategoryAttributesVersion8 &
CategoryAttributesVersion9
CategoryAttributesVersion9 & CategoryAttributesVersion10
export type CategoryModel = Sequelize.Model & CategoryAttributes
export type CategoryModelStatic = typeof Sequelize.Model & {
@@ -199,6 +203,13 @@ export const attributesVersion9: SequelizeAttributes<CategoryAttributesVersion9>
}
}
export const attributesVersion10: SequelizeAttributes<CategoryAttributesVersion10> = {
taskListVersion: {
...versionColumn,
defaultValue: 'abcd'
}
}
export const attributes: SequelizeAttributes<CategoryAttributes> = {
...attributesVersion1,
...attributesVersion2,
@@ -208,7 +219,8 @@ export const attributes: SequelizeAttributes<CategoryAttributes> = {
...attributesVersion6,
...attributesVersion7,
...attributesVersion8,
...attributesVersion9
...attributesVersion9,
...attributesVersion10
}
export const createCategoryModel = (sequelize: Sequelize.Sequelize): CategoryModelStatic => sequelize.define('Category', attributes) as CategoryModelStatic
+67
View File
@@ -0,0 +1,67 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import * as Sequelize from 'sequelize'
import { familyIdColumn, idWithinFamilyColumn, timestampColumn } from './columns'
import { SequelizeAttributes } from './types'
export interface ChildTaskAttributes {
familyId: string
taskId: string
// end of primary key
categoryId: string
taskTitle: string
extraTimeDuration: number
pendingRequest: number
lastGrantTimestamp: string
}
export const maxExtraTime = 1000 * 60 * 60 * 24
export const maxTitleLength = 50
export type ChildTaskModel = Sequelize.Model & ChildTaskAttributes
export type ChildTaskModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): ChildTaskModel;
}
export const attributes: SequelizeAttributes<ChildTaskAttributes> = {
familyId: {
...familyIdColumn,
primaryKey: true
},
taskId: {
...idWithinFamilyColumn,
primaryKey: true
},
categoryId: { ...idWithinFamilyColumn },
taskTitle: {
type: Sequelize.STRING(maxTitleLength),
allowNull: false
},
extraTimeDuration: {
type: Sequelize.INTEGER,
allowNull: false,
validate: { min: 1, max: maxExtraTime }
},
pendingRequest: {
type: Sequelize.INTEGER,
allowNull: false
},
lastGrantTimestamp: { ...timestampColumn }
}
export const createChildTaskModel = (sequelize: Sequelize.Sequelize): ChildTaskModelStatic => sequelize.define('ChildTask', attributes) as ChildTaskModelStatic
+3
View File
@@ -25,6 +25,7 @@ import { AuthTokenModelStatic, createAuthtokenModel } from './authtoken'
import { CategoryModelStatic, createCategoryModel } from './category'
import { CategoryAppModelStatic, createCategoryAppModel } from './categoryapp'
import { CategoryNetworkIdModelStatic, createCategoryNetworkIdModel } from './categorynetworkid'
import { ChildTaskModelStatic, createChildTaskModel } from './childtask'
import { configItemIds, ConfigModelStatic, createConfigModel } from './config'
import { createDeviceModel, DeviceModelStatic } from './device'
import { createFamilyModel, FamilyModelStatic } from './family'
@@ -48,6 +49,7 @@ export interface Database {
category: CategoryModelStatic
categoryApp: CategoryAppModelStatic
categoryNetworkId: CategoryNetworkIdModelStatic
childTask: ChildTaskModelStatic
config: ConfigModelStatic
device: DeviceModelStatic
family: FamilyModelStatic
@@ -70,6 +72,7 @@ const createDatabase = (sequelize: Sequelize.Sequelize): Database => ({
appActivity: createAppActivityModel(sequelize),
category: createCategoryModel(sequelize),
categoryApp: createCategoryAppModel(sequelize),
childTask: createChildTaskModel(sequelize),
categoryNetworkId: createCategoryNetworkIdModel(sequelize),
config: createConfigModel(sequelize),
device: createDeviceModel(sequelize),
@@ -0,0 +1,53 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion10 as categoryAttributes } from '../../category'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await sequelize.query(
'CREATE TABLE `ChildTasks` (' +
'`familyId` VARCHAR(10) NOT NULL, `taskId` VARCHAR(6) NOT NULL,' +
'`categoryId` VARCHAR(6) NOT NULL, `taskTitle` VARCHAR(50) NOT NULL,' +
'`extraTimeDuration` INTEGER NOT NULL, `pendingRequest` INTEGER NOT NULL,' +
'`lastGrantTimestamp` LONG NOT NULL,' +
'PRIMARY KEY(`familyId`, `taskId`),' +
'FOREIGN KEY(`familyId`, `categoryId`) REFERENCES `Categories`(`familyId`, `categoryId`) ' +
'ON UPDATE CASCADE ON DELETE CASCADE' +
')',
{ transaction }
)
await queryInterface.addColumn('Categories', 'taskListVersion', {
...categoryAttributes.taskListVersion
}, {
transaction
})
})
}
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.dropTable('ChildTasks', { transaction })
await queryInterface.removeColumn('Categories', 'taskListVersion', { transaction })
})
}
@@ -0,0 +1,38 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion3 as ruleAttributes } from '../../timelimitrule'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
// timelimit rule table
await queryInterface.addColumn('TimelimitRules', 'perDay', {
...ruleAttributes.perDay
}, { transaction })
})
}
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.removeColumn('TimelimitRules', 'perDay', { transaction })
})
}
@@ -0,0 +1,38 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion2 as limitLoginCategoryAttributes } from '../../userlimitlogincategory'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
// timelimit rule table
await queryInterface.addColumn('UserLimitLoginCategories', 'preBlockDuration', {
...limitLoginCategoryAttributes.preBlockDuration
}, { transaction })
})
}
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.removeColumn('UserLimitLoginCategories', 'preBlockDuration', { transaction })
})
}
+20 -2
View File
@@ -37,7 +37,12 @@ interface TimelimitRuleAttributesVersion2 {
sessionPauseMilliseconds: number
}
type TimelimitRuleAttributes = TimelimitRuleAttributesVersion1 & TimelimitRuleAttributesVersion2
interface TimelimitRuleAttributesVersion3 {
perDay: number
}
type TimelimitRuleAttributes = TimelimitRuleAttributesVersion1 &
TimelimitRuleAttributesVersion2 & TimelimitRuleAttributesVersion3
export type TimelimitRuleModel = Sequelize.Model & TimelimitRuleAttributes
export type TimelimitRuleModelStatic = typeof Sequelize.Model & {
@@ -120,9 +125,22 @@ export const attributesVersion2: SequelizeAttributes<TimelimitRuleAttributesVers
}
}
export const attributesVersion3: SequelizeAttributes<TimelimitRuleAttributesVersion3> = {
perDay: {
type: Sequelize.INTEGER,
validate: {
min: 0,
max: 1
},
allowNull: false,
defaultValue: 0
}
}
export const attributes: SequelizeAttributes<TimelimitRuleAttributes> = {
...attributesVersion1,
...attributesVersion2
...attributesVersion2,
...attributesVersion3
}
export const createTimelimitRuleModel = (sequelize: Sequelize.Sequelize): TimelimitRuleModelStatic => sequelize.define('TimelimitRule', attributes) as TimelimitRuleModelStatic
+9 -1
View File
@@ -22,6 +22,13 @@ import { optionalPasswordRegex, optionalSaltRegex } from '../util/password'
import { booleanColumn, createEnumColumn, familyIdColumn, idWithinFamilyColumn, labelColumn, optionalIdWithinFamilyColumn, timestampColumn } from './columns'
import { SequelizeAttributes } from './types'
export const maxMailNotificationFlags = 1 | 2
export const mailNotificationFlags = {
warnings: 1,
tasks: 2
}
export interface UserAttributesVersion1 {
familyId: string
userId: string
@@ -52,6 +59,7 @@ export interface UserAttributesVersion4 {
}
export interface UserAttributesVersion5 {
// currently unused
blockedTimes: string
}
@@ -128,7 +136,7 @@ export const attributesVersion4: SequelizeAttributes<UserAttributesVersion4> = {
defaultValue: 0,
validate: {
min: 0,
max: 1
max: maxMailNotificationFlags
}
}
}
+27 -2
View File
@@ -19,21 +19,46 @@ import * as Sequelize from 'sequelize'
import { familyIdColumn, idWithinFamilyColumn } from './columns'
import { SequelizeAttributes } from './types'
export interface UserLimitLoginCategoryAttributes {
export const maxPreBlockDuration = 1000 * 60 * 60 * 24 // 1 day
export interface UserLimitLoginCategoryAttributesVersion1 {
familyId: string
userId: string
categoryId: string
}
export interface UserLimitLoginCategoryAttributesVersion2 {
preBlockDuration: number
}
export type UserLimitLoginCategoryAttributes = UserLimitLoginCategoryAttributesVersion1 & UserLimitLoginCategoryAttributesVersion2
export type UserLimitLoginCategoryModel = Sequelize.Model & UserLimitLoginCategoryAttributes
export type UserLimitLoginCategoryModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): UserLimitLoginCategoryModel;
}
export const attributes: SequelizeAttributes<UserLimitLoginCategoryAttributes> = {
export const attributesVersion1: SequelizeAttributes<UserLimitLoginCategoryAttributesVersion1> = {
familyId: { ...familyIdColumn, primaryKey: true },
userId: { ...idWithinFamilyColumn, primaryKey: true },
categoryId: { ...idWithinFamilyColumn }
}
export const attributesVersion2: SequelizeAttributes<UserLimitLoginCategoryAttributesVersion2> = {
preBlockDuration: {
type: Sequelize.INTEGER,
validate: {
min: 0,
max: maxPreBlockDuration
},
allowNull: false,
defaultValue: 0
}
}
export const attributes: SequelizeAttributes<UserLimitLoginCategoryAttributes> = {
...attributesVersion1,
...attributesVersion2
}
export const createUserLimitLoginCategoryModel = (sequelize: Sequelize.Sequelize): UserLimitLoginCategoryModelStatic => sequelize.define('UserLimitLoginCategory', attributes) as UserLimitLoginCategoryModelStatic
+2 -1
View File
@@ -52,7 +52,8 @@ export const addChildDevice = async ({ database, websocket, request }: {
deviceAuthToken,
deviceName: request.deviceName,
newDeviceInfo: request.childDevice,
userId: ''
userId: '',
isUserKeptSignedIn: false
}), { transaction })
await database.family.update({
+3 -2
View File
@@ -19,13 +19,14 @@ import { NewDeviceInfo } from '../../api/schema'
import { DeviceAttributes } from '../../database/device'
import { generateVersionId } from '../../util/token'
export const prepareDeviceEntry = ({ familyId, userId, deviceAuthToken, deviceId, deviceName, newDeviceInfo }: {
export const prepareDeviceEntry = ({ familyId, userId, deviceAuthToken, deviceId, deviceName, newDeviceInfo, isUserKeptSignedIn }: {
familyId: string
userId: string
deviceAuthToken: string
deviceId: string
deviceName: string
newDeviceInfo: NewDeviceInfo
isUserKeptSignedIn: boolean
}): DeviceAttributes => ({
familyId,
deviceId,
@@ -52,7 +53,7 @@ export const prepareDeviceEntry = ({ familyId, userId, deviceAuthToken, deviceId
lastConnectivity: '0',
notSeenForLongTime: false,
didDeviceReportUninstall: false,
isUserKeptSignedIn: false,
isUserKeptSignedIn,
showDeviceConnected: false,
defaultUserId: '',
defaultUserTimeout: 0,
+4 -2
View File
@@ -18,6 +18,7 @@
import { Conflict } from 'http-errors'
import { NewDeviceInfo, ParentPassword } from '../../api/schema'
import { Database } from '../../database'
import { maxMailNotificationFlags } from '../../database/user'
import {
generateAuthToken, generateFamilyId, generateIdWithinFamily, generateVersionId
} from '../../util/token'
@@ -82,7 +83,7 @@ export const createFamily = async ({ database, mailAuthToken, firstParentDevice,
currentDevice: '',
categoryForNotAssignedApps: '',
relaxPrimaryDeviceRule: false,
mailNotificationFlags: 1, // enable warning notifications
mailNotificationFlags: maxMailNotificationFlags,
blockedTimes: '',
flags: '0'
}, { transaction })
@@ -94,7 +95,8 @@ export const createFamily = async ({ database, mailAuthToken, firstParentDevice,
deviceName,
newDeviceInfo: firstParentDevice,
userId,
deviceAuthToken
deviceAuthToken,
isUserKeptSignedIn: true
}), { transaction })
return {
+2 -1
View File
@@ -61,7 +61,8 @@ export const signInIntoFamily = async ({ database, mailAuthToken, newDeviceInfo,
userId: userEntry.userId,
deviceName,
deviceAuthToken,
newDeviceInfo
newDeviceInfo,
isUserKeptSignedIn: true
}), { transaction })
// notify about changes
+17
View File
@@ -37,6 +37,7 @@ export class Cache {
categoriesWithModifiedBaseData = new Set<string>()
categoriesWithModifiedTimeLimitRules = new Set<string>()
categoriesWithModifiedUsedTimes = new Set<string>()
categoriesWithModifiedTasks = new Set<string>()
devicesWithModifiedInstalledApps = new Set<string>()
devicesWithModifiedShowDeviceConnected = new Map<string, boolean>()
@@ -209,6 +210,22 @@ export class Cache {
this.categoriesWithModifiedUsedTimes.clear()
}
if (this.categoriesWithModifiedTasks.size > 0) {
await database.category.update({
taskListVersion: generateVersionId()
}, {
where: {
familyId,
categoryId: {
[Sequelize.Op.in]: setToList(this.categoriesWithModifiedTasks)
}
},
transaction
})
this.categoriesWithModifiedUsedTimes.clear()
}
if (this.devicesWithModifiedInstalledApps.size > 0) {
await database.device.update({
installedAppsVersion: generateVersionId()
@@ -21,6 +21,7 @@ import {
AddUsedTimeActionVersion2,
AppLogicAction,
ForceSyncAction,
MarkTaskPendingAction,
RemoveInstalledAppsAction,
SignOutAtDeviceAction,
TriedDisablingDeviceAdminAction,
@@ -34,6 +35,7 @@ import { dispatchAddInstalledApps } from './addinstalledapps'
import { dispatchAddUsedTime } from './addusedtime'
import { dispatchAddUsedTimeVersion2 } from './addusedtime2'
import { dispatchForceSyncAction } from './forcesync'
import { dispatchMarkTaskPendingAction } from './marktaskpendingaction'
import { dispatchRemoveInstalledApps } from './removeinstalledapps'
import { dispatchSignOutAtDevice } from './signoutatdevice'
import { dispatchTriedDisablingDeviceAdmin } from './trieddisablingdeviceadmin'
@@ -54,6 +56,8 @@ export const dispatchAppLogicAction = async ({ action, deviceId, cache, eventHan
await dispatchAddUsedTimeVersion2({ deviceId, action, cache, eventHandler })
} else if (action instanceof ForceSyncAction) {
await dispatchForceSyncAction({ deviceId, action, cache })
} else if (action instanceof MarkTaskPendingAction) {
await dispatchMarkTaskPendingAction({ deviceId, action, cache })
} else if (action instanceof RemoveInstalledAppsAction) {
await dispatchRemoveInstalledApps({ deviceId, action, cache })
} else if (action instanceof SignOutAtDeviceAction) {
@@ -0,0 +1,110 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { MarkTaskPendingAction } from '../../../../action'
import { sendTaskDoneMails } from '../../../warningmail/taskdone'
import { Cache } from '../cache'
import { IllegalStateException, SourceDeviceNotFoundException, SourceUserNotFoundException } from '../exception/illegal-state'
import { MissingTaskException } from '../exception/missing-item'
export async function dispatchMarkTaskPendingAction ({ action, cache, deviceId }: {
deviceId: string
action: MarkTaskPendingAction
cache: Cache
}) {
const taskInfoUnsafe = await cache.database.childTask.findOne({
where: {
familyId: cache.familyId,
taskId: action.taskId
},
transaction: cache.transaction,
attributes: ['categoryId', 'pendingRequest', 'taskTitle']
})
if (taskInfoUnsafe === null) throw new MissingTaskException()
const taskInfo = {
categoryId: taskInfoUnsafe.categoryId,
pendingRequest: taskInfoUnsafe.pendingRequest,
taskTitle: taskInfoUnsafe.taskTitle
}
if (taskInfo.pendingRequest !== 0) return // review already requested
const categoryInfoUnsafe = await cache.database.category.findOne({
where: {
familyId: cache.familyId,
categoryId: taskInfo.categoryId
},
attributes: ['childId'],
transaction: cache.transaction
})
if (categoryInfoUnsafe === null) {
throw new IllegalStateException({ staticMessage: 'category referenced from task not found' })
}
const categoryInfo = { childId: categoryInfoUnsafe.childId }
const deviceInfoUnsafe = await cache.database.device.findOne({
where: {
familyId: cache.familyId,
deviceId
},
attributes: ['currentUserId'],
transaction: cache.transaction
})
if (deviceInfoUnsafe === null) throw new SourceDeviceNotFoundException()
const deviceInfo = { currentUserId: deviceInfoUnsafe.currentUserId }
if (categoryInfo.childId !== deviceInfo.currentUserId) {
throw new IllegalStateException({ staticMessage: 'Can not mark task pending for other user than the current user' })
}
const childInfoUnsafe = await cache.database.user.findOne({
where: {
familyId: cache.familyId,
userId: categoryInfo.childId
},
attributes: ['name'],
transaction: cache.transaction
})
if (childInfoUnsafe === null) throw new SourceUserNotFoundException()
const childInfo = { name: childInfoUnsafe.name }
await cache.database.childTask.update({ pendingRequest: true }, {
where: {
familyId: cache.familyId,
taskId: action.taskId
},
transaction: cache.transaction
})
cache.categoriesWithModifiedTasks.add(taskInfo.categoryId)
await sendTaskDoneMails({
database: cache.database,
transaction: cache.transaction,
familyId: cache.familyId,
childName: childInfo.name,
taskTitle: taskInfo.taskTitle
})
}
@@ -76,7 +76,8 @@ export async function dispatchCreateCategory ({ action, cache, fromChildSelfLimi
blockAllNotifications: false,
timeWarningFlags: 0,
sort,
disableLimitsUntil: 0
disableLimitsUntil: 0,
taskListVersion: generateVersionId()
}, { transaction: cache.transaction })
// update the cache
@@ -54,7 +54,8 @@ export async function dispatchCreateTimeLimitRule ({ action, cache, fromChildSel
startMinuteOfDay: action.rule.start,
endMinuteOfDay: action.rule.end,
sessionDurationMilliseconds: action.rule.sessionDurationMilliseconds,
sessionPauseMilliseconds: action.rule.sessionPauseMilliseconds
sessionPauseMilliseconds: action.rule.sessionPauseMilliseconds,
perDay: action.rule.perDay ? 1 : 0
}, { transaction: cache.transaction })
cache.categoriesWithModifiedTimeLimitRules.add(action.rule.categoryId)
@@ -15,38 +15,34 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { ResetParentBlockedTimesAction } from '../../../../action'
import { DeleteChildTaskAction } from '../../../../action'
import { Cache } from '../cache'
import { MissingUserException } from '../exception/missing-item'
import { MissingTaskException } from '../exception/missing-item'
export async function dispatchResetParentBlockedTimes ({ action, cache }: {
action: ResetParentBlockedTimesAction
export async function dispatchDeleteChildTaskAction ({ action, cache }: {
action: DeleteChildTaskAction
cache: Cache
}) {
const oldItem = await cache.database.user.findOne({
const taskInfoUnsafe = await cache.database.childTask.findOne({
where: {
familyId: cache.familyId,
userId: action.parentId,
type: 'parent'
taskId: action.taskId
},
transaction: cache.transaction,
attributes: ['categoryId']
})
if (taskInfoUnsafe === null) throw new MissingTaskException()
const taskInfo = { categoryId: taskInfoUnsafe.categoryId }
await cache.database.childTask.destroy({
where: {
familyId: cache.familyId,
taskId: action.taskId
},
transaction: cache.transaction
})
if (!oldItem) {
throw new MissingUserException()
}
await cache.database.user.update({
blockedTimes: ''
}, {
where: {
familyId: cache.familyId,
userId: action.parentId,
type: 'parent'
},
transaction: cache.transaction
})
cache.invalidiateUserList = true
cache.areChangesImportant = true
cache.categoriesWithModifiedTasks.add(taskInfo.categoryId)
}
@@ -23,6 +23,7 @@ import {
CreateCategoryAction,
CreateTimeLimitRuleAction,
DeleteCategoryAction,
DeleteChildTaskAction,
DeleteTimeLimitRuleAction,
IgnoreManipulationAction,
IncrementCategoryExtraTimeAction,
@@ -31,7 +32,7 @@ import {
RemoveUserAction,
RenameChildAction,
ResetCategoryNetworkIdsAction,
ResetParentBlockedTimesAction,
ReviewChildTaskAction,
SetCategoryExtraTimeAction,
SetCategoryForUnassignedAppsAction,
SetChildPasswordAction,
@@ -53,14 +54,15 @@ import {
UpdateCategoryTemporarilyBlockedAction,
UpdateCategoryTimeWarningsAction,
UpdateCategoryTitleAction,
UpdateChildTaskAction,
UpdateDeviceNameAction,
UpdateEnableActivityLevelBlockingAction,
UpdateNetworkTimeVerificationAction,
UpdateParentBlockedTimesAction,
UpdateParentNotificationFlagsAction,
UpdateTimelimitRuleAction,
UpdateUserFlagsAction,
UpdateUserLimitLoginCategory
UpdateUserLimitLoginCategory,
UpdateUserLimitLoginPreBlockDuration
} from '../../../../action'
import { Cache } from '../cache'
import { ActionObjectTypeNotHandledException } from '../exception/illegal-state'
@@ -72,6 +74,7 @@ import { dispatchChangeParentPassword } from './changeparentpassword'
import { dispatchCreateCategory } from './createcategory'
import { dispatchCreateTimeLimitRule } from './createtimelimitrule'
import { dispatchDeleteCategory } from './deletecategory'
import { dispatchDeleteChildTaskAction } from './deletechildtaskaction'
import { dispatchDeleteTimeLimitRule } from './deletetimelimitrule'
import { dispatchIgnoreManipulation } from './ignoremanipulation'
import { dispatchIncrementCategoryExtraTime } from './incrementcategoryextratime'
@@ -79,7 +82,7 @@ import { dispatchRemoveCategoryApps } from './removecategoryapps'
import { dispatchRemoveUser } from './removeuser'
import { dispatchRenameChild } from './renamechild'
import { dispatchResetCategoryNetworkIds } from './resetcategorynetworkids'
import { dispatchResetParentBlockedTimes } from './resetparentblockedtimes'
import { dispatchReviewChildTaskAction } from './reviewchildtaskaction'
import { dispatchSetCategoryExtraTime } from './setcategoryextratime'
import { dispatchSetCategoryForUnassignedApps } from './setcategoryforunassignedapps'
import { dispatchSetChildPassword } from './setchildpassword'
@@ -101,14 +104,15 @@ import { dispatchUpdateCategorySorting } from './updatecategorysorting'
import { dispatchUpdateCategoryTemporarilyBlocked } from './updatecategorytemporarilyblocked'
import { dispatchUpdateCategoryTimeWarnings } from './updatecategorytimewarnings'
import { dispatchUpdateCategoryTitle } from './updatecategorytitle'
import { dispatchUpdateChildTaskAction } from './updatechildtaskaction'
import { dispatchUpdateDeviceName } from './updatedevicename'
import { dispatchUpdateEnableActivityLevelBlocking } from './updateenableactivitylevelblocking'
import { dispatchUpdateNetworkTimeVerification } from './updatenetworktimeverification'
import { dispatchUpdateParentBlockedTimes } from './updateparentblockedtimes'
import { dispatchUpdateParentNotificationFlags } from './updateparentnotificationflags'
import { dispatchUpdateTimelimitRule } from './updatetimelimitrule'
import { dispatchUpdateUserFlagsAction } from './updateuserflags'
import { dispatchUpdateUserLimitLoginCategoryAction } from './updateuserlimitlogincategory'
import { dispatchUpdateUserLimitPreBlockDuration } from './updateuserlimitloginpreblockduration'
export const dispatchParentAction = async ({ action, cache, parentUserId, sourceDeviceId, fromChildSelfLimitAddChildUserId }: {
action: ParentAction
@@ -202,14 +206,18 @@ export const dispatchParentAction = async ({ action, cache, parentUserId, source
return dispatchIgnoreManipulation({ action, cache })
} else if (action instanceof UpdateCategoryTimeWarningsAction) {
return dispatchUpdateCategoryTimeWarnings({ action, cache })
} else if (action instanceof ResetParentBlockedTimesAction) {
return dispatchResetParentBlockedTimes({ action, cache })
} else if (action instanceof UpdateParentBlockedTimesAction) {
return dispatchUpdateParentBlockedTimes({ action, cache, parentUserId })
} else if (action instanceof UpdateUserFlagsAction) {
return dispatchUpdateUserFlagsAction({ action, cache })
} else if (action instanceof UpdateUserLimitLoginCategory) {
return dispatchUpdateUserLimitLoginCategoryAction({ action, cache, parentUserId })
} else if (action instanceof DeleteChildTaskAction) {
await dispatchDeleteChildTaskAction({ action, cache })
} else if (action instanceof ReviewChildTaskAction) {
await dispatchReviewChildTaskAction({ action, cache })
} else if (action instanceof UpdateChildTaskAction) {
await dispatchUpdateChildTaskAction({ action, cache })
} else if (action instanceof UpdateUserLimitLoginPreBlockDuration) {
await dispatchUpdateUserLimitPreBlockDuration({ action, cache, parentUserId })
} else {
throw new ActionObjectTypeNotHandledException()
}
@@ -0,0 +1,112 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { ReviewChildTaskAction } from '../../../../action'
import { Cache } from '../cache'
import { IllegalStateException } from '../exception/illegal-state'
import { MissingTaskException } from '../exception/missing-item'
import { PremiumVersionMissingException } from '../exception/premium'
export async function dispatchReviewChildTaskAction ({ action, cache }: {
action: ReviewChildTaskAction
cache: Cache
}) {
if (action.ok && cache.hasFullVersion === false) {
throw new PremiumVersionMissingException()
}
const taskInfo = await cache.database.childTask.findOne({
where: {
familyId: cache.familyId,
taskId: action.taskId
},
transaction: cache.transaction
})
if (taskInfo === null) throw new MissingTaskException()
if (taskInfo.pendingRequest === 0) throw new IllegalStateException({ staticMessage: 'no task review pending' })
if (action.ok) {
const categoryInfoUnsafe = await cache.database.category.findOne({
where: {
familyId: cache.familyId,
categoryId: taskInfo.categoryId
},
attributes: ['extraTimeInMillis', 'extraTimeDay'],
transaction: cache.transaction
})
if (categoryInfoUnsafe === null) {
throw new IllegalStateException({ staticMessage: 'category referenced from task not found' })
}
const categoryInfo = {
extraTimeInMillis: categoryInfoUnsafe.extraTimeInMillis,
extraTimeDay: categoryInfoUnsafe.extraTimeDay
}
if (categoryInfo.extraTimeDay !== 0 && categoryInfo.extraTimeInMillis > 0) {
// if the current time is daily, then extend the daily time only
await cache.database.category.update({
extraTimeInMillis: categoryInfo.extraTimeInMillis + taskInfo.extraTimeDuration
}, {
where: {
familyId: cache.familyId,
categoryId: taskInfo.categoryId
},
transaction: cache.transaction
})
} else {
await cache.database.category.update({
extraTimeInMillis: categoryInfo.extraTimeInMillis + taskInfo.extraTimeDuration,
extraTimeDay: -1
}, {
where: {
familyId: cache.familyId,
categoryId: taskInfo.categoryId
},
transaction: cache.transaction
})
}
cache.categoriesWithModifiedBaseData.add(taskInfo.categoryId)
await cache.database.childTask.update({
pendingRequest: 0,
lastGrantTimestamp: action.time.toString(10)
}, {
where: {
familyId: cache.familyId,
taskId: action.taskId
},
transaction: cache.transaction
})
} else {
await cache.database.childTask.update({
pendingRequest: 0
}, {
where: {
familyId: cache.familyId,
taskId: action.taskId
},
transaction: cache.transaction
})
}
cache.categoriesWithModifiedTasks.add(taskInfo.categoryId)
}
@@ -0,0 +1,88 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { UpdateChildTaskAction } from '../../../../action'
import { Cache } from '../cache'
import { IllegalStateException } from '../exception/illegal-state'
import { MissingCategoryException, MissingTaskException } from '../exception/missing-item'
export async function dispatchUpdateChildTaskAction ({ action, cache }: {
action: UpdateChildTaskAction
cache: Cache
}) {
const categoryInfoUnsafe = await cache.database.category.findOne({
where: {
familyId: cache.familyId,
categoryId: action.categoryId
},
attributes: ['childId'],
transaction: cache.transaction
})
if (categoryInfoUnsafe === null) throw new MissingCategoryException()
const taskInfo = await cache.database.childTask.findOne({
where: {
familyId: cache.familyId,
taskId: action.taskId
},
transaction: cache.transaction
})
const notFound = taskInfo === null
if (notFound !== action.isNew) {
if (action.isNew) {
throw new IllegalStateException({
staticMessage: 'can not create task which exists already'
})
} else {
throw new MissingTaskException()
}
}
if (taskInfo === null) {
await cache.database.childTask.create({
familyId: cache.familyId,
taskId: action.taskId,
categoryId: action.categoryId,
taskTitle: action.taskTitle,
extraTimeDuration: action.extraTimeDuration,
pendingRequest: 0,
lastGrantTimestamp: '0'
}, {
transaction: cache.transaction
})
cache.categoriesWithModifiedTasks.add(action.categoryId)
} else {
await cache.database.childTask.update({
taskTitle: action.taskTitle,
categoryId: action.categoryId,
extraTimeDuration: action.extraTimeDuration
}, {
where: {
familyId: cache.familyId,
taskId: action.taskId
},
transaction: cache.transaction
})
cache.categoriesWithModifiedTasks.add(taskInfo.categoryId)
cache.categoriesWithModifiedTasks.add(action.categoryId)
}
}
@@ -1,58 +0,0 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { UpdateParentBlockedTimesAction } from '../../../../action'
import { Cache } from '../cache'
import { ApplyActionException } from '../exception/index'
import { MissingUserException } from '../exception/missing-item'
export async function dispatchUpdateParentBlockedTimes ({ action, cache, parentUserId }: {
action: UpdateParentBlockedTimesAction
cache: Cache
parentUserId: string
}) {
if (parentUserId !== action.parentId && action.blockedTimes !== '') {
throw new ApplyActionException({ staticMessage: 'only a parent itself can add limits' })
}
const oldUser = await cache.database.user.findOne({
where: {
familyId: cache.familyId,
userId: action.parentId,
type: 'parent'
},
transaction: cache.transaction
})
if (!oldUser) {
throw new MissingUserException()
}
await cache.database.user.update({
blockedTimes: action.blockedTimes
}, {
where: {
familyId: cache.familyId,
userId: action.parentId,
type: 'parent'
},
transaction: cache.transaction
})
cache.invalidiateUserList = true
cache.areChangesImportant = true
}

Some files were not shown because too many files have changed in this diff Show More