zulip/zerver/lib
Mateusz Mandera a36f906d1a presence: Add history_limit_days param to the API.
This param allows clients to specify how much presence history they want
to fetch. Previously, the server always returned 14 days of history.
With the recent migration of the presence API to the much more efficient
system relying on incremental fetches via the last_update_id param added
in #29999, we can now afford to provide much more history to clients
that request it - as all that historical data will only be fetched once.

There are three endpoints involved:
- `/register` - this is the main useful endpoint for this, used by API
clients to fetch initial data and register an events queue. Clients can
pass the `presence_history_limit_days` param here.
- `/users/me/presence` - this endpoint is currently used by clients to
update their presence status and fetch incremental data, making the new
functionality not particularly useful here. However, we still add the
new `history_limit_days` param here, in case in the future clients
transition to using this also for the initial presence data fetch.
- `/` - used when opening the webapp. Naturally, params aren't passed
here, so the server just assumes a value from
`settings.PRESENCE_HISTORY_LIMIT_DAYS_FOR_WEB_APP` and returns
information about this default value in page_params.
2024-09-10 13:15:35 -07:00
..
markdown thumbnail: Put the original dimensions on spinner images. 2024-09-09 15:59:02 -07:00
upload upload: Provide the frontend with the less-modified filename. 2024-09-09 12:40:17 -07:00
url_preview ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
webhooks ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
__init__.py
addressee.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
alert_words.py alert_words: Update remove_alert_word codepath to send event on commit. 2024-07-31 22:33:52 -07:00
async_utils.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
attachments.py upload: Explicitly return a bool and the Attachment object. 2024-09-09 12:40:17 -07:00
avatar.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
avatar_hash.py avatars: Encode version into the filename. 2024-07-07 14:40:07 -07:00
bot_config.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
bot_lib.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
bot_storage.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
bulk_create.py audit-log: Move user group event types to AuditLogEventType enum. 2024-09-09 11:50:13 -07:00
cache.py python: Simplify with str.removeprefix, str.removesuffix. 2024-09-03 12:30:16 -07:00
cache_helpers.py mypy: Remove use of ValuesQuerySet and QuerySetAny. 2024-08-24 17:30:41 -07:00
camo.py
ccache.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
compatibility.py ruff: Fix PLR6104 Use `+=` to perform an augmented assignment directly. 2024-07-14 13:49:51 -07:00
context_managers.py ruff: Fix SIM117 Use a single `with` statement with multiple contexts. 2024-07-14 13:48:32 -07:00
create_user.py user_profile: Remove 'tutorial_status' field. 2024-08-15 13:31:40 -07:00
data_types.py ruff: Fix UP038 Use `X | Y` in `isinstance` call instead of `(X, Y)`. 2024-07-13 22:28:22 -07:00
db.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
db_connections.py db: Split reset_queries into a new module zerver.lib.db_connections. 2024-04-17 16:49:03 -07:00
debug.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
default_streams.py ruff: Fix UP006 Use `list` instead of `List` for type annotation. 2024-07-13 22:28:22 -07:00
dev_ldap_directory.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
digest.py audit-log: Move subscription event types to AuditLogEventType enum. 2024-09-09 11:50:13 -07:00
display_recipient.py mypy: Remove use of ValuesQuerySet and QuerySetAny. 2024-08-24 17:30:41 -07:00
domains.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
drafts.py drafts: Update do_delete_draft to send event on commit. 2024-08-12 12:16:14 -07:00
email_mirror.py upload: Provide the frontend with the less-modified filename. 2024-09-09 12:40:17 -07:00
email_mirror_helpers.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
email_notifications.py ruff: Bump target-version from py38 to py310. 2024-07-13 22:28:22 -07:00
email_validation.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
emoji.py emoji: Use a non-predictable filename. 2024-07-12 13:26:47 -07:00
emoji_utils.py emoji: Match emoji sequences in markdown. 2023-08-23 16:18:15 -07:00
event_schema.py edit_history: Remove 'prev_rendered_content_version' field. 2024-08-29 15:37:12 -07:00
events.py presence: Add history_limit_days param to the API. 2024-09-10 13:15:35 -07:00
exceptions.py exceptions: Add new error class to be used for invalid parameter values. 2024-07-19 09:24:54 -07:00
export.py audit-log: Move realm event types to AuditLogEventType enum. 2024-09-09 11:50:13 -07:00
external_accounts.py ruff: Fix UP006 Use `list` instead of `List` for type annotation. 2024-07-13 22:28:22 -07:00
fix_unreads.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
generate_test_data.py ruff: Fix PLR6104 Use `+=` to perform an augmented assignment directly. 2024-07-14 13:49:51 -07:00
github.py python: Simplify with str.removeprefix, str.removesuffix. 2024-09-03 12:30:16 -07:00
home.py presence: Add history_limit_days param to the API. 2024-09-10 13:15:35 -07:00
html_diff.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
html_to_text.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
i18n.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
import_realm.py audit-log: Move user group event types to AuditLogEventType enum. 2024-09-09 11:50:13 -07:00
initial_password.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
integrations.py integration-docs: Update Open Collective for new doc format. 2024-08-15 13:16:14 -07:00
invites.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
logging_util.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
management.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
mdiff.py
mention.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
message.py mypy: Remove use of ValuesQuerySet and QuerySetAny. 2024-08-24 17:30:41 -07:00
message_cache.py edit_history: Remove 'prev_rendered_content_version' field. 2024-08-29 15:37:12 -07:00
migrate.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
mime_types.py emoji: Derive the file extension from a limited set of content-types. 2024-07-12 13:26:47 -07:00
mobile_auth_otp.py ruff: Fix B905 `zip()` without an explicit `strict=` parameter. 2024-07-13 22:28:22 -07:00
muted_users.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
name_restrictions.py python: Simplify with str.removeprefix, str.removesuffix. 2024-09-03 12:30:16 -07:00
narrow.py message_fetch: Convert module to TypeScript. 2024-08-23 13:34:13 -07:00
narrow_helpers.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
narrow_predicate.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
notes.py ruff: Fix FURB180 Use of `metaclass=abc.ABCMeta`. 2024-07-14 13:53:40 -07:00
notification_data.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
onboarding.py ruff: Fix UP006 Use `list` instead of `List` for type annotation. 2024-07-13 22:28:22 -07:00
onboarding_steps.py user_profile: Remove 'tutorial_status' field. 2024-08-15 13:31:40 -07:00
outgoing_http.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
outgoing_webhook.py ruff: Fix FURB180 Use of `metaclass=abc.ABCMeta`. 2024-07-14 13:53:40 -07:00
partial.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
per_request_cache.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
presence.py presence: Add history_limit_days param to the API. 2024-09-10 13:15:35 -07:00
profile.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
push_notifications.py settings: Rework how push notifications service is configured. 2024-07-17 17:14:06 -07:00
pysa.py
query_helpers.py mypy: Remove use of ValuesQuerySet and QuerySetAny. 2024-08-24 17:30:41 -07:00
queue.py ruff: Fix FURB180 Use of `metaclass=abc.ABCMeta`. 2024-07-14 13:53:40 -07:00
rate_limiter.py ruff: Fix B905 `zip()` without an explicit `strict=` parameter. 2024-07-13 22:28:22 -07:00
realm_description.py
realm_icon.py
realm_logo.py ruff: Fix UP006 Use `list` instead of `List` for type annotation. 2024-07-13 22:28:22 -07:00
recipient_parsing.py scheduled_messages: Migrate to typed_endpoint. 2024-08-20 10:03:22 -07:00
recipient_users.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
redis_utils.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
remote_server.py settings: Rework how push notifications service is configured. 2024-07-17 17:14:06 -07:00
request.py endpoints: Remove the has_request_variables decorator. 2024-09-05 16:02:12 -07:00
response.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
rest.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
retention.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
safe_session_cached_db.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
scheduled_messages.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
scim.py scim: Extract ROLE_TYPE_TO_NAME dict to UserProfile. 2024-08-20 11:53:24 -07:00
scim_filter.py zerver: Replace uri with url in local variables and comments. 2024-07-14 22:30:28 -07:00
send_email.py custom_email: Add manage_preferences block to the plaintext version. 2024-09-10 09:36:56 -07:00
server_initialization.py audit-log: Move realm event types to AuditLogEventType enum. 2024-09-09 11:50:13 -07:00
sessions.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
singleton_bmemcached.py ruff: Fix UP006 Use `list` instead of `List` for type annotation. 2024-07-13 22:28:22 -07:00
soft_deactivation.py audit-log: Move subscription event types to AuditLogEventType enum. 2024-09-09 11:50:13 -07:00
sounds.py ruff: Fix UP006 Use `list` instead of `List` for type annotation. 2024-07-13 22:28:22 -07:00
sqlalchemy_utils.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
storage.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
stream_color.py ruff: Fix UP006 Use `list` instead of `List` for type annotation. 2024-07-13 22:28:22 -07:00
stream_subscription.py mypy: Remove use of ValuesQuerySet and QuerySetAny. 2024-08-24 17:30:41 -07:00
stream_topic.py ruff: Fix UP006 Use `list` instead of `List` for type annotation. 2024-07-13 22:28:22 -07:00
stream_traffic.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
streams.py audit-log: Move stream/channel event types to AuditLogEventType enum. 2024-09-09 11:50:13 -07:00
string_validation.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
subdomains.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
subscription_info.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
templates.py ruff: Fix FURB154 Use of repeated consecutive `global`, `nonlocal`. 2024-07-14 13:53:18 -07:00
test_classes.py upload: Provide the frontend with the less-modified filename. 2024-09-09 12:40:17 -07:00
test_console_output.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
test_data.source.txt
test_fixtures.py ruff: Fix FURB142 Use of set.add() in a for loop. 2024-07-14 13:52:59 -07:00
test_helpers.py python: Simplify with str.removeprefix, str.removesuffix. 2024-09-03 12:30:16 -07:00
test_runner.py python: Simplify with str.removeprefix, str.removesuffix. 2024-09-03 12:30:16 -07:00
tex.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
thumbnail.py thumbnail: Put the original dimensions on spinner images. 2024-09-09 15:59:02 -07:00
timeout.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
timestamp.py python: Consistently use from…import for datetime. 2023-12-05 12:01:18 -08:00
timezone.py ruff: Fix UP006 Use `list` instead of `List` for type annotation. 2024-07-13 22:28:22 -07:00
topic.py python: Simplify with str.removeprefix, str.removesuffix. 2024-09-03 12:30:16 -07:00
topic_sqlalchemy.py narrow: Migrate legacy SQLAlchemy select syntax. 2024-07-16 14:50:30 -07:00
transfer.py upload: Rename "upload_image_to_s3"; it is not only for images. 2024-09-09 12:40:17 -07:00
typed_endpoint.py endpoints: Remove the has_request_variables decorator. 2024-09-05 16:02:12 -07:00
typed_endpoint_validators.py user_settings: Migrate to typed_endpoint. 2024-07-31 17:10:06 -07:00
types.py endpoints: Modify comments mentioning has_request_variables and REQ. 2024-09-05 16:02:12 -07:00
url_decoding.py url_decoding: Add 'is_same_server_message_link' function. 2024-06-17 10:42:32 -07:00
url_encoding.py ruff: Fix UP006 Use `list` instead of `List` for type annotation. 2024-07-13 22:28:22 -07:00
url_redirects.py docs: Update help center links for stream to channel rename. 2024-08-27 13:30:28 -07:00
user_agent.py ruff: Fix UP006 Use `list` instead of `List` for type annotation. 2024-07-13 22:28:22 -07:00
user_counts.py ruff: Fix UP006 Use `list` instead of `List` for type annotation. 2024-07-13 22:28:22 -07:00
user_groups.py audit-log: Move user group event types to AuditLogEventType enum. 2024-09-09 11:50:13 -07:00
user_message.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
user_status.py ruff: Fix UP007 Use `X | Y` for type annotations. 2024-07-13 22:28:22 -07:00
user_topics.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
users.py users: Allow zero-width-joiners in user names. 2024-09-03 16:34:55 -07:00
utils.py ruff: Fix UP035 Import from `collections.abc`, `typing` instead. 2024-07-13 22:28:22 -07:00
validator.py endpoints: Remove the has_request_variables decorator. 2024-09-05 16:02:12 -07:00
widget.py python: Simplify with str.removeprefix, str.removesuffix. 2024-09-03 12:30:16 -07:00
zcommand.py python: Simplify with str.removeprefix, str.removesuffix. 2024-09-03 12:30:16 -07:00
zephyr.py python: Simplify with str.removeprefix, str.removesuffix. 2024-09-03 12:30:16 -07:00
zulip_update_announcements.py audit-log: Move realm event types to AuditLogEventType enum. 2024-09-09 11:50:13 -07:00