рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдВ

рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн hub_sdk/base/api_client.py

рдиреЛрдЯ

рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдпрд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИ https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/base/api_client.py. рдпрджрд┐ рдЖрдк рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдХреГрдкрдпрд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд╛ рдпреЛрдЧрджрд╛рди рдХрд░рдХреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВ ЁЯЫая╕Пред ЁЯЩП рдзрдиреНрдпрд╡рд╛рдж !



hub_sdk.base.api_client.APIClientError

рдХрд╛ рд░реВрдк: Exception

рдПрдкреАрдЖрдИ рдХреНрд▓рд╛рдЗрдВрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЕрдкрд╡рд╛рдж рд╡рд░реНрдЧред

рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ:

рдирд╛рдо рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо
message str

рдПрдХ рдорд╛рдирд╡-рдкрдардиреАрдп рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ред

status_code int

HTTP рд╕реНрдерд┐рддрд┐ рдХреЛрдб рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рдВрдмрджреНрдз, рдпрджрд┐ рдЙрдкрд▓рдмреНрдз рд╣реЛред

рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб hub_sdk/base/api_client.py
class APIClientError(Exception):
    """
    Custom exception class for API client errors.

    Attributes:
        message (str): A human-readable error message.
        status_code (int): The HTTP status code associated with the error, if available.
    """

    def __init__(self, message: str, status_code: Optional[int] = None):
        """
        Initialize the APIClientError instance.

        Args:
            message (str): A human-readable error message.
            status_code (int, optional): The HTTP status code associated with the error, if available.
        """
        super().__init__(message)
        self.status_code = status_code
        self.message = message

    def __str__(self) -> str:
        return f"{self.__class__.__name__}: {self.args[0]}"

__init__(message, status_code=None)

APIClientError рдЖрд╡реГрддреНрддрд┐ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред

рдкреИрд░рд╛рдореАрдЯрд░:

рдирд╛рдо рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо рдЪреВрдХ
message str

рдПрдХ рдорд╛рдирд╡-рдкрдардиреАрдп рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ред

рдЖрд╡рд╢реНрдпрдХ
status_code int

HTTP рд╕реНрдерд┐рддрд┐ рдХреЛрдб рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рдВрдмрджреНрдз, рдпрджрд┐ рдЙрдкрд▓рдмреНрдз рд╣реЛред

None
рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб hub_sdk/base/api_client.py
def __init__(self, message: str, status_code: Optional[int] = None):
    """
    Initialize the APIClientError instance.

    Args:
        message (str): A human-readable error message.
        status_code (int, optional): The HTTP status code associated with the error, if available.
    """
    super().__init__(message)
    self.status_code = status_code
    self.message = message



hub_sdk.base.api_client.APIClient

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдзрд╛рд░ URL рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ API рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ:

рдирд╛рдо рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо
base_url str

API рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ URL.

headers (dict, None)

рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╣реЗрдбрд░ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред

logger Logger

рд▓реЙрдЧрд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред

рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб hub_sdk/base/api_client.py
class APIClient:
    """
    Represents an API client for making requests to a specified base URL.

    Attributes:
        base_url (str): The base URL for the API.
        headers (dict, None): Headers to be included in each request.
        logger (logging.Logger): An instance of the logger for logging purposes.
    """

    def __init__(self, base_url: str, headers: Optional[Dict] = None):
        """
        Initialize an instance of the APIClient class.

        Args:
            base_url (str): The base URL for the API.
            headers (dict, optional): Headers to be included in each request.
        """
        self.base_url = base_url
        self.headers = headers
        self.logger = logger

    def _make_request(
        self,
        method: str,
        endpoint: str,
        data: Optional[Dict] = None,
        json: Optional[Dict] = None,
        params: Optional[Dict] = None,
        files: Optional[Dict] = None,
        stream: bool = False,
    ) -> Optional[requests.Response]:
        """
        Make an HTTP request to the API.

        Args:
            method (str): The HTTP method to use for the request (e.g., "GET", "POST").
            endpoint (str): The endpoint to append to the base URL for the request.
            data (dict, optional): Data to be sent in the request's body.
            json (dict, optional): JSON data to be sent in the request's body.
            params (dict, optional): Query parameters for the request.
            files (dict, optional): Files to be sent as part of the form data.
            stream (bool, optional): Whether to stream the response content.

        Returns:
            (Optional[requests.Response]): The response object from the HTTP request, None if it fails and
        HUB_EXCEPTIONS off.

        Raises:
            (APIClientError): If an error occurs during the request, this exception is raised with an appropriate
        message based on the HTTP status code.
        """
        # Overwrite the base url if a http url is submitted
        url = endpoint if endpoint.startswith("http") else self.base_url + endpoint

        kwargs = {"params": params, "files": files, "headers": self.headers, "stream": stream}

        # Determine the request data based on 'data' or 'json_data'
        if json is not None:
            kwargs["json"] = json
        else:
            kwargs["data"] = data

        try:
            response = requests.request(method, url, **kwargs)

            response.raise_for_status()
            return response
        except requests.exceptions.RequestException as e:
            status_code = None
            # To handle Timeout and ConnectionError exceptions
            if hasattr(e, "response") and e.response is not None:
                status_code = e.response.status_code

            error_msg = ErrorHandler(status_code, headers=response.headers).handle()
            self.logger.error(error_msg)

            if not HUB_EXCEPTIONS:
                raise APIClientError(error_msg, status_code=status_code) from e

    def get(self, endpoint: str, params=None) -> Optional[requests.Response]:
        """
        Make a GET request to the API.

        Args:
            endpoint (str): The endpoint to append to the base URL for the request.
            params (dict, optional): Query parameters for the request.

        Returns:
            (Optional[requests.Response]): The response object from the HTTP GET request, None if it fails.
        """
        return self._make_request("GET", endpoint, params=params)

    def post(
        self,
        endpoint: str,
        data: Optional[Dict] = None,
        json: Optional[Dict] = None,
        files: Optional[Dict] = None,
        stream=False,
    ) -> Optional[requests.Response]:
        """
        Make a POST request to the API.

        Args:
            endpoint (str): The endpoint to append to the base URL for the request.
            data (dict, optional): Data to be sent in the request's body.
            json (dict, optional): JSON data to be sent in the request's body.
            files (dict, optional): Files to be included in the request, if any.
            stream (bool, optional): If True, the response content will be streamed.

        Returns:
            (Optional[requests.Response]): The response object from the HTTP POST request.
        """
        return self._make_request("POST", endpoint, data=data, json=json, files=files, stream=stream)

    def put(
        self, endpoint: str, data: Optional[Dict] = None, json: Optional[Dict] = None
    ) -> Optional[requests.Response]:
        """
        Make a PUT request to the API.

        Args:
            endpoint (str): The endpoint to append to the base URL for the request.
            data (Optional[Dict], optional): Data to be sent in the request's body.
            json (Optional[Dict], optional): JSON data to be sent in the request's body

        Returns:
            (Optional[requests.Response]): The response object from the HTTP PUT request.
        """
        return self._make_request("PUT", endpoint, data=data, json=json)

    def delete(self, endpoint: str, params: Optional[Dict] = None) -> Optional[requests.Response]:
        """
        Make a DELETE request to the API.

        Args:
            endpoint (str): The endpoint to append to the base URL for the request.
            params (dict, optional): Parameters to include in the request.

        Returns:
            (Optional[requests.Response]): The response object from the HTTP DELETE request, or None if it fails.
        """
        return self._make_request("DELETE", endpoint, params=params)

    def patch(
        self, endpoint: str, data: Optional[Dict] = None, json: Optional[Dict] = None
    ) -> Optional[requests.Response]:
        """
        Make a PATCH request to the API.

        Args:
            endpoint (str): The endpoint to append to the base URL for the request.
            data (dict, optional): Data to be sent in the request's body.
            json (dict, optional): JSON data to be sent in the request's body.

        Returns:
            (Optional[requests.Response]): The response object from the HTTP PATCH request, or None if it fails.
        """
        return self._make_request("PATCH", endpoint, data=data, json=json)

__init__(base_url, headers=None)

APIClient рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред

рдкреИрд░рд╛рдореАрдЯрд░:

рдирд╛рдо рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо рдЪреВрдХ
base_url str

API рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ URL.

рдЖрд╡рд╢реНрдпрдХ
headers dict

рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╣реЗрдбрд░ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред

None
рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб hub_sdk/base/api_client.py
def __init__(self, base_url: str, headers: Optional[Dict] = None):
    """
    Initialize an instance of the APIClient class.

    Args:
        base_url (str): The base URL for the API.
        headers (dict, optional): Headers to be included in each request.
    """
    self.base_url = base_url
    self.headers = headers
    self.logger = logger

delete(endpoint, params=None)

API рдХреЛ DELETE рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред

рдкреИрд░рд╛рдореАрдЯрд░:

рдирд╛рдо рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо рдЪреВрдХ
endpoint str

рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ URL рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдкрди рдмрд┐рдВрджреБред

рдЖрд╡рд╢реНрдпрдХ
params dict

рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ред

None

рджреЗрддрд╛:

рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо
Optional[Response]

HTTP DELETE рдЕрдиреБрд░реЛрдз рд╕реЗ рдкреНрд░рддрд┐рд╕рд╛рдж рдСрдмреНрдЬреЗрдХреНрдЯ, рдпрд╛ рдХреЛрдИ рдирд╣реАрдВ рдпрджрд┐ рд╡рд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб hub_sdk/base/api_client.py
def delete(self, endpoint: str, params: Optional[Dict] = None) -> Optional[requests.Response]:
    """
    Make a DELETE request to the API.

    Args:
        endpoint (str): The endpoint to append to the base URL for the request.
        params (dict, optional): Parameters to include in the request.

    Returns:
        (Optional[requests.Response]): The response object from the HTTP DELETE request, or None if it fails.
    """
    return self._make_request("DELETE", endpoint, params=params)

get(endpoint, params=None)

рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬреАрдИрдЯреА рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред

рдкреИрд░рд╛рдореАрдЯрд░:

рдирд╛рдо рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо рдЪреВрдХ
endpoint str

рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ URL рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдкрди рдмрд┐рдВрджреБред

рдЖрд╡рд╢реНрдпрдХ
params dict

рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░.

None

рджреЗрддрд╛:

рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо
Optional[Response]

HTTP GET рдЕрдиреБрд░реЛрдз рд╕реЗ рдкреНрд░рддрд┐рд╕рд╛рдж рдСрдмреНрдЬреЗрдХреНрдЯ, рдХреЛрдИ рдирд╣реАрдВ рдпрджрд┐ рд╡рд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб hub_sdk/base/api_client.py
def get(self, endpoint: str, params=None) -> Optional[requests.Response]:
    """
    Make a GET request to the API.

    Args:
        endpoint (str): The endpoint to append to the base URL for the request.
        params (dict, optional): Query parameters for the request.

    Returns:
        (Optional[requests.Response]): The response object from the HTTP GET request, None if it fails.
    """
    return self._make_request("GET", endpoint, params=params)

patch(endpoint, data=None, json=None)

рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЪ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред

рдкреИрд░рд╛рдореАрдЯрд░:

рдирд╛рдо рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо рдЪреВрдХ
endpoint str

рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ URL рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдкрди рдмрд┐рдВрджреБред

рдЖрд╡рд╢реНрдпрдХ
data dict

рдЕрдиреБрд░реЛрдз рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛.

None
json dict

JSON рдбреЗрдЯрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рд╣реИред

None

рджреЗрддрд╛:

рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо
Optional[Response]

HTTP PATCH рдЕрдиреБрд░реЛрдз рд╕реЗ рдкреНрд░рддрд┐рд╕рд╛рдж рдСрдмреНрдЬреЗрдХреНрдЯ, рдпрд╛ рдХреЛрдИ рдирд╣реАрдВ рдпрджрд┐ рд╡рд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб hub_sdk/base/api_client.py
def patch(
    self, endpoint: str, data: Optional[Dict] = None, json: Optional[Dict] = None
) -> Optional[requests.Response]:
    """
    Make a PATCH request to the API.

    Args:
        endpoint (str): The endpoint to append to the base URL for the request.
        data (dict, optional): Data to be sent in the request's body.
        json (dict, optional): JSON data to be sent in the request's body.

    Returns:
        (Optional[requests.Response]): The response object from the HTTP PATCH request, or None if it fails.
    """
    return self._make_request("PATCH", endpoint, data=data, json=json)

post(endpoint, data=None, json=None, files=None, stream=False)

API рдХреЗ рд▓рд┐рдП POST рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред

рдкреИрд░рд╛рдореАрдЯрд░:

рдирд╛рдо рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо рдЪреВрдХ
endpoint str

рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ URL рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдкрди рдмрд┐рдВрджреБред

рдЖрд╡рд╢реНрдпрдХ
data dict

рдЕрдиреБрд░реЛрдз рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛.

None
json dict

JSON рдбреЗрдЯрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рд╣реИред

None
files dict

рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЗрдВ, рдпрджрд┐ рдХреЛрдИ рд╣реЛред

None
stream bool

рдЕрдЧрд░ рд╕рд╣реА рд╣реИ, рддреЛ рдЬрд╡рд╛рдм рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реНрдЯреНрд░реАрдо рдХреА рдЬрд╛рдПрдЧреА.

False

рджреЗрддрд╛:

рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо
Optional[Response]

HTTP POST рдЕрдиреБрд░реЛрдз рд╕реЗ рдкреНрд░рддрд┐рд╕рд╛рдж рдСрдмреНрдЬреЗрдХреНрдЯред

рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб hub_sdk/base/api_client.py
def post(
    self,
    endpoint: str,
    data: Optional[Dict] = None,
    json: Optional[Dict] = None,
    files: Optional[Dict] = None,
    stream=False,
) -> Optional[requests.Response]:
    """
    Make a POST request to the API.

    Args:
        endpoint (str): The endpoint to append to the base URL for the request.
        data (dict, optional): Data to be sent in the request's body.
        json (dict, optional): JSON data to be sent in the request's body.
        files (dict, optional): Files to be included in the request, if any.
        stream (bool, optional): If True, the response content will be streamed.

    Returns:
        (Optional[requests.Response]): The response object from the HTTP POST request.
    """
    return self._make_request("POST", endpoint, data=data, json=json, files=files, stream=stream)

put(endpoint, data=None, json=None)

рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрдЯ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред

рдкреИрд░рд╛рдореАрдЯрд░:

рдирд╛рдо рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо рдЪреВрдХ
endpoint str

рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ URL рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдкрди рдмрд┐рдВрджреБред

рдЖрд╡рд╢реНрдпрдХ
data Optional[Dict]

рдЕрдиреБрд░реЛрдз рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛.

None
json Optional[Dict]

рдЕрдиреБрд░реЛрдз рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ JSON рдбреЗрдЯрд╛

None

рджреЗрддрд╛:

рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо
Optional[Response]

HTTP PUT рдЕрдиреБрд░реЛрдз рд╕реЗ рдкреНрд░рддрд┐рд╕рд╛рдж рдСрдмреНрдЬреЗрдХреНрдЯред

рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб hub_sdk/base/api_client.py
def put(
    self, endpoint: str, data: Optional[Dict] = None, json: Optional[Dict] = None
) -> Optional[requests.Response]:
    """
    Make a PUT request to the API.

    Args:
        endpoint (str): The endpoint to append to the base URL for the request.
        data (Optional[Dict], optional): Data to be sent in the request's body.
        json (Optional[Dict], optional): JSON data to be sent in the request's body

    Returns:
        (Optional[requests.Response]): The response object from the HTTP PUT request.
    """
    return self._make_request("PUT", endpoint, data=data, json=json)