From d67b7a7619b3209c2da818ddc063108978890911 Mon Sep 17 00:00:00 2001 From: Jonas Lochmann Date: Mon, 16 Nov 2020 01:00:00 +0100 Subject: [PATCH] Add child task support --- .../ClientPullChangesRequest.schema.json | 3 + docs/schema/README.md | 180 ++++++------ .../SerializedAppLogicAction.schema.json | 23 ++ .../schema/SerializedParentAction.schema.json | 93 ++++++ docs/schema/ServerDataStatus.schema.json | 59 ++++ ...ons-categorydatastatus-properties-tasks.md | 16 ++ ...srequest-definitions-categorydatastatus.md | 17 ++ docs/schema/clientpullchangesrequest.md | 17 ++ ...marktaskpendingaction-properties-taskid.md | 16 ++ ...edmarktaskpendingaction-properties-type.md | 24 ++ ...ializedmarktaskpendingaction-properties.md | 16 ++ ...nitions-serializedmarktaskpendingaction.md | 63 +++++ docs/schema/serializedapplogicaction.md | 54 ++++ ...deletechildtaskaction-properties-taskid.md | 16 ++ ...eddeletechildtaskaction-properties-type.md | 24 ++ ...ializeddeletechildtaskaction-properties.md | 16 ++ ...nitions-serializeddeletechildtaskaction.md | 63 +++++ ...izedreviewchildtaskaction-properties-ok.md | 16 ++ ...reviewchildtaskaction-properties-taskid.md | 16 ++ ...edreviewchildtaskaction-properties-time.md | 16 ++ ...edreviewchildtaskaction-properties-type.md | 24 ++ ...ializedreviewchildtaskaction-properties.md | 16 ++ ...nitions-serializedreviewchildtaskaction.md | 97 +++++++ ...techildtaskaction-properties-categoryid.md | 16 ++ ...taskaction-properties-extratimeduration.md | 16 ++ ...dupdatechildtaskaction-properties-isnew.md | 16 ++ ...updatechildtaskaction-properties-taskid.md | 16 ++ ...atechildtaskaction-properties-tasktitle.md | 16 ++ ...edupdatechildtaskaction-properties-type.md | 24 ++ ...ializedupdatechildtaskaction-properties.md | 16 ++ ...nitions-serializedupdatechildtaskaction.md | 131 +++++++++ docs/schema/serializedparentaction.md | 264 ++++++++++++++++++ ...-serverupdatedcategorytask-properties-d.md | 16 ++ ...-serverupdatedcategorytask-properties-i.md | 16 ++ ...-serverupdatedcategorytask-properties-l.md | 16 ++ ...-serverupdatedcategorytask-properties-p.md | 16 ++ ...-serverupdatedcategorytask-properties-t.md | 16 ++ ...ns-serverupdatedcategorytask-properties.md | 16 ++ ...s-definitions-serverupdatedcategorytask.md | 106 +++++++ ...atedcategorytasks-properties-categoryid.md | 16 ++ ...erupdatedcategorytasks-properties-tasks.md | 16 ++ ...updatedcategorytasks-properties-version.md | 16 ++ ...s-serverupdatedcategorytasks-properties.md | 16 ++ ...-definitions-serverupdatedcategorytasks.md | 72 +++++ .../serverdatastatus-properties-tasks.md | 16 ++ docs/schema/serverdatastatus.md | 175 ++++++++++++ src/action/deletechildtaskaction.ts | 42 +++ src/action/index.ts | 4 + src/action/marktaskpendingaction.ts | 42 +++ src/action/reviewchildtaskaction.ts | 57 ++++ src/action/serialization/applogicaction.ts | 4 + src/action/serialization/parentaction.ts | 12 + src/action/updatechildtaskaction.ts | 72 +++++ src/api/validator.ts | 166 +++++++++++ src/database/category.ts | 16 +- src/database/childtask.ts | 67 +++++ src/database/index.ts | 3 + .../migrations/20201116-add-child-tasks.ts | 53 ++++ src/function/sync/apply-actions/cache.ts | 17 ++ .../dispatch-app-logic-action/index.ts | 4 + .../marktaskpendingaction.ts | 87 ++++++ .../dispatch-parent-action/createcategory.ts | 3 +- .../deletechildtaskaction.ts | 48 ++++ .../dispatch-parent-action/index.ts | 12 + .../reviewchildtaskaction.ts | 107 +++++++ .../updatechildtaskaction.ts | 88 ++++++ .../apply-actions/exception/missing-item.ts | 6 + .../get-server-data-status/category/diff.ts | 14 +- .../get-server-data-status/category/index.ts | 1 + .../get-server-data-status/category/tasks.ts | 70 +++++ .../sync/get-server-data-status/index.ts | 12 +- src/object/clientdatastatus.ts | 1 + src/object/serverdatastatus.ts | 15 + 73 files changed, 2864 insertions(+), 88 deletions(-) create mode 100644 docs/schema/clientpullchangesrequest-definitions-categorydatastatus-properties-tasks.md create mode 100644 docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-taskid.md create mode 100644 docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-type.md create mode 100644 docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties.md create mode 100644 docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction.md create mode 100644 docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction-properties-taskid.md create mode 100644 docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction-properties-type.md create mode 100644 docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction-properties.md create mode 100644 docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction.md create mode 100644 docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-ok.md create mode 100644 docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-taskid.md create mode 100644 docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-time.md create mode 100644 docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-type.md create mode 100644 docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties.md create mode 100644 docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction.md create mode 100644 docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-categoryid.md create mode 100644 docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-extratimeduration.md create mode 100644 docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-isnew.md create mode 100644 docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-taskid.md create mode 100644 docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-tasktitle.md create mode 100644 docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-type.md create mode 100644 docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties.md create mode 100644 docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction.md create mode 100644 docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-d.md create mode 100644 docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-i.md create mode 100644 docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-l.md create mode 100644 docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-p.md create mode 100644 docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-t.md create mode 100644 docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties.md create mode 100644 docs/schema/serverdatastatus-definitions-serverupdatedcategorytask.md create mode 100644 docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties-categoryid.md create mode 100644 docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties-tasks.md create mode 100644 docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties-version.md create mode 100644 docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties.md create mode 100644 docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks.md create mode 100644 docs/schema/serverdatastatus-properties-tasks.md create mode 100644 src/action/deletechildtaskaction.ts create mode 100644 src/action/marktaskpendingaction.ts create mode 100644 src/action/reviewchildtaskaction.ts create mode 100644 src/action/updatechildtaskaction.ts create mode 100644 src/database/childtask.ts create mode 100644 src/database/migration/migrations/20201116-add-child-tasks.ts create mode 100644 src/function/sync/apply-actions/dispatch-app-logic-action/marktaskpendingaction.ts create mode 100644 src/function/sync/apply-actions/dispatch-parent-action/deletechildtaskaction.ts create mode 100644 src/function/sync/apply-actions/dispatch-parent-action/reviewchildtaskaction.ts create mode 100644 src/function/sync/apply-actions/dispatch-parent-action/updatechildtaskaction.ts create mode 100644 src/function/sync/get-server-data-status/category/tasks.ts diff --git a/docs/schema/ClientPullChangesRequest.schema.json b/docs/schema/ClientPullChangesRequest.schema.json index 6784ad3..e112fa6 100644 --- a/docs/schema/ClientPullChangesRequest.schema.json +++ b/docs/schema/ClientPullChangesRequest.schema.json @@ -62,6 +62,9 @@ }, "usedTime": { "type": "string" + }, + "tasks": { + "type": "string" } }, "additionalProperties": false, diff --git a/docs/schema/README.md b/docs/schema/README.md index ed21a87..e5f4bf8 100644 --- a/docs/schema/README.md +++ b/docs/schema/README.md @@ -43,175 +43,188 @@ - [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-anyof-serialiizedupdatenetworktimeverificationaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/41` - [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` +- [SerializeResetCategoryNetworkIdsAction](./serializedparentaction-anyof-serializeresetcategorynetworkidsaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/14` - [SerializeResetCategoryNetworkIdsAction](./serializedparentaction-definitions-serializeresetcategorynetworkidsaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializeResetCategoryNetworkIdsAction` -- [SerializedAddCategoryAppsAction](./serializedparentaction-anyof-serializedaddcategoryappsaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/0` - [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` +- [SerializedAddUsedTimeAction](./serializedapplogicaction-anyof-serializedaddusedtimeaction.md) – `https://timelimit.io/SerializedAppLogicAction#/anyOf/1` - [SerializedAddUsedTimeActionVersion2](./serializedapplogicaction-definitions-serializedaddusedtimeactionversion2.md) – `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddUsedTimeActionVersion2` -- [SerializedAddUserAction](./serializedparentaction-anyof-serializedadduseraction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/2` +- [SerializedAddUsedTimeActionVersion2](./serializedapplogicaction-anyof-serializedaddusedtimeactionversion2.md) – `https://timelimit.io/SerializedAppLogicAction#/anyOf/2` - [SerializedAddUserAction](./serializedparentaction-definitions-serializedadduseraction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedAddUserAction` +- [SerializedAddUserAction](./serializedparentaction-anyof-serializedadduseraction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/2` - [SerializedAppActivityItem](./serverdatastatus-definitions-serverinstalledappsdata-properties-activities-serializedappactivityitem.md) – `https://timelimit.io/ServerDataStatus#/definitions/ServerInstalledAppsData/properties/activities/items` +- [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-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](./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` - [SerializedChildChangePasswordAction](./serializedchildaction-anyof-serializedchildchangepasswordaction.md) – `https://timelimit.io/SerializedChildAction#/anyOf/0` - [SerializedChildSignInAction](./serializedchildaction-definitions-serializedchildsigninaction.md) – `https://timelimit.io/SerializedChildAction#/definitions/SerializedChildSignInAction` - [SerializedChildSignInAction](./serializedchildaction-anyof-serializedchildsigninaction.md) – `https://timelimit.io/SerializedChildAction#/anyOf/1` -- [SerializedCreateCategoryAction](./serializedparentaction-definitions-serializedcreatecategoryaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedCreateCategoryAction` - [SerializedCreateCategoryAction](./serializedparentaction-anyof-serializedcreatecategoryaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/4` +- [SerializedCreateCategoryAction](./serializedparentaction-definitions-serializedcreatecategoryaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedCreateCategoryAction` - [SerializedCreateTimelimtRuleAction](./serializedparentaction-anyof-serializedcreatetimelimtruleaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/5` - [SerializedCreateTimelimtRuleAction](./serializedparentaction-definitions-serializedcreatetimelimtruleaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedCreateTimelimtRuleAction` - [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` - [SerializedIgnoreManipulationAction](./serializedparentaction-definitions-serializedignoremanipulationaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedIgnoreManipulationAction` -- [SerializedIgnoreManipulationAction](./serializedparentaction-anyof-serializedignoremanipulationaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/8` +- [SerializedIgnoreManipulationAction](./serializedparentaction-anyof-serializedignoremanipulationaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/9` - [SerializedIncrementCategoryExtraTimeAction](./serializedparentaction-definitions-serializedincrementcategoryextratimeaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedIncrementCategoryExtraTimeAction` -- [SerializedIncrementCategoryExtraTimeAction](./serializedparentaction-anyof-serializedincrementcategoryextratimeaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/9` +- [SerializedIncrementCategoryExtraTimeAction](./serializedparentaction-anyof-serializedincrementcategoryextratimeaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/10` +- [SerializedInstalledApp](./serializedapplogicaction-definitions-serializedaddinstalledappsaction-properties-apps-serializedinstalledapp.md) – `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedAddInstalledAppsAction/properties/apps/items` - [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` +- [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](./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` +- [SerializedMarkTaskPendingAction](./serializedapplogicaction-anyof-serializedmarktaskpendingaction.md) – `https://timelimit.io/SerializedAppLogicAction#/anyOf/4` +- [SerializedMarkTaskPendingAction](./serializedapplogicaction-definitions-serializedmarktaskpendingaction.md) – `https://timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction` - [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-anyof-serializedremoveuseraction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/12` - [SerializedRemoveUserAction](./serializedparentaction-definitions-serializedremoveuseraction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedRemoveUserAction` +- [SerializedRenameChildAction](./serializedparentaction-anyof-serializedrenamechildaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/13` - [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` +- [SerializedResetParentBlockedTimesAction](./serializedparentaction-anyof-serializedresetparentblockedtimesaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/15` +- [SerializedReviewChildTaskAction](./serializedparentaction-anyof-serializedreviewchildtaskaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/16` +- [SerializedReviewChildTaskAction](./serializedparentaction-definitions-serializedreviewchildtaskaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction` - [SerializedSetCategoryExtraTimeAction](./serializedparentaction-definitions-serializedsetcategoryextratimeaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetCategoryExtraTimeAction` -- [SerializedSetCategoryExtraTimeAction](./serializedparentaction-anyof-serializedsetcategoryextratimeaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/15` +- [SerializedSetCategoryExtraTimeAction](./serializedparentaction-anyof-serializedsetcategoryextratimeaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/17` +- [SerializedSetCategoryForUnassignedAppsAction](./serializedparentaction-anyof-serializedsetcategoryforunassignedappsaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/18` - [SerializedSetCategoryForUnassignedAppsAction](./serializedparentaction-definitions-serializedsetcategoryforunassignedappsaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetCategoryForUnassignedAppsAction` -- [SerializedSetCategoryForUnassignedAppsAction](./serializedparentaction-anyof-serializedsetcategoryforunassignedappsaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/16` +- [SerializedSetChildPasswordAction](./serializedparentaction-anyof-serializedsetchildpasswordaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/19` - [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/20` - [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-anyof-serializedsetdevicedefaultuseraction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/21` - [SerializedSetDeviceDefaultUserAction](./serializedparentaction-definitions-serializedsetdevicedefaultuseraction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetDeviceDefaultUserAction` - [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/22` +- [SerializedSetDeviceUserAction](./serializedparentaction-anyof-serializedsetdeviceuseraction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/23` - [SerializedSetDeviceUserAction](./serializedparentaction-definitions-serializedsetdeviceuseraction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetDeviceUserAction` -- [SerializedSetDeviceUserAction](./serializedparentaction-anyof-serializedsetdeviceuseraction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/21` +- [SerializedSetKeepSignedInAction](./serializedparentaction-anyof-serializedsetkeepsignedinaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/24` - [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` +- [SerializedSetParentCategoryAction](./serializedparentaction-anyof-serializedsetparentcategoryaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/25` - [SerializedSetParentCategoryAction](./serializedparentaction-definitions-serializedsetparentcategoryaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedSetParentCategoryAction` -- [SerializedSetRelaxPrimaryDeviceAction](./serializedparentaction-anyof-serializedsetrelaxprimarydeviceaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/24` +- [SerializedSetRelaxPrimaryDeviceAction](./serializedparentaction-anyof-serializedsetrelaxprimarydeviceaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/26` - [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/27` - [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/28` +- [SerializedSetUserTimezoneAction](./serializedparentaction-anyof-serializedsetusertimezoneaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/29` - [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` +- [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` - [SerializedUpdatCategoryDisableLimitsAction](./serializedparentaction-definitions-serializedupdatcategorydisablelimitsaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdatCategoryDisableLimitsAction` +- [SerializedUpdatCategoryDisableLimitsAction](./serializedparentaction-anyof-serializedupdatcategorydisablelimitsaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/33` - [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/30` - [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/31` - [SerializedUpdateCategoryBlockedTimesAction](./serializedparentaction-definitions-serializedupdatecategoryblockedtimesaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateCategoryBlockedTimesAction` +- [SerializedUpdateCategoryBlockedTimesAction](./serializedparentaction-anyof-serializedupdatecategoryblockedtimesaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/32` +- [SerializedUpdateCategorySortingAction](./serializedparentaction-anyof-serializedupdatecategorysortingaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/34` - [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/35` - [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/36` - [SerializedUpdateCategoryTimeWarningsAction](./serializedparentaction-definitions-serializedupdatecategorytimewarningsaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateCategoryTimeWarningsAction` +- [SerializedUpdateCategoryTitleAction](./serializedparentaction-anyof-serializedupdatecategorytitleaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/37` - [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/38` +- [SerializedUpdateChildTaskAction](./serializedparentaction-definitions-serializedupdatechildtaskaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction` +- [SerializedUpdateDeviceNameAction](./serializedparentaction-anyof-serializedupdatedevicenameaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/39` - [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/40` - [SerializedUpdateEnableActivityLevelBlockingAction](./serializedparentaction-definitions-serializedupdateenableactivitylevelblockingaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateEnableActivityLevelBlockingAction` +- [SerializedUpdateParentBlockedTimesAction](./serializedparentaction-anyof-serializedupdateparentblockedtimesaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/42` - [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/43` - [SerializedUpdateParentNotificationFlagsAction](./serializedparentaction-definitions-serializedupdateparentnotificationflagsaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateParentNotificationFlagsAction` - [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` +- [SerializedUpdateTimelimitRuleAction](./serializedparentaction-anyof-serializedupdatetimelimitruleaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/44` +- [SerializedUpdateUserFlagsAction](./serializedparentaction-anyof-serializedupdateuserflagsaction.md) – `https://timelimit.io/SerializedParentAction#/anyOf/45` - [SerializedUpdateUserFlagsAction](./serializedparentaction-definitions-serializedupdateuserflagsaction.md) – `https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateUserFlagsAction` +- [SerializedUpdateUserLimitLoginCategory](./serializedparentaction-anyof-serializedupdateuserlimitlogincategory.md) – `https://timelimit.io/SerializedParentAction#/anyOf/46` - [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` - [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 +242,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 +271,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 +284,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 diff --git a/docs/schema/SerializedAppLogicAction.schema.json b/docs/schema/SerializedAppLogicAction.schema.json index dd29150..bcf390c 100644 --- a/docs/schema/SerializedAppLogicAction.schema.json +++ b/docs/schema/SerializedAppLogicAction.schema.json @@ -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": { diff --git a/docs/schema/SerializedParentAction.schema.json b/docs/schema/SerializedParentAction.schema.json index d7aa786..536d614 100644 --- a/docs/schema/SerializedParentAction.schema.json +++ b/docs/schema/SerializedParentAction.schema.json @@ -21,6 +21,9 @@ { "$ref": "#/definitions/SerializedDeleteCategoryAction" }, + { + "$ref": "#/definitions/SerializedDeleteChildTaskAction" + }, { "$ref": "#/definitions/SerializedDeleteTimeLimitRuleAction" }, @@ -45,6 +48,9 @@ { "$ref": "#/definitions/SerializedResetParentBlockedTimesAction" }, + { + "$ref": "#/definitions/SerializedReviewChildTaskAction" + }, { "$ref": "#/definitions/SerializedSetCategoryExtraTimeAction" }, @@ -108,6 +114,9 @@ { "$ref": "#/definitions/SerializedUpdateCategoryTitleAction" }, + { + "$ref": "#/definitions/SerializedUpdateChildTaskAction" + }, { "$ref": "#/definitions/SerializedUpdateDeviceNameAction" }, @@ -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": { @@ -611,6 +640,34 @@ ], "title": "SerializedResetParentBlockedTimesAction" }, + "SerializedReviewChildTaskAction": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "REVIEW_CHILD_TASK" + ] + }, + "taskId": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "time": { + "type": "number" + } + }, + "additionalProperties": false, + "required": [ + "ok", + "taskId", + "time", + "type" + ], + "title": "SerializedReviewChildTaskAction" + }, "SerializedSetCategoryExtraTimeAction": { "type": "object", "properties": { @@ -1126,6 +1183,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": { diff --git a/docs/schema/ServerDataStatus.schema.json b/docs/schema/ServerDataStatus.schema.json index e3af570..121ca43 100644 --- a/docs/schema/ServerDataStatus.schema.json +++ b/docs/schema/ServerDataStatus.schema.json @@ -40,6 +40,12 @@ "$ref": "#/definitions/ServerUpdatedTimeLimitRules" } }, + "tasks": { + "type": "array", + "items": { + "$ref": "#/definitions/ServerUpdatedCategoryTasks" + } + }, "users": { "$ref": "#/definitions/ServerUserList" }, @@ -604,6 +610,59 @@ ], "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": { diff --git a/docs/schema/clientpullchangesrequest-definitions-categorydatastatus-properties-tasks.md b/docs/schema/clientpullchangesrequest-definitions-categorydatastatus-properties-tasks.md new file mode 100644 index 0000000..b5d68c2 --- /dev/null +++ b/docs/schema/clientpullchangesrequest-definitions-categorydatastatus-properties-tasks.md @@ -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` diff --git a/docs/schema/clientpullchangesrequest-definitions-categorydatastatus.md b/docs/schema/clientpullchangesrequest-definitions-categorydatastatus.md index c9a62f2..5c47926 100644 --- a/docs/schema/clientpullchangesrequest-definitions-categorydatastatus.md +++ b/docs/schema/clientpullchangesrequest-definitions-categorydatastatus.md @@ -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://timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/apps") | | [rules](#rules) | `string` | Required | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-rules.md "https://timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/rules") | | [usedTime](#usedTime) | `string` | Required | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-usedtime.md "https://timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/usedTime") | +| [tasks](#tasks) | `string` | Optional | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-tasks.md "https://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://timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/tasks") + +### tasks Type + +`string` diff --git a/docs/schema/clientpullchangesrequest.md b/docs/schema/clientpullchangesrequest.md index 1aafb55..d01003a 100644 --- a/docs/schema/clientpullchangesrequest.md +++ b/docs/schema/clientpullchangesrequest.md @@ -127,6 +127,7 @@ Reference this group by using | [apps](#apps) | `string` | Required | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-apps.md "https://timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/apps") | | [rules](#rules) | `string` | Required | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-rules.md "https://timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/rules") | | [usedTime](#usedTime) | `string` | Required | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-usedtime.md "https://timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/usedTime") | +| [tasks](#tasks) | `string` | Optional | cannot be null | [ClientPullChangesRequest](clientpullchangesrequest-definitions-categorydatastatus-properties-tasks.md "https://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://timelimit.io/ClientPullChangesRequest#/definitions/CategoryDataStatus/properties/tasks") + +#### tasks Type + +`string` + # ClientPullChangesRequest Properties | Property | Type | Required | Nullable | Defined by | diff --git a/docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-taskid.md b/docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-taskid.md new file mode 100644 index 0000000..414d346 --- /dev/null +++ b/docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-taskid.md @@ -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` diff --git a/docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-type.md b/docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-type.md new file mode 100644 index 0000000..79c33fb --- /dev/null +++ b/docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-type.md @@ -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"` | | diff --git a/docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties.md b/docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties.md new file mode 100644 index 0000000..1d87567 --- /dev/null +++ b/docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties.md @@ -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 diff --git a/docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction.md b/docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction.md new file mode 100644 index 0000000..6ddb8c1 --- /dev/null +++ b/docs/schema/serializedapplogicaction-definitions-serializedmarktaskpendingaction.md @@ -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://timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties/type") | +| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedAppLogicAction](serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-taskid.md "https://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://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://timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties/taskId") + +### taskId Type + +`string` diff --git a/docs/schema/serializedapplogicaction.md b/docs/schema/serializedapplogicaction.md index 8eb6c8b..816fa1b 100644 --- a/docs/schema/serializedapplogicaction.md +++ b/docs/schema/serializedapplogicaction.md @@ -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://timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties/type") | +| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedAppLogicAction](serializedapplogicaction-definitions-serializedmarktaskpendingaction-properties-taskid.md "https://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://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://timelimit.io/SerializedAppLogicAction#/definitions/SerializedMarkTaskPendingAction/properties/taskId") + +#### taskId Type + +`string` + ## Definitions group SerializedRemoveInstalledAppsAction Reference this group by using diff --git a/docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction-properties-taskid.md b/docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction-properties-taskid.md new file mode 100644 index 0000000..7cd9a71 --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction-properties-taskid.md @@ -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` diff --git a/docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction-properties-type.md b/docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction-properties-type.md new file mode 100644 index 0000000..8431abe --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction-properties-type.md @@ -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"` | | diff --git a/docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction-properties.md b/docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction-properties.md new file mode 100644 index 0000000..92a3d07 --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction-properties.md @@ -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 diff --git a/docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction.md b/docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction.md new file mode 100644 index 0000000..12ff191 --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializeddeletechildtaskaction.md @@ -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://timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties/type") | +| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializeddeletechildtaskaction-properties-taskid.md "https://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://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://timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties/taskId") + +### taskId Type + +`string` diff --git a/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-ok.md b/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-ok.md new file mode 100644 index 0000000..485fffe --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-ok.md @@ -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` diff --git a/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-taskid.md b/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-taskid.md new file mode 100644 index 0000000..fd0cbdf --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-taskid.md @@ -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` diff --git a/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-time.md b/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-time.md new file mode 100644 index 0000000..096ba67 --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-time.md @@ -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` diff --git a/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-type.md b/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-type.md new file mode 100644 index 0000000..07ae30f --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties-type.md @@ -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"` | | diff --git a/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties.md b/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties.md new file mode 100644 index 0000000..99c5557 --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction-properties.md @@ -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 diff --git a/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction.md b/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction.md new file mode 100644 index 0000000..ccf66f4 --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializedreviewchildtaskaction.md @@ -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://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/type") | +| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-taskid.md "https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/taskId") | +| [ok](#ok) | `boolean` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-ok.md "https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/ok") | +| [time](#time) | `number` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-time.md "https://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://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://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://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://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/time") + +### time Type + +`number` diff --git a/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-categoryid.md b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-categoryid.md new file mode 100644 index 0000000..5cbf1e9 --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-categoryid.md @@ -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` diff --git a/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-extratimeduration.md b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-extratimeduration.md new file mode 100644 index 0000000..3501b78 --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-extratimeduration.md @@ -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` diff --git a/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-isnew.md b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-isnew.md new file mode 100644 index 0000000..721927a --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-isnew.md @@ -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` diff --git a/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-taskid.md b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-taskid.md new file mode 100644 index 0000000..c400aa0 --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-taskid.md @@ -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` diff --git a/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-tasktitle.md b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-tasktitle.md new file mode 100644 index 0000000..57a9f5d --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-tasktitle.md @@ -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` diff --git a/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-type.md b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-type.md new file mode 100644 index 0000000..e52c479 --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties-type.md @@ -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"` | | diff --git a/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties.md b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties.md new file mode 100644 index 0000000..145a758 --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction-properties.md @@ -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 diff --git a/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction.md b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction.md new file mode 100644 index 0000000..e4cb62d --- /dev/null +++ b/docs/schema/serializedparentaction-definitions-serializedupdatechildtaskaction.md @@ -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://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/type") | +| [isNew](#isNew) | `boolean` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-isnew.md "https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/isNew") | +| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-taskid.md "https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/taskId") | +| [categoryId](#categoryId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-categoryid.md "https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/categoryId") | +| [taskTitle](#taskTitle) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-tasktitle.md "https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/taskTitle") | +| [extraTimeDuration](#extraTimeDuration) | `number` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-extratimeduration.md "https://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://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://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://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://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://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://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/extraTimeDuration") + +### extraTimeDuration Type + +`number` diff --git a/docs/schema/serializedparentaction.md b/docs/schema/serializedparentaction.md index d452496..1b52ae0 100644 --- a/docs/schema/serializedparentaction.md +++ b/docs/schema/serializedparentaction.md @@ -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") @@ -32,6 +33,7 @@ any of - [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,6 +55,7 @@ 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") @@ -891,6 +894,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://timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties/type") | +| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializeddeletechildtaskaction-properties-taskid.md "https://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://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://timelimit.io/SerializedParentAction#/definitions/SerializedDeleteChildTaskAction/properties/taskId") + +#### taskId Type + +`string` + ## Definitions group SerializedDeleteTimeLimitRuleAction Reference this group by using @@ -1570,6 +1626,93 @@ Reference this group by using `string` +## Definitions group SerializedReviewChildTaskAction + +Reference this group by using + +```json +{"$ref":"https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :---------------- | --------- | -------- | -------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [type](#type) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-type.md "https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/type") | +| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-taskid.md "https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/taskId") | +| [ok](#ok) | `boolean` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-ok.md "https://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/ok") | +| [time](#time) | `number` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedreviewchildtaskaction-properties-time.md "https://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://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://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://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://timelimit.io/SerializedParentAction#/definitions/SerializedReviewChildTaskAction/properties/time") + +#### time Type + +`number` + ## Definitions group SerializedSetCategoryExtraTimeAction Reference this group by using @@ -3091,6 +3234,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://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/type") | +| [isNew](#isNew) | `boolean` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-isnew.md "https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/isNew") | +| [taskId](#taskId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-taskid.md "https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/taskId") | +| [categoryId](#categoryId) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-categoryid.md "https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/categoryId") | +| [taskTitle](#taskTitle) | `string` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-tasktitle.md "https://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/taskTitle") | +| [extraTimeDuration](#extraTimeDuration) | `number` | Required | cannot be null | [SerializedParentAction](serializedparentaction-definitions-serializedupdatechildtaskaction-properties-extratimeduration.md "https://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://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://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://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://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://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://timelimit.io/SerializedParentAction#/definitions/SerializedUpdateChildTaskAction/properties/extraTimeDuration") + +#### extraTimeDuration Type + +`number` + ## Definitions group SerializedUpdateDeviceNameAction Reference this group by using diff --git a/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-d.md b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-d.md new file mode 100644 index 0000000..96b263a --- /dev/null +++ b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-d.md @@ -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` diff --git a/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-i.md b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-i.md new file mode 100644 index 0000000..88a4bab --- /dev/null +++ b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-i.md @@ -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` diff --git a/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-l.md b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-l.md new file mode 100644 index 0000000..52d77d5 --- /dev/null +++ b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-l.md @@ -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` diff --git a/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-p.md b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-p.md new file mode 100644 index 0000000..76e0d34 --- /dev/null +++ b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-p.md @@ -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` diff --git a/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-t.md b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-t.md new file mode 100644 index 0000000..a86d3d4 --- /dev/null +++ b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties-t.md @@ -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` diff --git a/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties.md b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties.md new file mode 100644 index 0000000..7ffbf02 --- /dev/null +++ b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask-properties.md @@ -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 diff --git a/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask.md b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask.md new file mode 100644 index 0000000..6a9e4d9 --- /dev/null +++ b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytask.md @@ -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://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/i") | +| [t](#t) | `string` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-t.md "https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/t") | +| [d](#d) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-d.md "https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/d") | +| [p](#p) | `boolean` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-p.md "https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/p") | +| [l](#l) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-l.md "https://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://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://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://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://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://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/l") + +### l Type + +`number` diff --git a/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties-categoryid.md b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties-categoryid.md new file mode 100644 index 0000000..46ba965 --- /dev/null +++ b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties-categoryid.md @@ -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` diff --git a/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties-tasks.md b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties-tasks.md new file mode 100644 index 0000000..9838457 --- /dev/null +++ b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties-tasks.md @@ -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)) diff --git a/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties-version.md b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties-version.md new file mode 100644 index 0000000..22ad525 --- /dev/null +++ b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties-version.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` diff --git a/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties.md b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties.md new file mode 100644 index 0000000..b6665f2 --- /dev/null +++ b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks-properties.md @@ -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 diff --git a/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks.md b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks.md new file mode 100644 index 0000000..9660bb4 --- /dev/null +++ b/docs/schema/serverdatastatus-definitions-serverupdatedcategorytasks.md @@ -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://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/categoryId") | +| [version](#version) | `string` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-version.md "https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/version") | +| [tasks](#tasks) | `array` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-tasks.md "https://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://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://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://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/tasks") + +### tasks Type + +`object[]` ([ServerUpdatedCategoryTask](serverdatastatus-definitions-serverupdatedcategorytask.md)) diff --git a/docs/schema/serverdatastatus-properties-tasks.md b/docs/schema/serverdatastatus-properties-tasks.md new file mode 100644 index 0000000..ba19d11 --- /dev/null +++ b/docs/schema/serverdatastatus-properties-tasks.md @@ -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)) diff --git a/docs/schema/serverdatastatus.md b/docs/schema/serverdatastatus.md index 823060d..8751380 100644 --- a/docs/schema/serverdatastatus.md +++ b/docs/schema/serverdatastatus.md @@ -1838,6 +1838,164 @@ Reference this group by using `number` +## 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://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/categoryId") | +| [version](#version) | `string` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-version.md "https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTasks/properties/version") | +| [tasks](#tasks) | `array` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytasks-properties-tasks.md "https://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://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://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://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://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/i") | +| [t](#t) | `string` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-t.md "https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/t") | +| [d](#d) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-d.md "https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/d") | +| [p](#p) | `boolean` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-p.md "https://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/p") | +| [l](#l) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serverupdatedcategorytask-properties-l.md "https://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://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://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://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://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://timelimit.io/ServerDataStatus#/definitions/ServerUpdatedCategoryTask/properties/l") + +#### l Type + +`number` + ## Definitions group ServerUserList Reference this group by using @@ -2169,6 +2327,7 @@ Reference this group by using | [categoryApp](#categoryApp) | `array` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-properties-categoryapp.md "https://timelimit.io/ServerDataStatus#/properties/categoryApp") | | [usedTimes](#usedTimes) | `array` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-properties-usedtimes.md "https://timelimit.io/ServerDataStatus#/properties/usedTimes") | | [rules](#rules) | `array` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-properties-rules.md "https://timelimit.io/ServerDataStatus#/properties/rules") | +| [tasks](#tasks) | `array` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-properties-tasks.md "https://timelimit.io/ServerDataStatus#/properties/tasks") | | [users](#users) | `object` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-definitions-serveruserlist.md "https://timelimit.io/ServerDataStatus#/properties/users") | | [fullVersion](#fullVersion) | `number` | Required | cannot be null | [ServerDataStatus](serverdatastatus-properties-fullversion.md "https://timelimit.io/ServerDataStatus#/properties/fullVersion") | | [message](#message) | `string` | Optional | cannot be null | [ServerDataStatus](serverdatastatus-properties-message.md "https://timelimit.io/ServerDataStatus#/properties/message") | @@ -2285,6 +2444,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://timelimit.io/ServerDataStatus#/properties/tasks") + +### tasks Type + +`object[]` ([ServerUpdatedCategoryTasks](serverdatastatus-definitions-serverupdatedcategorytasks.md)) + ## users diff --git a/src/action/deletechildtaskaction.ts b/src/action/deletechildtaskaction.ts new file mode 100644 index 0000000..53741e0 --- /dev/null +++ b/src/action/deletechildtaskaction.ts @@ -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 . + */ + +import { ParentAction } from './basetypes' +import { assertIdWithinFamily } from './meta/util' + +const actionType = 'DeleteChildTaskAction' + +export class DeleteChildTaskAction extends ParentAction { + readonly taskId: string + + constructor ({ taskId }: { taskId: string }) { + super() + + assertIdWithinFamily({ actionType, field: 'taskId', value: taskId }) + + this.taskId = taskId + } + + static parse = ({ taskId }: SerializedDeleteChildTaskAction) => ( + new DeleteChildTaskAction({ taskId }) + ) +} + +export interface SerializedDeleteChildTaskAction { + type: 'DELETE_CHILD_TASK' + taskId: string +} diff --git a/src/action/index.ts b/src/action/index.ts index 84f6f56..b3003a8 100644 --- a/src/action/index.ts +++ b/src/action/index.ts @@ -72,3 +72,7 @@ export { UpdateParentNotificationFlagsAction } from './updateparentnotificationf 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' diff --git a/src/action/marktaskpendingaction.ts b/src/action/marktaskpendingaction.ts new file mode 100644 index 0000000..570c5dc --- /dev/null +++ b/src/action/marktaskpendingaction.ts @@ -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 . + */ + +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 +} diff --git a/src/action/reviewchildtaskaction.ts b/src/action/reviewchildtaskaction.ts new file mode 100644 index 0000000..fc61d39 --- /dev/null +++ b/src/action/reviewchildtaskaction.ts @@ -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 . + */ + +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 +} diff --git a/src/action/serialization/applogicaction.ts b/src/action/serialization/applogicaction.ts index b464af1..cef77f1 100644 --- a/src/action/serialization/applogicaction.ts +++ b/src/action/serialization/applogicaction.ts @@ -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') { diff --git a/src/action/serialization/parentaction.ts b/src/action/serialization/parentaction.ts index 2befbb1..b5ff43e 100644 --- a/src/action/serialization/parentaction.ts +++ b/src/action/serialization/parentaction.ts @@ -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' @@ -32,6 +33,7 @@ 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,6 +55,7 @@ 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' @@ -70,6 +73,7 @@ export type SerializedParentAction = SerializedCreateCategoryAction | SerializedCreateTimelimtRuleAction | SerializedDeleteCategoryAction | + SerializedDeleteChildTaskAction | SerializedDeleteTimeLimitRuleAction | SerializedIgnoreManipulationAction | SerializedIncrementCategoryExtraTimeAction | @@ -78,6 +82,7 @@ export type SerializedParentAction = SerializedRenameChildAction | SerializeResetCategoryNetworkIdsAction | SerializedResetParentBlockedTimesAction | + SerializedReviewChildTaskAction | SerializedSetCategoryForUnassignedAppsAction | SerializedSetChildPasswordAction | SerializedSetConsiderRebootManipulationAction | @@ -99,6 +104,7 @@ export type SerializedParentAction = SerializedUpdateCategoryTemporarilyBlockedAction | SerializedUpdateCategoryTimeWarningsAction | SerializedUpdateCategoryTitleAction | + SerializedUpdateChildTaskAction | SerializedUpdateDeviceNameAction | SerializedUpdateEnableActivityLevelBlockingAction | SerialiizedUpdateNetworkTimeVerificationAction | @@ -123,6 +129,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') { @@ -139,6 +147,8 @@ export const parseParentAction = (action: SerializedParentAction): ParentAction 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 +189,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') { diff --git a/src/action/updatechildtaskaction.ts b/src/action/updatechildtaskaction.ts new file mode 100644 index 0000000..50f1511 --- /dev/null +++ b/src/action/updatechildtaskaction.ts @@ -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 . + */ + +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 +} diff --git a/src/api/validator.ts b/src/api/validator.ts index d394737..ee22472 100644 --- a/src/api/validator.ts +++ b/src/api/validator.ts @@ -84,6 +84,9 @@ const definitions = { }, "usedTime": { "type": "string" + }, + "tasks": { + "type": "string" } }, "additionalProperties": false, @@ -357,6 +360,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": { @@ -566,6 +588,33 @@ const definitions = { "type" ] }, + "SerializedReviewChildTaskAction": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "REVIEW_CHILD_TASK" + ] + }, + "taskId": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "time": { + "type": "number" + } + }, + "additionalProperties": false, + "required": [ + "ok", + "taskId", + "time", + "type" + ] + }, "SerializedSetCategoryExtraTimeAction": { "type": "object", "properties": { @@ -1060,6 +1109,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": { @@ -1484,6 +1568,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": { @@ -2178,6 +2281,57 @@ const definitions = { "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": { @@ -2460,6 +2614,9 @@ export const isSerializedParentAction: (value: object) => value is SerializedPar { "$ref": "#/definitions/SerializedDeleteCategoryAction" }, + { + "$ref": "#/definitions/SerializedDeleteChildTaskAction" + }, { "$ref": "#/definitions/SerializedDeleteTimeLimitRuleAction" }, @@ -2484,6 +2641,9 @@ export const isSerializedParentAction: (value: object) => value is SerializedPar { "$ref": "#/definitions/SerializedResetParentBlockedTimesAction" }, + { + "$ref": "#/definitions/SerializedReviewChildTaskAction" + }, { "$ref": "#/definitions/SerializedSetCategoryExtraTimeAction" }, @@ -2547,6 +2707,9 @@ export const isSerializedParentAction: (value: object) => value is SerializedPar { "$ref": "#/definitions/SerializedUpdateCategoryTitleAction" }, + { + "$ref": "#/definitions/SerializedUpdateChildTaskAction" + }, { "$ref": "#/definitions/SerializedUpdateDeviceNameAction" }, @@ -2589,6 +2752,9 @@ export const isSerializedAppLogicAction: (value: object) => value is SerializedA { "$ref": "#/definitions/SerializedForceSyncAction" }, + { + "$ref": "#/definitions/SerializedMarkTaskPendingAction" + }, { "$ref": "#/definitions/SerializedRemoveInstalledAppsAction" }, diff --git a/src/database/category.ts b/src/database/category.ts index f4c699d..1233077 100644 --- a/src/database/category.ts +++ b/src/database/category.ts @@ -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 } } +export const attributesVersion10: SequelizeAttributes = { + taskListVersion: { + ...versionColumn, + defaultValue: 'abcd' + } +} + export const attributes: SequelizeAttributes = { ...attributesVersion1, ...attributesVersion2, @@ -208,7 +219,8 @@ export const attributes: SequelizeAttributes = { ...attributesVersion6, ...attributesVersion7, ...attributesVersion8, - ...attributesVersion9 + ...attributesVersion9, + ...attributesVersion10 } export const createCategoryModel = (sequelize: Sequelize.Sequelize): CategoryModelStatic => sequelize.define('Category', attributes) as CategoryModelStatic diff --git a/src/database/childtask.ts b/src/database/childtask.ts new file mode 100644 index 0000000..8fb9fde --- /dev/null +++ b/src/database/childtask.ts @@ -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 . + */ + +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 = { + 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 diff --git a/src/database/index.ts b/src/database/index.ts index fdddd9d..fd9c6f0 100644 --- a/src/database/index.ts +++ b/src/database/index.ts @@ -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), diff --git a/src/database/migration/migrations/20201116-add-child-tasks.ts b/src/database/migration/migrations/20201116-add-child-tasks.ts new file mode 100644 index 0000000..bcf4223 --- /dev/null +++ b/src/database/migration/migrations/20201116-add-child-tasks.ts @@ -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 . + */ + +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 }) + }) +} diff --git a/src/function/sync/apply-actions/cache.ts b/src/function/sync/apply-actions/cache.ts index 3fc5a22..8d47299 100644 --- a/src/function/sync/apply-actions/cache.ts +++ b/src/function/sync/apply-actions/cache.ts @@ -37,6 +37,7 @@ export class Cache { categoriesWithModifiedBaseData = new Set() categoriesWithModifiedTimeLimitRules = new Set() categoriesWithModifiedUsedTimes = new Set() + categoriesWithModifiedTasks = new Set() devicesWithModifiedInstalledApps = new Set() devicesWithModifiedShowDeviceConnected = new Map() @@ -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() diff --git a/src/function/sync/apply-actions/dispatch-app-logic-action/index.ts b/src/function/sync/apply-actions/dispatch-app-logic-action/index.ts index eaed2d6..ebef50c 100644 --- a/src/function/sync/apply-actions/dispatch-app-logic-action/index.ts +++ b/src/function/sync/apply-actions/dispatch-app-logic-action/index.ts @@ -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) { diff --git a/src/function/sync/apply-actions/dispatch-app-logic-action/marktaskpendingaction.ts b/src/function/sync/apply-actions/dispatch-app-logic-action/marktaskpendingaction.ts new file mode 100644 index 0000000..cd6e334 --- /dev/null +++ b/src/function/sync/apply-actions/dispatch-app-logic-action/marktaskpendingaction.ts @@ -0,0 +1,87 @@ +/* + * 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 . + */ + +import { MarkTaskPendingAction } from '../../../../action' +import { Cache } from '../cache' +import { IllegalStateException, SourceDeviceNotFoundException } 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'] + }) + + if (taskInfoUnsafe === null) throw new MissingTaskException() + + const taskInfo = { + categoryId: taskInfoUnsafe.categoryId, + pendingRequest: taskInfoUnsafe.pendingRequest + } + + 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' }) + } + + await cache.database.childTask.update({ pendingRequest: true }, { + where: { + familyId: cache.familyId, + taskId: action.taskId + }, + transaction: cache.transaction + }) + + cache.categoriesWithModifiedTasks.add(taskInfo.categoryId) +} diff --git a/src/function/sync/apply-actions/dispatch-parent-action/createcategory.ts b/src/function/sync/apply-actions/dispatch-parent-action/createcategory.ts index 2cd656b..9e573ea 100644 --- a/src/function/sync/apply-actions/dispatch-parent-action/createcategory.ts +++ b/src/function/sync/apply-actions/dispatch-parent-action/createcategory.ts @@ -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 diff --git a/src/function/sync/apply-actions/dispatch-parent-action/deletechildtaskaction.ts b/src/function/sync/apply-actions/dispatch-parent-action/deletechildtaskaction.ts new file mode 100644 index 0000000..0ec5f38 --- /dev/null +++ b/src/function/sync/apply-actions/dispatch-parent-action/deletechildtaskaction.ts @@ -0,0 +1,48 @@ +/* + * 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 . + */ + +import { DeleteChildTaskAction } from '../../../../action' +import { Cache } from '../cache' +import { MissingTaskException } from '../exception/missing-item' + +export async function dispatchDeleteChildTaskAction ({ action, cache }: { + action: DeleteChildTaskAction + cache: Cache +}) { + const taskInfoUnsafe = await cache.database.childTask.findOne({ + where: { + familyId: cache.familyId, + 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 + }) + + cache.categoriesWithModifiedTasks.add(taskInfo.categoryId) +} diff --git a/src/function/sync/apply-actions/dispatch-parent-action/index.ts b/src/function/sync/apply-actions/dispatch-parent-action/index.ts index 12ce13a..593a36b 100644 --- a/src/function/sync/apply-actions/dispatch-parent-action/index.ts +++ b/src/function/sync/apply-actions/dispatch-parent-action/index.ts @@ -23,6 +23,7 @@ import { CreateCategoryAction, CreateTimeLimitRuleAction, DeleteCategoryAction, + DeleteChildTaskAction, DeleteTimeLimitRuleAction, IgnoreManipulationAction, IncrementCategoryExtraTimeAction, @@ -32,6 +33,7 @@ import { RenameChildAction, ResetCategoryNetworkIdsAction, ResetParentBlockedTimesAction, + ReviewChildTaskAction, SetCategoryExtraTimeAction, SetCategoryForUnassignedAppsAction, SetChildPasswordAction, @@ -53,6 +55,7 @@ import { UpdateCategoryTemporarilyBlockedAction, UpdateCategoryTimeWarningsAction, UpdateCategoryTitleAction, + UpdateChildTaskAction, UpdateDeviceNameAction, UpdateEnableActivityLevelBlockingAction, UpdateNetworkTimeVerificationAction, @@ -72,6 +75,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' @@ -80,6 +84,7 @@ 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,6 +106,7 @@ 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' @@ -210,6 +216,12 @@ export const dispatchParentAction = async ({ action, cache, parentUserId, source 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 { throw new ActionObjectTypeNotHandledException() } diff --git a/src/function/sync/apply-actions/dispatch-parent-action/reviewchildtaskaction.ts b/src/function/sync/apply-actions/dispatch-parent-action/reviewchildtaskaction.ts new file mode 100644 index 0000000..448e369 --- /dev/null +++ b/src/function/sync/apply-actions/dispatch-parent-action/reviewchildtaskaction.ts @@ -0,0 +1,107 @@ +/* + * 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 . + */ + +import { ReviewChildTaskAction } from '../../../../action' +import { Cache } from '../cache' +import { IllegalStateException } from '../exception/illegal-state' +import { MissingTaskException } from '../exception/missing-item' + +export async function dispatchReviewChildTaskAction ({ action, cache }: { + action: ReviewChildTaskAction + cache: Cache +}) { + 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) +} diff --git a/src/function/sync/apply-actions/dispatch-parent-action/updatechildtaskaction.ts b/src/function/sync/apply-actions/dispatch-parent-action/updatechildtaskaction.ts new file mode 100644 index 0000000..2b2a3d5 --- /dev/null +++ b/src/function/sync/apply-actions/dispatch-parent-action/updatechildtaskaction.ts @@ -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 . + */ + +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) + } +} diff --git a/src/function/sync/apply-actions/exception/missing-item.ts b/src/function/sync/apply-actions/exception/missing-item.ts index ec6d975..3d16ed6 100644 --- a/src/function/sync/apply-actions/exception/missing-item.ts +++ b/src/function/sync/apply-actions/exception/missing-item.ts @@ -42,3 +42,9 @@ export class MissingDeviceException extends MissingItemException { super({ staticMessage: 'referenced device which does not exist' }) } } + +export class MissingTaskException extends MissingItemException { + constructor () { + super({ staticMessage: 'referenced task which does not exist' }) + } +} diff --git a/src/function/sync/get-server-data-status/category/diff.ts b/src/function/sync/get-server-data-status/category/diff.ts index b7ca6bb..ae3e17c 100644 --- a/src/function/sync/get-server-data-status/category/diff.ts +++ b/src/function/sync/get-server-data-status/category/diff.ts @@ -37,7 +37,8 @@ export async function getCategoryDataToSync ({ database, transaction, familyEntr 'baseVersion', 'assignedAppsVersion', 'timeLimitRulesVersion', - 'usedTimesVersion' + 'usedTimesVersion', + 'taskListVersion' ], transaction })).map((item) => ({ @@ -45,7 +46,8 @@ export async function getCategoryDataToSync ({ database, transaction, familyEntr baseVersion: item.baseVersion, assignedAppsVersion: item.assignedAppsVersion, timeLimitRulesVersion: item.timeLimitRulesVersion, - usedTimesVersion: item.usedTimesVersion + usedTimesVersion: item.usedTimesVersion, + taskListVersion: item.taskListVersion })) const serverCategoryIds = serverCategoriesVersions.map((item) => item.categoryId) @@ -60,6 +62,7 @@ export async function getCategoryDataToSync ({ database, transaction, familyEntr const categoryIdsToSyncAssignedApps = [...addedCategoryIds] const categoryIdsToSyncRules = [...addedCategoryIds] const categoryIdsToSyncUsedTimes = [...addedCategoryIds] + const categoryIdsToSyncTasks = [...addedCategoryIds] categoryIdsOfClientAndServer.forEach((categoryId) => { const serverEntry = serverCategoriesVersions.find((item) => item.categoryId === categoryId) @@ -84,6 +87,10 @@ export async function getCategoryDataToSync ({ database, transaction, familyEntr if (serverEntry.usedTimesVersion !== clientEntry.usedTime) { categoryIdsToSyncUsedTimes.push(categoryId) } + + if (serverEntry.taskListVersion !== clientEntry.tasks) { + categoryIdsToSyncTasks.push(categoryId) + } }) const serverCategoriesVersionsMap = new Map() @@ -96,6 +103,7 @@ export async function getCategoryDataToSync ({ database, transaction, familyEntr categoryIdsToSyncAssignedApps, categoryIdsToSyncRules, categoryIdsToSyncUsedTimes, + categoryIdsToSyncTasks, serverCategoriesVersions: { list: serverCategoriesVersions, requireByCategoryId: (categoryId) => { @@ -117,6 +125,7 @@ export interface GetCategoryDataToSyncResult { categoryIdsToSyncAssignedApps: Array categoryIdsToSyncRules: Array categoryIdsToSyncUsedTimes: Array + categoryIdsToSyncTasks: Array serverCategoriesVersions: ServerCategoryVersions } @@ -131,4 +140,5 @@ export interface ServerCategoryVersion { assignedAppsVersion: string timeLimitRulesVersion: string usedTimesVersion: string + taskListVersion: string } diff --git a/src/function/sync/get-server-data-status/category/index.ts b/src/function/sync/get-server-data-status/category/index.ts index 991fc29..5f9b217 100644 --- a/src/function/sync/get-server-data-status/category/index.ts +++ b/src/function/sync/get-server-data-status/category/index.ts @@ -18,5 +18,6 @@ export { getCategoryDataToSync } from './diff' export { getCategoryBaseDatas } from './base-data' export { getRules } from './rules' +export { getTasks } from './tasks' export { getUsedTimes } from './used-times' export { getCategoryAssignedApps } from './assigned-apps' diff --git a/src/function/sync/get-server-data-status/category/tasks.ts b/src/function/sync/get-server-data-status/category/tasks.ts new file mode 100644 index 0000000..f8cbd49 --- /dev/null +++ b/src/function/sync/get-server-data-status/category/tasks.ts @@ -0,0 +1,70 @@ +/* + * 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 . + */ + +import * as Sequelize from 'sequelize' +import { Database, Transaction } from '../../../../database' +import { ServerUpdatedCategoryTask, ServerUpdatedCategoryTasks } from '../../../../object/serverdatastatus' +import { FamilyEntry } from '../family-entry' +import { ServerCategoryVersions } from './diff' + +export async function getTasks ({ + database, transaction, categoryIdsToSyncTasks, familyEntry, + serverCategoriesVersions +}: { + database: Database + transaction: Transaction + categoryIdsToSyncTasks: Array + familyEntry: FamilyEntry + serverCategoriesVersions: ServerCategoryVersions +}): Promise> { + const dataToSync = (await database.childTask.findAll({ + where: { + familyId: familyEntry.familyId, + categoryId: { + [Sequelize.Op.in]: categoryIdsToSyncTasks + } + }, + attributes: [ + 'taskId', + 'categoryId', + 'taskTitle', + 'extraTimeDuration', + 'pendingRequest', + 'lastGrantTimestamp' + ], + transaction + })).map((item) => ({ + taskId: item.taskId, + categoryId: item.categoryId, + taskTitle: item.taskTitle, + extraTimeDuration: item.extraTimeDuration, + pendingRequest: item.pendingRequest, + lastGrantTimestamp: item.lastGrantTimestamp + })) + + return categoryIdsToSyncTasks.map((categoryId) => ({ + categoryId, + version: serverCategoriesVersions.requireByCategoryId(categoryId).taskListVersion, + tasks: dataToSync.filter((item) => item.categoryId === categoryId).map((item): ServerUpdatedCategoryTask => ({ + i: item.taskId, + t: item.taskTitle, + d: item.extraTimeDuration, + p: item.pendingRequest !== 0, + l: parseInt(item.lastGrantTimestamp, 10) + })) + })) +} diff --git a/src/function/sync/get-server-data-status/index.ts b/src/function/sync/get-server-data-status/index.ts index f7726a6..2e720a4 100644 --- a/src/function/sync/get-server-data-status/index.ts +++ b/src/function/sync/get-server-data-status/index.ts @@ -23,7 +23,8 @@ import { ClientDataStatus } from '../../../object/clientdatastatus' import { ServerDataStatus } from '../../../object/serverdatastatus' import { getAppList } from './app-list' import { - getCategoryAssignedApps, getCategoryBaseDatas, getCategoryDataToSync, getRules, getUsedTimes + getCategoryAssignedApps, getCategoryBaseDatas, getCategoryDataToSync, + getRules, getTasks, getUsedTimes } from './category' import { getDeviceList } from './device-list' import { getFamilyEntry } from './family-entry' @@ -36,6 +37,7 @@ export const generateServerDataStatus = async ({ database, clientStatus, familyI transaction: Sequelize.Transaction }): Promise => { const familyEntry = await getFamilyEntry({ database, familyId, transaction }) + const doesClientSupportTasks = clientStatus.clientLevel !== undefined && clientStatus.clientLevel >= 3 let result: ServerDataStatus = { fullVersion: config.alwaysPro ? 1 : ( @@ -92,5 +94,13 @@ export const generateServerDataStatus = async ({ database, clientStatus, familyI }) } + if (categoryDataToSync.categoryIdsToSyncTasks.length > 0 && doesClientSupportTasks) { + result.tasks = await getTasks({ + database, transaction, familyEntry, + serverCategoriesVersions: categoryDataToSync.serverCategoriesVersions, + categoryIdsToSyncTasks: categoryDataToSync.categoryIdsToSyncTasks + }) + } + return result } diff --git a/src/object/clientdatastatus.ts b/src/object/clientdatastatus.ts index c9bc6fd..437db70 100644 --- a/src/object/clientdatastatus.ts +++ b/src/object/clientdatastatus.ts @@ -31,4 +31,5 @@ export interface CategoryDataStatus { apps: string // assignedAppsVersion rules: string // timeLimitRulesVersion usedTime: string // usedTimeItemsVersion + tasks?: string // taskListVersion } diff --git a/src/object/serverdatastatus.ts b/src/object/serverdatastatus.ts index 08803d3..8ddefc5 100644 --- a/src/object/serverdatastatus.ts +++ b/src/object/serverdatastatus.ts @@ -29,6 +29,7 @@ export interface ServerDataStatus { categoryApp?: Array // newCategoryAssignedApps usedTimes?: Array // newCategoryUsedTimes rules?: Array // newOrUpdatedTimeLimitRules + tasks?: Array // newOrUpdatedTasks users?: ServerUserList // newUserList fullVersion: number // fullVersionUntil message?: string @@ -188,6 +189,20 @@ export interface ServerTimeLimitRule { pause: number // session pause duration } +export interface ServerUpdatedCategoryTasks { + categoryId: string + version: string + tasks: Array +} + +export interface ServerUpdatedCategoryTask { + i: string // taskId + t: string // taskTitle + d: number // extraTimeDuration + p: boolean // pendingRequest + l: number // lastGrantTimestamp +} + export interface ServerInstalledAppsData { deviceId: string version: string