Skip to content

User Rate Limits

Endpoints

UserRateLimits

This API allows to override or disable ratelimiting for a specific user. There are specific APIs to set, get and delete a ratelimit.

Source code in matrix_admin_sdk/endpoints/v1/user_rate_limits.py
class UserRateLimits(Endpoint):
    """
    This API allows to override or disable ratelimiting for a specific user.
    There are specific APIs to set, get and delete a ratelimit.
    """

    def __int__(self, user_id: str, **kwargs):
        """
        Initialize User endpoint
        Args:
            user_id: fully-qualified user id: for example, @user:server.com
            **kwargs: key

        Returns: None

        """
        self.user_id = user_id
        super().__init__(**kwargs)

    async def get_status(self) -> RateLimitsStatusModel:
        """
        Get the ratelimit status for a user.
        Returns: RateLimitsStatusModel

        """
        url = self.url(f"users/{self.user_id}/override_ratelimit")
        result = await self.request(RequestMethods.GET, url)
        res: RateLimitsStatusModel = RateLimitsStatusModel.from_dict(result)
        return res

    async def set(
        self, messages_per_second: int, burst_count: int
    ) -> RateLimitsStatusModel:
        """
        Set the ratelimit for a user.
        Args:
            messages_per_second: The number of actions that can be performed in a second
            burst_count: How many actions that can be performed before being limited

        Returns: RateLimitsStatusModel

        """
        url = self.url(f"users/{self.user_id}/override_ratelimit")
        data = {"messages_per_second": messages_per_second, "burst_count": burst_count}
        result = await self.request(RequestMethods.POST, url, json=data)
        res: RateLimitsStatusModel = RateLimitsStatusModel.from_dict(result)
        return res

    async def delete(self) -> None:
        """
        Delete the ratelimit for a user.
        Returns: None

        """
        url = self.url(f"users/{self.user_id}/override_ratelimit")
        await self.request(RequestMethods.DELETE, url)

__int__(self, user_id, **kwargs) special

Initialize User endpoint

Parameters:

Name Type Description Default
user_id str

fully-qualified user id: for example, @user:server.com

required
**kwargs

key

{}
Source code in matrix_admin_sdk/endpoints/v1/user_rate_limits.py
def __int__(self, user_id: str, **kwargs):
    """
    Initialize User endpoint
    Args:
        user_id: fully-qualified user id: for example, @user:server.com
        **kwargs: key

    Returns: None

    """
    self.user_id = user_id
    super().__init__(**kwargs)

delete(self) async

Delete the ratelimit for a user. Returns: None

Source code in matrix_admin_sdk/endpoints/v1/user_rate_limits.py
async def delete(self) -> None:
    """
    Delete the ratelimit for a user.
    Returns: None

    """
    url = self.url(f"users/{self.user_id}/override_ratelimit")
    await self.request(RequestMethods.DELETE, url)

get_status(self) async

Get the ratelimit status for a user. Returns: RateLimitsStatusModel

Source code in matrix_admin_sdk/endpoints/v1/user_rate_limits.py
async def get_status(self) -> RateLimitsStatusModel:
    """
    Get the ratelimit status for a user.
    Returns: RateLimitsStatusModel

    """
    url = self.url(f"users/{self.user_id}/override_ratelimit")
    result = await self.request(RequestMethods.GET, url)
    res: RateLimitsStatusModel = RateLimitsStatusModel.from_dict(result)
    return res

set(self, messages_per_second, burst_count) async

Set the ratelimit for a user.

Parameters:

Name Type Description Default
messages_per_second int

The number of actions that can be performed in a second

required
burst_count int

How many actions that can be performed before being limited

required
Source code in matrix_admin_sdk/endpoints/v1/user_rate_limits.py
async def set(
    self, messages_per_second: int, burst_count: int
) -> RateLimitsStatusModel:
    """
    Set the ratelimit for a user.
    Args:
        messages_per_second: The number of actions that can be performed in a second
        burst_count: How many actions that can be performed before being limited

    Returns: RateLimitsStatusModel

    """
    url = self.url(f"users/{self.user_id}/override_ratelimit")
    data = {"messages_per_second": messages_per_second, "burst_count": burst_count}
    result = await self.request(RequestMethods.POST, url, json=data)
    res: RateLimitsStatusModel = RateLimitsStatusModel.from_dict(result)
    return res

Models

RateLimitsStatusModel

Class representing the rate limits status model.

Attributes:

Name Type Description
messages_per_second int

The number of actions that can be performed in a second. 0 mean that ratelimiting is disabled for this user

burst_count int

How many actions that can be performed before being limited.

Source code in matrix_admin_sdk/models/v1/user_rate_limits.py
class RateLimitsStatusModel(BaseModel):
    """
    Class representing the rate limits status model.
    Attributes:
        messages_per_second (int): The number of actions that can be performed in a second.
            0 mean that ratelimiting is disabled for this user
        burst_count (int): How many actions that can be performed before being limited.
    """

    messages_per_second: Optional[int] = None
    burst_count: Optional[int] = None