# This file was auto-generated by Fern from our API Definition.

import typing

from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
from ..core.pagination import AsyncPager, SyncPager
from ..core.request_options import RequestOptions
from ..types.asset_response_body import AssetResponseBody
from ..types.assets_create_asset_response_body import AssetsCreateAssetResponseBody
from ..types.assets_list_assets_response_body import AssetsListAssetsResponseBody
from ..types.assets_update_asset_response_body import AssetsUpdateAssetResponseBody
from ..types.inline_response_2002 import InlineResponse2002
from ..types.inline_response_2003 import InlineResponse2003
from ..types.v_1_asset_location_response import V1AssetLocationResponse
from ..types.v_1_asset_reefer_response import V1AssetReeferResponse
from .raw_client import AsyncRawAssetsClient, RawAssetsClient
from .types.assets_create_asset_request_body_regulation_mode import AssetsCreateAssetRequestBodyRegulationMode
from .types.assets_create_asset_request_body_type import AssetsCreateAssetRequestBodyType
from .types.assets_update_asset_request_body_regulation_mode import AssetsUpdateAssetRequestBodyRegulationMode
from .types.assets_update_asset_request_body_type import AssetsUpdateAssetRequestBodyType
from .types.list_assets_request_type import ListAssetsRequestType

# this is used as the default value for optional parameters
OMIT = typing.cast(typing.Any, ...)


class AssetsClient:
    def __init__(self, *, client_wrapper: SyncClientWrapper):
        self._raw_client = RawAssetsClient(client_wrapper=client_wrapper)

    @property
    def with_raw_response(self) -> RawAssetsClient:
        """
        Retrieves a raw implementation of this client that returns raw responses.

        Returns
        -------
        RawAssetsClient
        """
        return self._raw_client

    def list(
        self,
        *,
        type: typing.Optional[ListAssetsRequestType] = None,
        after: typing.Optional[str] = None,
        updated_after_time: typing.Optional[str] = None,
        include_external_ids: typing.Optional[bool] = None,
        include_tags: typing.Optional[bool] = None,
        tag_ids: typing.Optional[str] = None,
        parent_tag_ids: typing.Optional[str] = None,
        ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
        attribute_value_ids: typing.Optional[str] = None,
        attributes: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> SyncPager[AssetResponseBody, AssetsListAssetsResponseBody]:
        """
        List all assets. Up to 300 assets will be returned per page.

         <b>Rate limit:</b> 5 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).

        To use this endpoint, select **Read Assets** under the Assets category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>


         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        Parameters
        ----------
        type : typing.Optional[ListAssetsRequestType]
            The operational context in which the asset interacts with the Samsara system. Examples: Vehicle (eg: truck, bus...), Trailer (eg: dry van, reefer, flatbed...), Powered Equipment (eg: dozer, crane...), Unpowered Equipment (eg: container, dumpster...), or Uncategorized.  Valid values: `uncategorized`, `trailer`, `equipment`, `unpowered`, `vehicle`

        after : typing.Optional[str]
             If specified, this should be the endCursor value from the previous page of results. When present, this request will return the next page of results that occur immediately after the previous page of results.

        updated_after_time : typing.Optional[str]
             A filter on data to have an updated at time after or equal to this specified time in RFC 3339 format. Millisecond precision and timezones are supported. (Examples: 2019-06-13T19:08:25Z, 2019-06-13T19:08:25.455Z, OR 2015-09-15T14:00:12-04:00).

        include_external_ids : typing.Optional[bool]
            Optional boolean indicating whether to return external IDs on supported entities

        include_tags : typing.Optional[bool]
            Optional boolean indicating whether to return tags on supported entities

        tag_ids : typing.Optional[str]
             A filter on the data based on this comma-separated list of tag IDs. Example: `tagIds=1234,5678`

        parent_tag_ids : typing.Optional[str]
             A filter on the data based on this comma-separated list of parent tag IDs, for use by orgs with tag hierarchies. Specifying a parent tag will implicitly include all descendent tags of the parent tag. Example: `parentTagIds=345,678`

        ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
            A filter on the data based on this comma-separated list of asset IDs and External IDs.

        attribute_value_ids : typing.Optional[str]
            A filter on the data based on this comma-separated list of attribute value IDs. Only entities associated with ALL of the referenced values will be returned (i.e. the intersection of the sets of entities with each value). Example: `attributeValueIds=076efac2-83b5-47aa-ba36-18428436dcac,6707b3f0-23b9-4fe3-b7be-11be34aea544`

        attributes : typing.Optional[typing.Union[str, typing.Sequence[str]]]
            A filter on the data to return entities within given range query (only for numeric and date attributes) separated by a comma. Only entities meeting all the conditions will be returned. At least one bound must be provided. Example: `attributes=Length:range(8,)&attributes=Length:range(10,20)&attributes=Date:range(2025-01-01,2025-01-31)`

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        SyncPager[AssetResponseBody, AssetsListAssetsResponseBody]
            OK response.

        Examples
        --------
        from samsara import Samsara

        client = Samsara(
            token="YOUR_TOKEN",
        )
        response = client.assets.list()
        for item in response:
            yield item
        # alternatively, you can paginate page-by-page
        for page in response.iter_pages():
            yield page
        """
        return self._raw_client.list(
            type=type,
            after=after,
            updated_after_time=updated_after_time,
            include_external_ids=include_external_ids,
            include_tags=include_tags,
            tag_ids=tag_ids,
            parent_tag_ids=parent_tag_ids,
            ids=ids,
            attribute_value_ids=attribute_value_ids,
            attributes=attributes,
            request_options=request_options,
        )

    def create_asset(
        self,
        *,
        external_ids: typing.Optional[typing.Dict[str, str]] = OMIT,
        license_plate: typing.Optional[str] = OMIT,
        make: typing.Optional[str] = OMIT,
        model: typing.Optional[str] = OMIT,
        name: typing.Optional[str] = OMIT,
        notes: typing.Optional[str] = OMIT,
        readings_ingestion_enabled: typing.Optional[bool] = OMIT,
        regulation_mode: typing.Optional[AssetsCreateAssetRequestBodyRegulationMode] = OMIT,
        serial_number: typing.Optional[str] = OMIT,
        type: typing.Optional[AssetsCreateAssetRequestBodyType] = OMIT,
        vin: typing.Optional[str] = OMIT,
        year: typing.Optional[int] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> AssetsCreateAssetResponseBody:
        """
        Create a new asset.

         <b>Rate limit:</b> 100 requests/min (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).

        To use this endpoint, select **Write Assets** under the Assets category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>


         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        Parameters
        ----------
        external_ids : typing.Optional[typing.Dict[str, str]]
            A map of external ids

        license_plate : typing.Optional[str]
            The license plate of the asset.

        make : typing.Optional[str]
            The OEM/manufacturer of the asset. Updates to this field are restricted.

        model : typing.Optional[str]
            The model of the asset. Updates to this field are restricted.

        name : typing.Optional[str]
            The human-readable name of the asset. This is set by a fleet administrator and will appear in both Samsara’s cloud dashboard as well as the Samsara Driver mobile app. By default, this name is the serial number of the Samsara Asset Gateway. It can be set or updated through the Samsara Dashboard or through the API at any time.

        notes : typing.Optional[str]
            These are generic notes about the asset. Can be set or updated through the Samsara Dashboard or the API at any time.

        readings_ingestion_enabled : typing.Optional[bool]
            Indicates whether the asset is expected to have data ingested using the Readings API.

        regulation_mode : typing.Optional[AssetsCreateAssetRequestBodyRegulationMode]
            Whether or not the asset is regulated, unregulated (non-CMV), or a mixed use unregulated asset. Primarily used with vehicles.  Valid values: `mixed`, `regulated`, `unregulated`

        serial_number : typing.Optional[str]
            The serial number of the asset. This can be an internal serial number or used to hold legacy VIN/PIN numbers such as ones of shorter lengths.

        type : typing.Optional[AssetsCreateAssetRequestBodyType]
            The operational context in which the asset interacts with the Samsara system. Examples: Vehicle (eg: truck, bus...), Trailer (eg: dry van, reefer, flatbed...), Powered Equipment (eg: dozer, crane...), Unpowered Equipment (eg: container, dumpster...), or Uncategorized.  Valid values: `uncategorized`, `trailer`, `equipment`, `unpowered`, `vehicle`

        vin : typing.Optional[str]
            The unique 17-digit VIN (Vehicle Identification Number) or PIN (Product Identification Number) of the asset.

        year : typing.Optional[int]
            The model year of the asset. Updates to this field are restricted.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AssetsCreateAssetResponseBody
            OK response.

        Examples
        --------
        from samsara import Samsara

        client = Samsara(
            token="YOUR_TOKEN",
        )
        client.assets.create_asset()
        """
        _response = self._raw_client.create_asset(
            external_ids=external_ids,
            license_plate=license_plate,
            make=make,
            model=model,
            name=name,
            notes=notes,
            readings_ingestion_enabled=readings_ingestion_enabled,
            regulation_mode=regulation_mode,
            serial_number=serial_number,
            type=type,
            vin=vin,
            year=year,
            request_options=request_options,
        )
        return _response.data

    def delete_asset(self, *, id: str, request_options: typing.Optional[RequestOptions] = None) -> None:
        """
        Delete an existing asset.

         <b>Rate limit:</b> 100 requests/min (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).

        To use this endpoint, select **Write Assets** under the Assets category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>


         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        Parameters
        ----------
        id : str
            A filter selecting a single asset by id.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from samsara import Samsara

        client = Samsara(
            token="YOUR_TOKEN",
        )
        client.assets.delete_asset(
            id="id",
        )
        """
        _response = self._raw_client.delete_asset(id=id, request_options=request_options)
        return _response.data

    def update_asset(
        self,
        *,
        id: str,
        external_ids: typing.Optional[typing.Dict[str, str]] = OMIT,
        license_plate: typing.Optional[str] = OMIT,
        make: typing.Optional[str] = OMIT,
        model: typing.Optional[str] = OMIT,
        name: typing.Optional[str] = OMIT,
        notes: typing.Optional[str] = OMIT,
        readings_ingestion_enabled: typing.Optional[bool] = OMIT,
        regulation_mode: typing.Optional[AssetsUpdateAssetRequestBodyRegulationMode] = OMIT,
        serial_number: typing.Optional[str] = OMIT,
        type: typing.Optional[AssetsUpdateAssetRequestBodyType] = OMIT,
        vin: typing.Optional[str] = OMIT,
        year: typing.Optional[int] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> AssetsUpdateAssetResponseBody:
        """
        Update an existing asset.

         <b>Rate limit:</b> 100 requests/min (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).

        To use this endpoint, select **Write Assets** under the Assets category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>


         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        Parameters
        ----------
        id : str
            A filter selecting a single asset by id.

        external_ids : typing.Optional[typing.Dict[str, str]]
            A map of external ids

        license_plate : typing.Optional[str]
            The license plate of the asset.

        make : typing.Optional[str]
            The OEM/manufacturer of the asset. Updates to this field are restricted.

        model : typing.Optional[str]
            The model of the asset. Updates to this field are restricted.

        name : typing.Optional[str]
            The human-readable name of the asset. This is set by a fleet administrator and will appear in both Samsara’s cloud dashboard as well as the Samsara Driver mobile app. By default, this name is the serial number of the Samsara Asset Gateway. It can be set or updated through the Samsara Dashboard or through the API at any time.

        notes : typing.Optional[str]
            These are generic notes about the asset. Can be set or updated through the Samsara Dashboard or the API at any time.

        readings_ingestion_enabled : typing.Optional[bool]
            Indicates whether the asset is expected to have data ingested using the Readings API.

        regulation_mode : typing.Optional[AssetsUpdateAssetRequestBodyRegulationMode]
            Whether or not the asset is regulated, unregulated (non-CMV), or a mixed use unregulated asset. Primarily used with vehicles.  Valid values: `mixed`, `regulated`, `unregulated`

        serial_number : typing.Optional[str]
            The serial number of the asset. This can be an internal serial number or used to hold legacy VIN/PIN numbers such as ones of shorter lengths.

        type : typing.Optional[AssetsUpdateAssetRequestBodyType]
            The operational context in which the asset interacts with the Samsara system. Examples: Vehicle (eg: truck, bus...), Trailer (eg: dry van, reefer, flatbed...), Powered Equipment (eg: dozer, crane...), Unpowered Equipment (eg: container, dumpster...), or Uncategorized.  Valid values: `uncategorized`, `trailer`, `equipment`, `unpowered`, `vehicle`

        vin : typing.Optional[str]
            The unique 17-digit VIN (Vehicle Identification Number) or PIN (Product Identification Number) of the asset.

        year : typing.Optional[int]
            The model year of the asset. Updates to this field are restricted.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AssetsUpdateAssetResponseBody
            OK response.

        Examples
        --------
        from samsara import Samsara

        client = Samsara(
            token="YOUR_TOKEN",
        )
        client.assets.update_asset(
            id="id",
        )
        """
        _response = self._raw_client.update_asset(
            id=id,
            external_ids=external_ids,
            license_plate=license_plate,
            make=make,
            model=model,
            name=name,
            notes=notes,
            readings_ingestion_enabled=readings_ingestion_enabled,
            regulation_mode=regulation_mode,
            serial_number=serial_number,
            type=type,
            vin=vin,
            year=year,
            request_options=request_options,
        )
        return _response.data

    def v_1_get_all_asset_current_locations(
        self,
        *,
        starting_after: typing.Optional[str] = None,
        ending_before: typing.Optional[str] = None,
        limit: typing.Optional[int] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> InlineResponse2002:
        """
        <n class="warning">
        <nh>
        <i class="fa fa-exclamation-circle"></i>
        This endpoint is still on our legacy API.
        </nh>
        </n>

        Fetch current locations of all assets.

         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        To use this endpoint, select **Read Equipment Statistics** under the Equipment category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>

        Parameters
        ----------
        starting_after : typing.Optional[str]
            Pagination parameter indicating the cursor position to continue returning results after. Used in conjunction with the 'limit' parameter. Mutually exclusive with 'endingBefore' parameter.

        ending_before : typing.Optional[str]
            Pagination parameter indicating the cursor position to return results before. Used in conjunction with the 'limit' parameter. Mutually exclusive with 'startingAfter' parameter.

        limit : typing.Optional[int]
            Pagination parameter indicating the number of results to return in this request. Used in conjunction with either 'startingAfter' or 'endingBefore'.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        InlineResponse2002
            List of assets and their current locations.

        Examples
        --------
        from samsara import Samsara

        client = Samsara(
            token="YOUR_TOKEN",
        )
        client.assets.v_1_get_all_asset_current_locations()
        """
        _response = self._raw_client.v_1_get_all_asset_current_locations(
            starting_after=starting_after, ending_before=ending_before, limit=limit, request_options=request_options
        )
        return _response.data

    def v_1_get_assets_reefers(
        self,
        *,
        start_ms: int,
        end_ms: int,
        starting_after: typing.Optional[str] = None,
        ending_before: typing.Optional[str] = None,
        limit: typing.Optional[int] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> InlineResponse2003:
        """
        <n class="warning">
        <nh>
        <i class="fa fa-exclamation-circle"></i>
        This endpoint is still on our legacy API.
        </nh>
        </n>

        Fetches all reefers and reefer-specific stats.

         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        To use this endpoint, select **Read Trailers** under the Trailers category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>

        Parameters
        ----------
        start_ms : int
            Timestamp in milliseconds representing the start of the period to fetch, inclusive. Used in combination with endMs.

        end_ms : int
            Timestamp in milliseconds representing the end of the period to fetch, inclusive. Used in combination with startMs.

        starting_after : typing.Optional[str]
            Pagination parameter indicating the cursor position to continue returning results after. Used in conjunction with the 'limit' parameter. Mutually exclusive with 'endingBefore' parameter.

        ending_before : typing.Optional[str]
            Pagination parameter indicating the cursor position to return results before. Used in conjunction with the 'limit' parameter. Mutually exclusive with 'startingAfter' parameter.

        limit : typing.Optional[int]
            Pagination parameter indicating the number of results to return in this request. Used in conjunction with either 'startingAfter' or 'endingBefore'.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        InlineResponse2003
            All org reefers and reefer-specific details.

        Examples
        --------
        from samsara import Samsara

        client = Samsara(
            token="YOUR_TOKEN",
        )
        client.assets.v_1_get_assets_reefers(
            start_ms=1000000,
            end_ms=1000000,
        )
        """
        _response = self._raw_client.v_1_get_assets_reefers(
            start_ms=start_ms,
            end_ms=end_ms,
            starting_after=starting_after,
            ending_before=ending_before,
            limit=limit,
            request_options=request_options,
        )
        return _response.data

    def v_1_get_asset_location(
        self, asset_id: int, *, start_ms: int, end_ms: int, request_options: typing.Optional[RequestOptions] = None
    ) -> V1AssetLocationResponse:
        """
        <n class="warning">
        <nh>
        <i class="fa fa-exclamation-circle"></i>
        This endpoint is still on our legacy API.
        </nh>
        </n>

        List historical locations for a given asset.

         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        To use this endpoint, select **Read Equipment Statistics** under the Equipment category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>

        Parameters
        ----------
        asset_id : int
            ID of the asset. Must contain only digits 0-9.

        start_ms : int
            Timestamp in milliseconds representing the start of the period to fetch, inclusive. Used in combination with endMs.

        end_ms : int
            Timestamp in milliseconds representing the end of the period to fetch, inclusive. Used in combination with startMs.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        V1AssetLocationResponse
            Asset location details.

        Examples
        --------
        from samsara import Samsara

        client = Samsara(
            token="YOUR_TOKEN",
        )
        client.assets.v_1_get_asset_location(
            asset_id=1000000,
            start_ms=1000000,
            end_ms=1000000,
        )
        """
        _response = self._raw_client.v_1_get_asset_location(
            asset_id, start_ms=start_ms, end_ms=end_ms, request_options=request_options
        )
        return _response.data

    def v_1_get_asset_reefer(
        self, asset_id: int, *, start_ms: int, end_ms: int, request_options: typing.Optional[RequestOptions] = None
    ) -> V1AssetReeferResponse:
        """
        <n class="warning">
        <nh>
        <i class="fa fa-exclamation-circle"></i>
        This endpoint is still on our legacy API.
        </nh>
        </n>

        Fetch the reefer-specific stats of an asset.

         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        To use this endpoint, select **Read Trailers** under the Trailers category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>

        Parameters
        ----------
        asset_id : int
            ID of the asset. Must contain only digits 0-9.

        start_ms : int
            Timestamp in milliseconds representing the start of the period to fetch, inclusive. Used in combination with endMs.

        end_ms : int
            Timestamp in milliseconds representing the end of the period to fetch, inclusive. Used in combination with startMs.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        V1AssetReeferResponse
            Reefer-specific asset details.

        Examples
        --------
        from samsara import Samsara

        client = Samsara(
            token="YOUR_TOKEN",
        )
        client.assets.v_1_get_asset_reefer(
            asset_id=1000000,
            start_ms=1000000,
            end_ms=1000000,
        )
        """
        _response = self._raw_client.v_1_get_asset_reefer(
            asset_id, start_ms=start_ms, end_ms=end_ms, request_options=request_options
        )
        return _response.data

    def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None:
        """
        Parameters
        ----------
        id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from samsara import Samsara

        client = Samsara(
            token="YOUR_TOKEN",
        )
        client.assets.get(
            id="id",
        )
        """
        _response = self._raw_client.get(id, request_options=request_options)
        return _response.data

    def update(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None:
        """
        Parameters
        ----------
        id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from samsara import Samsara

        client = Samsara(
            token="YOUR_TOKEN",
        )
        client.assets.update(
            id="id",
        )
        """
        _response = self._raw_client.update(id, request_options=request_options)
        return _response.data


class AsyncAssetsClient:
    def __init__(self, *, client_wrapper: AsyncClientWrapper):
        self._raw_client = AsyncRawAssetsClient(client_wrapper=client_wrapper)

    @property
    def with_raw_response(self) -> AsyncRawAssetsClient:
        """
        Retrieves a raw implementation of this client that returns raw responses.

        Returns
        -------
        AsyncRawAssetsClient
        """
        return self._raw_client

    async def list(
        self,
        *,
        type: typing.Optional[ListAssetsRequestType] = None,
        after: typing.Optional[str] = None,
        updated_after_time: typing.Optional[str] = None,
        include_external_ids: typing.Optional[bool] = None,
        include_tags: typing.Optional[bool] = None,
        tag_ids: typing.Optional[str] = None,
        parent_tag_ids: typing.Optional[str] = None,
        ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
        attribute_value_ids: typing.Optional[str] = None,
        attributes: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> AsyncPager[AssetResponseBody, AssetsListAssetsResponseBody]:
        """
        List all assets. Up to 300 assets will be returned per page.

         <b>Rate limit:</b> 5 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).

        To use this endpoint, select **Read Assets** under the Assets category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>


         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        Parameters
        ----------
        type : typing.Optional[ListAssetsRequestType]
            The operational context in which the asset interacts with the Samsara system. Examples: Vehicle (eg: truck, bus...), Trailer (eg: dry van, reefer, flatbed...), Powered Equipment (eg: dozer, crane...), Unpowered Equipment (eg: container, dumpster...), or Uncategorized.  Valid values: `uncategorized`, `trailer`, `equipment`, `unpowered`, `vehicle`

        after : typing.Optional[str]
             If specified, this should be the endCursor value from the previous page of results. When present, this request will return the next page of results that occur immediately after the previous page of results.

        updated_after_time : typing.Optional[str]
             A filter on data to have an updated at time after or equal to this specified time in RFC 3339 format. Millisecond precision and timezones are supported. (Examples: 2019-06-13T19:08:25Z, 2019-06-13T19:08:25.455Z, OR 2015-09-15T14:00:12-04:00).

        include_external_ids : typing.Optional[bool]
            Optional boolean indicating whether to return external IDs on supported entities

        include_tags : typing.Optional[bool]
            Optional boolean indicating whether to return tags on supported entities

        tag_ids : typing.Optional[str]
             A filter on the data based on this comma-separated list of tag IDs. Example: `tagIds=1234,5678`

        parent_tag_ids : typing.Optional[str]
             A filter on the data based on this comma-separated list of parent tag IDs, for use by orgs with tag hierarchies. Specifying a parent tag will implicitly include all descendent tags of the parent tag. Example: `parentTagIds=345,678`

        ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
            A filter on the data based on this comma-separated list of asset IDs and External IDs.

        attribute_value_ids : typing.Optional[str]
            A filter on the data based on this comma-separated list of attribute value IDs. Only entities associated with ALL of the referenced values will be returned (i.e. the intersection of the sets of entities with each value). Example: `attributeValueIds=076efac2-83b5-47aa-ba36-18428436dcac,6707b3f0-23b9-4fe3-b7be-11be34aea544`

        attributes : typing.Optional[typing.Union[str, typing.Sequence[str]]]
            A filter on the data to return entities within given range query (only for numeric and date attributes) separated by a comma. Only entities meeting all the conditions will be returned. At least one bound must be provided. Example: `attributes=Length:range(8,)&attributes=Length:range(10,20)&attributes=Date:range(2025-01-01,2025-01-31)`

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncPager[AssetResponseBody, AssetsListAssetsResponseBody]
            OK response.

        Examples
        --------
        import asyncio

        from samsara import AsyncSamsara

        client = AsyncSamsara(
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            response = await client.assets.list()
            async for item in response:
                yield item

            # alternatively, you can paginate page-by-page
            async for page in response.iter_pages():
                yield page


        asyncio.run(main())
        """
        return await self._raw_client.list(
            type=type,
            after=after,
            updated_after_time=updated_after_time,
            include_external_ids=include_external_ids,
            include_tags=include_tags,
            tag_ids=tag_ids,
            parent_tag_ids=parent_tag_ids,
            ids=ids,
            attribute_value_ids=attribute_value_ids,
            attributes=attributes,
            request_options=request_options,
        )

    async def create_asset(
        self,
        *,
        external_ids: typing.Optional[typing.Dict[str, str]] = OMIT,
        license_plate: typing.Optional[str] = OMIT,
        make: typing.Optional[str] = OMIT,
        model: typing.Optional[str] = OMIT,
        name: typing.Optional[str] = OMIT,
        notes: typing.Optional[str] = OMIT,
        readings_ingestion_enabled: typing.Optional[bool] = OMIT,
        regulation_mode: typing.Optional[AssetsCreateAssetRequestBodyRegulationMode] = OMIT,
        serial_number: typing.Optional[str] = OMIT,
        type: typing.Optional[AssetsCreateAssetRequestBodyType] = OMIT,
        vin: typing.Optional[str] = OMIT,
        year: typing.Optional[int] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> AssetsCreateAssetResponseBody:
        """
        Create a new asset.

         <b>Rate limit:</b> 100 requests/min (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).

        To use this endpoint, select **Write Assets** under the Assets category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>


         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        Parameters
        ----------
        external_ids : typing.Optional[typing.Dict[str, str]]
            A map of external ids

        license_plate : typing.Optional[str]
            The license plate of the asset.

        make : typing.Optional[str]
            The OEM/manufacturer of the asset. Updates to this field are restricted.

        model : typing.Optional[str]
            The model of the asset. Updates to this field are restricted.

        name : typing.Optional[str]
            The human-readable name of the asset. This is set by a fleet administrator and will appear in both Samsara’s cloud dashboard as well as the Samsara Driver mobile app. By default, this name is the serial number of the Samsara Asset Gateway. It can be set or updated through the Samsara Dashboard or through the API at any time.

        notes : typing.Optional[str]
            These are generic notes about the asset. Can be set or updated through the Samsara Dashboard or the API at any time.

        readings_ingestion_enabled : typing.Optional[bool]
            Indicates whether the asset is expected to have data ingested using the Readings API.

        regulation_mode : typing.Optional[AssetsCreateAssetRequestBodyRegulationMode]
            Whether or not the asset is regulated, unregulated (non-CMV), or a mixed use unregulated asset. Primarily used with vehicles.  Valid values: `mixed`, `regulated`, `unregulated`

        serial_number : typing.Optional[str]
            The serial number of the asset. This can be an internal serial number or used to hold legacy VIN/PIN numbers such as ones of shorter lengths.

        type : typing.Optional[AssetsCreateAssetRequestBodyType]
            The operational context in which the asset interacts with the Samsara system. Examples: Vehicle (eg: truck, bus...), Trailer (eg: dry van, reefer, flatbed...), Powered Equipment (eg: dozer, crane...), Unpowered Equipment (eg: container, dumpster...), or Uncategorized.  Valid values: `uncategorized`, `trailer`, `equipment`, `unpowered`, `vehicle`

        vin : typing.Optional[str]
            The unique 17-digit VIN (Vehicle Identification Number) or PIN (Product Identification Number) of the asset.

        year : typing.Optional[int]
            The model year of the asset. Updates to this field are restricted.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AssetsCreateAssetResponseBody
            OK response.

        Examples
        --------
        import asyncio

        from samsara import AsyncSamsara

        client = AsyncSamsara(
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.assets.create_asset()


        asyncio.run(main())
        """
        _response = await self._raw_client.create_asset(
            external_ids=external_ids,
            license_plate=license_plate,
            make=make,
            model=model,
            name=name,
            notes=notes,
            readings_ingestion_enabled=readings_ingestion_enabled,
            regulation_mode=regulation_mode,
            serial_number=serial_number,
            type=type,
            vin=vin,
            year=year,
            request_options=request_options,
        )
        return _response.data

    async def delete_asset(self, *, id: str, request_options: typing.Optional[RequestOptions] = None) -> None:
        """
        Delete an existing asset.

         <b>Rate limit:</b> 100 requests/min (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).

        To use this endpoint, select **Write Assets** under the Assets category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>


         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        Parameters
        ----------
        id : str
            A filter selecting a single asset by id.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        import asyncio

        from samsara import AsyncSamsara

        client = AsyncSamsara(
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.assets.delete_asset(
                id="id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.delete_asset(id=id, request_options=request_options)
        return _response.data

    async def update_asset(
        self,
        *,
        id: str,
        external_ids: typing.Optional[typing.Dict[str, str]] = OMIT,
        license_plate: typing.Optional[str] = OMIT,
        make: typing.Optional[str] = OMIT,
        model: typing.Optional[str] = OMIT,
        name: typing.Optional[str] = OMIT,
        notes: typing.Optional[str] = OMIT,
        readings_ingestion_enabled: typing.Optional[bool] = OMIT,
        regulation_mode: typing.Optional[AssetsUpdateAssetRequestBodyRegulationMode] = OMIT,
        serial_number: typing.Optional[str] = OMIT,
        type: typing.Optional[AssetsUpdateAssetRequestBodyType] = OMIT,
        vin: typing.Optional[str] = OMIT,
        year: typing.Optional[int] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> AssetsUpdateAssetResponseBody:
        """
        Update an existing asset.

         <b>Rate limit:</b> 100 requests/min (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).

        To use this endpoint, select **Write Assets** under the Assets category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>


         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        Parameters
        ----------
        id : str
            A filter selecting a single asset by id.

        external_ids : typing.Optional[typing.Dict[str, str]]
            A map of external ids

        license_plate : typing.Optional[str]
            The license plate of the asset.

        make : typing.Optional[str]
            The OEM/manufacturer of the asset. Updates to this field are restricted.

        model : typing.Optional[str]
            The model of the asset. Updates to this field are restricted.

        name : typing.Optional[str]
            The human-readable name of the asset. This is set by a fleet administrator and will appear in both Samsara’s cloud dashboard as well as the Samsara Driver mobile app. By default, this name is the serial number of the Samsara Asset Gateway. It can be set or updated through the Samsara Dashboard or through the API at any time.

        notes : typing.Optional[str]
            These are generic notes about the asset. Can be set or updated through the Samsara Dashboard or the API at any time.

        readings_ingestion_enabled : typing.Optional[bool]
            Indicates whether the asset is expected to have data ingested using the Readings API.

        regulation_mode : typing.Optional[AssetsUpdateAssetRequestBodyRegulationMode]
            Whether or not the asset is regulated, unregulated (non-CMV), or a mixed use unregulated asset. Primarily used with vehicles.  Valid values: `mixed`, `regulated`, `unregulated`

        serial_number : typing.Optional[str]
            The serial number of the asset. This can be an internal serial number or used to hold legacy VIN/PIN numbers such as ones of shorter lengths.

        type : typing.Optional[AssetsUpdateAssetRequestBodyType]
            The operational context in which the asset interacts with the Samsara system. Examples: Vehicle (eg: truck, bus...), Trailer (eg: dry van, reefer, flatbed...), Powered Equipment (eg: dozer, crane...), Unpowered Equipment (eg: container, dumpster...), or Uncategorized.  Valid values: `uncategorized`, `trailer`, `equipment`, `unpowered`, `vehicle`

        vin : typing.Optional[str]
            The unique 17-digit VIN (Vehicle Identification Number) or PIN (Product Identification Number) of the asset.

        year : typing.Optional[int]
            The model year of the asset. Updates to this field are restricted.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AssetsUpdateAssetResponseBody
            OK response.

        Examples
        --------
        import asyncio

        from samsara import AsyncSamsara

        client = AsyncSamsara(
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.assets.update_asset(
                id="id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_asset(
            id=id,
            external_ids=external_ids,
            license_plate=license_plate,
            make=make,
            model=model,
            name=name,
            notes=notes,
            readings_ingestion_enabled=readings_ingestion_enabled,
            regulation_mode=regulation_mode,
            serial_number=serial_number,
            type=type,
            vin=vin,
            year=year,
            request_options=request_options,
        )
        return _response.data

    async def v_1_get_all_asset_current_locations(
        self,
        *,
        starting_after: typing.Optional[str] = None,
        ending_before: typing.Optional[str] = None,
        limit: typing.Optional[int] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> InlineResponse2002:
        """
        <n class="warning">
        <nh>
        <i class="fa fa-exclamation-circle"></i>
        This endpoint is still on our legacy API.
        </nh>
        </n>

        Fetch current locations of all assets.

         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        To use this endpoint, select **Read Equipment Statistics** under the Equipment category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>

        Parameters
        ----------
        starting_after : typing.Optional[str]
            Pagination parameter indicating the cursor position to continue returning results after. Used in conjunction with the 'limit' parameter. Mutually exclusive with 'endingBefore' parameter.

        ending_before : typing.Optional[str]
            Pagination parameter indicating the cursor position to return results before. Used in conjunction with the 'limit' parameter. Mutually exclusive with 'startingAfter' parameter.

        limit : typing.Optional[int]
            Pagination parameter indicating the number of results to return in this request. Used in conjunction with either 'startingAfter' or 'endingBefore'.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        InlineResponse2002
            List of assets and their current locations.

        Examples
        --------
        import asyncio

        from samsara import AsyncSamsara

        client = AsyncSamsara(
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.assets.v_1_get_all_asset_current_locations()


        asyncio.run(main())
        """
        _response = await self._raw_client.v_1_get_all_asset_current_locations(
            starting_after=starting_after, ending_before=ending_before, limit=limit, request_options=request_options
        )
        return _response.data

    async def v_1_get_assets_reefers(
        self,
        *,
        start_ms: int,
        end_ms: int,
        starting_after: typing.Optional[str] = None,
        ending_before: typing.Optional[str] = None,
        limit: typing.Optional[int] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> InlineResponse2003:
        """
        <n class="warning">
        <nh>
        <i class="fa fa-exclamation-circle"></i>
        This endpoint is still on our legacy API.
        </nh>
        </n>

        Fetches all reefers and reefer-specific stats.

         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        To use this endpoint, select **Read Trailers** under the Trailers category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>

        Parameters
        ----------
        start_ms : int
            Timestamp in milliseconds representing the start of the period to fetch, inclusive. Used in combination with endMs.

        end_ms : int
            Timestamp in milliseconds representing the end of the period to fetch, inclusive. Used in combination with startMs.

        starting_after : typing.Optional[str]
            Pagination parameter indicating the cursor position to continue returning results after. Used in conjunction with the 'limit' parameter. Mutually exclusive with 'endingBefore' parameter.

        ending_before : typing.Optional[str]
            Pagination parameter indicating the cursor position to return results before. Used in conjunction with the 'limit' parameter. Mutually exclusive with 'startingAfter' parameter.

        limit : typing.Optional[int]
            Pagination parameter indicating the number of results to return in this request. Used in conjunction with either 'startingAfter' or 'endingBefore'.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        InlineResponse2003
            All org reefers and reefer-specific details.

        Examples
        --------
        import asyncio

        from samsara import AsyncSamsara

        client = AsyncSamsara(
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.assets.v_1_get_assets_reefers(
                start_ms=1000000,
                end_ms=1000000,
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.v_1_get_assets_reefers(
            start_ms=start_ms,
            end_ms=end_ms,
            starting_after=starting_after,
            ending_before=ending_before,
            limit=limit,
            request_options=request_options,
        )
        return _response.data

    async def v_1_get_asset_location(
        self, asset_id: int, *, start_ms: int, end_ms: int, request_options: typing.Optional[RequestOptions] = None
    ) -> V1AssetLocationResponse:
        """
        <n class="warning">
        <nh>
        <i class="fa fa-exclamation-circle"></i>
        This endpoint is still on our legacy API.
        </nh>
        </n>

        List historical locations for a given asset.

         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        To use this endpoint, select **Read Equipment Statistics** under the Equipment category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>

        Parameters
        ----------
        asset_id : int
            ID of the asset. Must contain only digits 0-9.

        start_ms : int
            Timestamp in milliseconds representing the start of the period to fetch, inclusive. Used in combination with endMs.

        end_ms : int
            Timestamp in milliseconds representing the end of the period to fetch, inclusive. Used in combination with startMs.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        V1AssetLocationResponse
            Asset location details.

        Examples
        --------
        import asyncio

        from samsara import AsyncSamsara

        client = AsyncSamsara(
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.assets.v_1_get_asset_location(
                asset_id=1000000,
                start_ms=1000000,
                end_ms=1000000,
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.v_1_get_asset_location(
            asset_id, start_ms=start_ms, end_ms=end_ms, request_options=request_options
        )
        return _response.data

    async def v_1_get_asset_reefer(
        self, asset_id: int, *, start_ms: int, end_ms: int, request_options: typing.Optional[RequestOptions] = None
    ) -> V1AssetReeferResponse:
        """
        <n class="warning">
        <nh>
        <i class="fa fa-exclamation-circle"></i>
        This endpoint is still on our legacy API.
        </nh>
        </n>

        Fetch the reefer-specific stats of an asset.

         **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

        To use this endpoint, select **Read Trailers** under the Trailers category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>

        Parameters
        ----------
        asset_id : int
            ID of the asset. Must contain only digits 0-9.

        start_ms : int
            Timestamp in milliseconds representing the start of the period to fetch, inclusive. Used in combination with endMs.

        end_ms : int
            Timestamp in milliseconds representing the end of the period to fetch, inclusive. Used in combination with startMs.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        V1AssetReeferResponse
            Reefer-specific asset details.

        Examples
        --------
        import asyncio

        from samsara import AsyncSamsara

        client = AsyncSamsara(
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.assets.v_1_get_asset_reefer(
                asset_id=1000000,
                start_ms=1000000,
                end_ms=1000000,
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.v_1_get_asset_reefer(
            asset_id, start_ms=start_ms, end_ms=end_ms, request_options=request_options
        )
        return _response.data

    async def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None:
        """
        Parameters
        ----------
        id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        import asyncio

        from samsara import AsyncSamsara

        client = AsyncSamsara(
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.assets.get(
                id="id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get(id, request_options=request_options)
        return _response.data

    async def update(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None:
        """
        Parameters
        ----------
        id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        import asyncio

        from samsara import AsyncSamsara

        client = AsyncSamsara(
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.assets.update(
                id="id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update(id, request_options=request_options)
        return _response.data
