From 7cebf6e35b07762197afccd50f5ba8c333aae82d Mon Sep 17 00:00:00 2001 From: IAmTomahawkx Date: Sun, 28 Jun 2026 19:38:16 -0700 Subject: [PATCH] chore: add some routes and descriptions Signed-off-by: IAmTomahawkx --- .../account_create_password_reset_url.rs} | 0 .../account_extend_verification_window.rs} | 0 .../routes/admin/accounts/account_set_lockout.rs | 0 .../accounts/account_update_password_reset.rs | 0 .../admin/cases/actions/case_add_action.rs | 2 ++ .../admin/cases/actions/case_add_collaborator.rs | 4 ++++ .../admin/cases/actions/case_assign_evidence.rs | 5 +++++ .../admin/cases/actions/case_assign_owner.rs | 3 +++ .../src/routes/admin/cases/actions/case_close.rs | 0 .../cases/actions/case_edit_collaborators.rs | 3 +++ .../routes/admin/cases/actions/case_sensitive.rs | 2 ++ .../src/routes/admin/cases/fetch/case_get.rs | 2 +- .../src/routes/admin/cases/fetch/case_get_all.rs | 16 ++++++++++++++++ .../cases/fetch/case_get_evidence_models.rs | 2 ++ .../routes/admin/cases/fetch/case_get_open.rs | 6 ++++++ crates/delta/src/routes/admin/cases/fetch/mod.rs | 4 +++- .../delta/src/routes/admin/reports/fetch/mod.rs | 3 ++- .../routes/admin/reports/fetch/reports_search.rs | 11 +++++++++++ .../admin/reports/fetch/reports_unhandled.rs | 7 +++++++ 19 files changed, 67 insertions(+), 3 deletions(-) rename crates/delta/src/routes/admin/{cases/fetch/case_get_all_open.rs => accounts/account_create_password_reset_url.rs} (100%) rename crates/delta/src/routes/admin/{reports/fetch/reports_unassigned.rs => accounts/account_extend_verification_window.rs} (100%) create mode 100644 crates/delta/src/routes/admin/accounts/account_set_lockout.rs create mode 100644 crates/delta/src/routes/admin/accounts/account_update_password_reset.rs create mode 100644 crates/delta/src/routes/admin/cases/actions/case_add_action.rs create mode 100644 crates/delta/src/routes/admin/cases/actions/case_add_collaborator.rs create mode 100644 crates/delta/src/routes/admin/cases/actions/case_assign_evidence.rs create mode 100644 crates/delta/src/routes/admin/cases/actions/case_assign_owner.rs create mode 100644 crates/delta/src/routes/admin/cases/actions/case_close.rs create mode 100644 crates/delta/src/routes/admin/cases/actions/case_edit_collaborators.rs create mode 100644 crates/delta/src/routes/admin/cases/actions/case_sensitive.rs create mode 100644 crates/delta/src/routes/admin/cases/fetch/case_get_all.rs create mode 100644 crates/delta/src/routes/admin/cases/fetch/case_get_evidence_models.rs create mode 100644 crates/delta/src/routes/admin/cases/fetch/case_get_open.rs create mode 100644 crates/delta/src/routes/admin/reports/fetch/reports_search.rs create mode 100644 crates/delta/src/routes/admin/reports/fetch/reports_unhandled.rs diff --git a/crates/delta/src/routes/admin/cases/fetch/case_get_all_open.rs b/crates/delta/src/routes/admin/accounts/account_create_password_reset_url.rs similarity index 100% rename from crates/delta/src/routes/admin/cases/fetch/case_get_all_open.rs rename to crates/delta/src/routes/admin/accounts/account_create_password_reset_url.rs diff --git a/crates/delta/src/routes/admin/reports/fetch/reports_unassigned.rs b/crates/delta/src/routes/admin/accounts/account_extend_verification_window.rs similarity index 100% rename from crates/delta/src/routes/admin/reports/fetch/reports_unassigned.rs rename to crates/delta/src/routes/admin/accounts/account_extend_verification_window.rs diff --git a/crates/delta/src/routes/admin/accounts/account_set_lockout.rs b/crates/delta/src/routes/admin/accounts/account_set_lockout.rs new file mode 100644 index 00000000..e69de29b diff --git a/crates/delta/src/routes/admin/accounts/account_update_password_reset.rs b/crates/delta/src/routes/admin/accounts/account_update_password_reset.rs new file mode 100644 index 00000000..e69de29b diff --git a/crates/delta/src/routes/admin/cases/actions/case_add_action.rs b/crates/delta/src/routes/admin/cases/actions/case_add_action.rs new file mode 100644 index 00000000..d674e841 --- /dev/null +++ b/crates/delta/src/routes/admin/cases/actions/case_add_action.rs @@ -0,0 +1,2 @@ +// this one is sort of just an idea. hold off on it for now. +// Allow the mod to add an action to a case (same as the audit log actions), in case it got missed by the automated system. diff --git a/crates/delta/src/routes/admin/cases/actions/case_add_collaborator.rs b/crates/delta/src/routes/admin/cases/actions/case_add_collaborator.rs new file mode 100644 index 00000000..8909ac06 --- /dev/null +++ b/crates/delta/src/routes/admin/cases/actions/case_add_collaborator.rs @@ -0,0 +1,4 @@ +// add a collaborator (this concept does not replace case ownership, +// but will allow it to show up in both the owner and any collaborators personalized open case list) +// users without sensitive permissions may only be added as collaborators to sensitive cases by administrators/moderation leads +// users who do not have administrator/moderation lead perms may only add a collaborator to a case they own or are also a collaborator on. diff --git a/crates/delta/src/routes/admin/cases/actions/case_assign_evidence.rs b/crates/delta/src/routes/admin/cases/actions/case_assign_evidence.rs new file mode 100644 index 00000000..b056a7fd --- /dev/null +++ b/crates/delta/src/routes/admin/cases/actions/case_assign_evidence.rs @@ -0,0 +1,5 @@ +// assign reports or other cases to the specified case by ULID +// this should take an array of {type: report | case, id: ULID} +// recursion of cases should be allowed +// reports are allowed to be assigned to multiple cases +// if a report comes from a queue that is marked as sensitive, this case should also be marked sensitive. diff --git a/crates/delta/src/routes/admin/cases/actions/case_assign_owner.rs b/crates/delta/src/routes/admin/cases/actions/case_assign_owner.rs new file mode 100644 index 00000000..e91ddce0 --- /dev/null +++ b/crates/delta/src/routes/admin/cases/actions/case_assign_owner.rs @@ -0,0 +1,3 @@ +// Assign a new owner to a case. +// Only administrators/moderation leads should be allowed to assign a case that does not belong to them. +// only administrators/moderation leads may assign someone a sensitive case if the assignee does not have sensitive permissions. diff --git a/crates/delta/src/routes/admin/cases/actions/case_close.rs b/crates/delta/src/routes/admin/cases/actions/case_close.rs new file mode 100644 index 00000000..e69de29b diff --git a/crates/delta/src/routes/admin/cases/actions/case_edit_collaborators.rs b/crates/delta/src/routes/admin/cases/actions/case_edit_collaborators.rs new file mode 100644 index 00000000..4ebba79f --- /dev/null +++ b/crates/delta/src/routes/admin/cases/actions/case_edit_collaborators.rs @@ -0,0 +1,3 @@ +// see add_collaborator +// The same rules apply, but collaborators may not remove other collaborators unless they are an admin/moderation lead. +// Owners may assign whoever (observing sensitive case rules). diff --git a/crates/delta/src/routes/admin/cases/actions/case_sensitive.rs b/crates/delta/src/routes/admin/cases/actions/case_sensitive.rs new file mode 100644 index 00000000..3f96b571 --- /dev/null +++ b/crates/delta/src/routes/admin/cases/actions/case_sensitive.rs @@ -0,0 +1,2 @@ +// mark a case as sensitive or not. +// cases with reports that contain diff --git a/crates/delta/src/routes/admin/cases/fetch/case_get.rs b/crates/delta/src/routes/admin/cases/fetch/case_get.rs index 8b137891..49ee1e93 100644 --- a/crates/delta/src/routes/admin/cases/fetch/case_get.rs +++ b/crates/delta/src/routes/admin/cases/fetch/case_get.rs @@ -1 +1 @@ - +// Should return the case model, but not all the models associated with evidence linked to the case. diff --git a/crates/delta/src/routes/admin/cases/fetch/case_get_all.rs b/crates/delta/src/routes/admin/cases/fetch/case_get_all.rs new file mode 100644 index 00000000..51cef463 --- /dev/null +++ b/crates/delta/src/routes/admin/cases/fetch/case_get_all.rs @@ -0,0 +1,16 @@ +// This should return all cases (paginated similar to case_get_open) with the following filters: +// ```js +// { +// state: OPEN | CLOSED, +// owner: ULID, +// collaborator: ULID, // cases this user collaborated on +// before: Timestamp, +// after: Timestamp, +// tags: [tags], +// sensitive: bool // cases that involve children (eg cp, underage, etc), +// ... whatever else you can think of. +// } +// ``` +// specifying owners/collaborators should be limited to admins/moderation leads +// the sensitive tag should be limited to some sort of "sensitive topics" permission +// users without the sensitive permission should still have sensitive cases returned, but the evidence ids should be removed. diff --git a/crates/delta/src/routes/admin/cases/fetch/case_get_evidence_models.rs b/crates/delta/src/routes/admin/cases/fetch/case_get_evidence_models.rs new file mode 100644 index 00000000..fa6fcf85 --- /dev/null +++ b/crates/delta/src/routes/admin/cases/fetch/case_get_evidence_models.rs @@ -0,0 +1,2 @@ +// get data associated with the evidence of a case (other case|server|user/members|etc) +// This should return nested case models, but not sub-nested models as that could lead to recursion problems. diff --git a/crates/delta/src/routes/admin/cases/fetch/case_get_open.rs b/crates/delta/src/routes/admin/cases/fetch/case_get_open.rs new file mode 100644 index 00000000..56933f0f --- /dev/null +++ b/crates/delta/src/routes/admin/cases/fetch/case_get_open.rs @@ -0,0 +1,6 @@ +// get open cases. This should be paginated, and the pagination offset is determined by the last received case ID from the previous request. +// Eg. GET /cases?after=OTHER_CASE_ULID&count=50 +// It should also have a flag to filter by only the users cases & collaborated cases +// EG. GET /cases?owned=true&collaborated=true +// There should also be a flag to disallow sensitive cases, which should default to allowed if not specified. +// users without the sensitive permission should still have sensitive cases returned, but the evidence ids should be removed unless they are the owner/collaborator (assignable by admins/moderation leads) diff --git a/crates/delta/src/routes/admin/cases/fetch/mod.rs b/crates/delta/src/routes/admin/cases/fetch/mod.rs index aec72c23..ab633f78 100644 --- a/crates/delta/src/routes/admin/cases/fetch/mod.rs +++ b/crates/delta/src/routes/admin/cases/fetch/mod.rs @@ -1,2 +1,4 @@ mod case_get; -mod case_get_all_open; +mod case_get_all; +mod case_get_evidence_models; +mod case_get_open; diff --git a/crates/delta/src/routes/admin/reports/fetch/mod.rs b/crates/delta/src/routes/admin/reports/fetch/mod.rs index c84a798d..2bbd1610 100644 --- a/crates/delta/src/routes/admin/reports/fetch/mod.rs +++ b/crates/delta/src/routes/admin/reports/fetch/mod.rs @@ -1 +1,2 @@ -mod reports_unassigned; +mod reports_search; +mod reports_unhandled; diff --git a/crates/delta/src/routes/admin/reports/fetch/reports_search.rs b/crates/delta/src/routes/admin/reports/fetch/reports_search.rs new file mode 100644 index 00000000..b28dd9b0 --- /dev/null +++ b/crates/delta/src/routes/admin/reports/fetch/reports_search.rs @@ -0,0 +1,11 @@ +// reports that the user is able to view. +// This route should be paginaged , and the pagination offset is determined by the last received case ID from the previous request. +// Eg. GET /reports?after=OTHER_REPORT_ULID&count=50 +// There should be a way to specify whether oldest or newest reports are returned first +// Eg. GET /reports?first=new | GET /reports?first=old +// You should be able to filter by sensitive cases, with the default being combined (sensitive reports and not are both returned) (when permitted by the users permissions, otherwise false) +// Eg. GET /reports?sensitive=only | GET /reports?sensitive=none | GET /reports?sensitive=combined +// You should be able to specify the reporter. +// You should be able to specify the reported type (eg server, user) +// You should be able to specify the reported ID (must be used with the reported type) +// You should be able to specify a time frame (before & after timestamps, not necessarily both required). diff --git a/crates/delta/src/routes/admin/reports/fetch/reports_unhandled.rs b/crates/delta/src/routes/admin/reports/fetch/reports_unhandled.rs new file mode 100644 index 00000000..6a8577c7 --- /dev/null +++ b/crates/delta/src/routes/admin/reports/fetch/reports_unhandled.rs @@ -0,0 +1,7 @@ +// unhandled reports that the user is able to view. +// This route should be paginaged , and the pagination offset is determined by the last received case ID from the previous request. +// Eg. GET /reports?after=OTHER_REPORT_ULID&count=50 +// There should be a way to specify whether oldest or newest reports are returned first +// Eg. GET /reports?first=new | GET /reports?first=old +// You should be able to filter by sensitive cases, with the default being combined (sensitive reports and not are both returned) (when permitted by the users permissions, otherwise false) +// Eg. GET /reports?sensitive=only | GET /reports?sensitive=none | GET /reports?sensitive=combined