^{:refresh "30s"} {:default [[:default :window "200000/h"]] ;; ═══════════════════════════════════════════════ ;; Auth & Identity — public, unauthenticated ;; ═══════════════════════════════════════════════ #{:main/login-with-password} [[:auth-password :bucket "100/50/1m"]] #{:main/login-with-ldap} [[:auth-ldap :bucket "20/10/5m"]] #{:main/register-profile} [[:auth-register :bucket "20/10/15m"]] #{:main/request-profile-recovery :main/prepare-register-profile} [[:auth-recovery :bucket "100/50/5m"]] #{:main/recover-profile :main/verify-token} [[:auth-token :bucket "100/50/1m"]] ;; ═══════════════════════════════════════════════ ;; SSRF vectors — URL fetch endpoints ;; ═══════════════════════════════════════════════ #{:main/create-file-media-object-from-url} [[:url-fetch :bucket "100/50/5m"]] #{:main/create-webhook :main/update-webhook} [[:webhook-validation :bucket "20/10/5m"]] ;; ═══════════════════════════════════════════════ ;; Search — full sequential scan risk ;; ═══════════════════════════════════════════════ #{:main/search-files} [[:search :bucket "60/30/1m"]] ;; ═══════════════════════════════════════════════ ;; Feedback & Invitations — email-sending ;; ═══════════════════════════════════════════════ #{:main/send-user-feedback :main/create-team-invitations} [[:email-send :bucket "30/15/5m"]] ;; ═══════════════════════════════════════════════ ;; Media & File heavy ops ;; ═══════════════════════════════════════════════ #{:main/upload-file-media-object} [[:image-upload :bucket "200/100/1m"]] #{:main/create-file-object-thumbnail :main/delete-file-object-thumbnails :main/get-file-object-thumbnails} [[:thumbnail-ops :bucket "5000/3000/1m"]] #{:main/get-file-data-for-thumbnail :main/create-file-thumbnail} [[:thumbnail-data :bucket "100/50/1m"]] ;; ═══════════════════════════════════════════════ ;; UI navigation reads — high frequency ;; ═══════════════════════════════════════════════ #{:main/get-teams} [[:get-teams :bucket "5000/2500/30s"]] #{:main/get-team-members} [[:get-team-members :bucket "4000/2000/30s"]] #{:main/get-profile} [[:get-profile :bucket "500/250/30s"]] #{:main/get-font-variants} [[:get-font-variants :bucket "250/125/30s"]] #{:main/get-comment-threads} [[:get-comment-threads :bucket "500/250/30s"]] #{:main/get-profiles-for-file-comments} [[:get-profiles-for-file-comments :bucket "300/150/30s"]] #{:main/get-file-libraries} [[:get-file-libraries :bucket "200/100/30s"]] #{:main/get-projects} [[:get-projects :bucket "120/60/30s"]] #{:main/get-team-recent-files :main/get-unread-comment-threads} [[:get-team-recent :bucket "120/60/30s"]] #{:main/get-page} [[:get-page :bucket "150/75/30s"]] #{:main/get-access-tokens :main/get-subscription-usage} [[:get-access-tokens :bucket "150/75/30s"]] #{:main/get-enabled-flags} [[:get-enabled-flags :bucket "250/125/30s"]] #{:main/get-builtin-templates} [[:get-builtin-templates :bucket "200/100/30s"]] #{:main/get-project :main/get-project-files} [[:get-project-info :bucket "80/40/30s"]] #{:main/get-file} [[:get-file :bucket "180/90/1m"]] #{:main/get-team-shared-files :main/get-team-info :main/get-team-users :main/get-team-invitations :main/get-team-deleted-files :main/get-sso-provider} [[:get-team-info :bucket "60/30/30s"]] #{:main/get-comments :main/get-file-snapshots :main/get-library-usage :main/has-file-libraries} [[:get-misc-list :bucket "300/150/30s"]] #{:main/get-comment-thread :main/get-library-file-references} [[:get-misc-single :bucket "60/30/30s"]] #{:main/get-file-info :main/get-view-only-bundle :main/get-all-projects :main/get-owned-teams :main/get-team-stats :main/get-file-summary :main/get-file-stats :main/get-file-fragment} [[:get-light :bucket "60/30/30s"]] ;; ═══════════════════════════════════════════════ ;; File mutations — editing active ;; ═══════════════════════════════════════════════ #{:main/update-file} [[:update-file :bucket "1000/500/1m"]] #{:main/create-file :main/rename-file :main/duplicate-file :main/move-files} [[:file-create :bucket "60/30/1m"]] #{:main/delete-file} [[:file-delete :bucket "80/40/1m"]] #{:main/set-file-shared :main/update-file-library-sync-status :main/ignore-file-library-sync-status :main/link-file-to-library :main/unlink-file-from-library :main/create-file-snapshot :main/restore-file-snapshot :main/update-file-snapshot :main/delete-file-snapshot :main/lock-file-snapshot :main/unlock-file-snapshot} [[:file-mutations :bucket "80/40/1m"]] ;; ═══════════════════════════════════════════════ ;; Project mutations ;; ═══════════════════════════════════════════════ #{:main/create-project} [[:project-create :bucket "100/50/1m"]] #{:main/delete-project :main/rename-project :main/duplicate-project :main/move-project :main/update-project-pin} [[:project-mutations :bucket "40/20/1m"]] ;; ═══════════════════════════════════════════════ ;; Team mutations ;; ═══════════════════════════════════════════════ #{:main/create-team :main/update-team :main/delete-team :main/update-team-photo :main/update-team-member-role :main/delete-team-member :main/leave-team :main/create-team-with-invitations :main/create-team-access-request :main/permanently-delete-team-files :main/restore-deleted-team-files} [[:team-mutations :bucket "60/30/1m"]] ;; ═══════════════════════════════════════════════ ;; Comment operations ;; ═══════════════════════════════════════════════ #{:main/create-comment-thread :main/create-comment :main/update-comment :main/delete-comment :main/mark-all-threads-as-read} [[:comment-basic :bucket "30/15/1m"]] #{:main/update-comment-thread :main/update-comment-thread-status :main/update-comment-thread-position :main/update-comment-thread-frame :main/delete-comment-thread} [[:comment-thread :bucket "80/40/1m"]] ;; ═══════════════════════════════════════════════ ;; Profile operations ;; ═══════════════════════════════════════════════ #{:main/update-profile :main/update-profile-props :main/update-profile-photo :main/update-profile-password :main/update-profile-notifications :main/delete-profile :main/delete-profile-photo :main/request-email-change} [[:profile-mutations :bucket "30/15/1m"]] ;; ═══════════════════════════════════════════════ ;; Font operations ;; ═══════════════════════════════════════════════ #{:main/create-font-variant :main/delete-font :main/delete-font-variant :main/update-font :main/download-font :main/download-font-family} [[:font-ops :bucket "100/50/1m"]] ;; ═══════════════════════════════════════════════ ;; Access tokens ;; ═══════════════════════════════════════════════ #{:main/create-access-token :main/delete-access-token} [[:access-token :bucket "60/30/1m"]] ;; ═══════════════════════════════════════════════ ;; Export / Import ;; ═══════════════════════════════════════════════ #{:main/export-binfile :main/import-binfile :main/clone-template} [[:export-import :bucket "80/40/1m"]] ;; ═══════════════════════════════════════════════ ;; Upload sessions ;; ═══════════════════════════════════════════════ #{:main/create-upload-session :main/upload-chunk :main/assemble-file-media-object} [[:upload-session :bucket "100/50/1m"]] ;; ═══════════════════════════════════════════════ ;; Webhooks ;; ═══════════════════════════════════════════════ #{:main/get-webhooks :main/delete-webhook} [[:webhook-read :bucket "20/10/1m"]] ;; ═══════════════════════════════════════════════ ;; Share links ;; ═══════════════════════════════════════════════ #{:main/create-share-link :main/delete-share-link} [[:share-link :bucket "10/5/1m"]] ;; ═══════════════════════════════════════════════ ;; Organization operations ;; ═══════════════════════════════════════════════ #{:main/add-team-to-organization :main/remove-team-from-org :main/all-org-members-in-team :main/all-team-members-in-orgs :main/get-owned-organizations-summary :main/get-leave-org-summary :main/leave-org :main/check-org-members :main/get-team-invitation-token :main/delete-team-invitation :main/check-team-external-invitations} [[:org-ops :bucket "20/10/1m"]] ;; ═══════════════════════════════════════════════ ;; Audit & stats ;; ═══════════════════════════════════════════════ #{:main/push-audit-events} [[:audit-events :bucket "1000/500/1m"]] #{:main/logout :main/get-error-report :main/get-error-reports :main/get-current-mcp-token :main/get-nitrate-connectivity :main/check-nitrate-sso :main/redeem-nitrate-activation-code :main/create-demo-profile :main/get-subscription-warning} [[:misc-light :bucket "100/50/1m"]]}