# Request<T>

> Tracks the state of an asynchronous Unity Package Manager (Upm) server operation that returns a non-empty response.

## Definition

* **Type:** Class
* **Namespace:** [UnityEditor.PackageManager.Requests](/engine/6000.3/script-reference/unityeditor/packagemanager/requests.md)
* **Assembly:** UnityEditor
* **Inherits from:** [Request](/engine/6000.3/script-reference/unityeditor/packagemanager/requests/request.md)
* **Implements:** [ISerializationCallbackReceiver](/engine/6000.3/script-reference/unityengine/iserializationcallbackreceiver.md)

```csharp
public abstract class Request<T> : Request, ISerializationCallbackReceiver
```

## Remarks

A generic base class for Package Manager operations that return a result of type T. This class extends the base Request class to provide type-safe access to operation results.

**Notes:**

* Access `Result` only after checking `IsCompleted` and `Status`.
* Common type parameters include [PackageInfo](/engine/6000.3/script-reference/unityeditor/packagemanager/packageinfo.md), [PackageCollection](/engine/6000.3/script-reference/unityeditor/packagemanager/packagecollection.md), and [PackageInfo](/engine/6000.3/script-reference/unityeditor/packagemanager/packageinfo.md)\[].

```csharp
using UnityEngine;
using UnityEditor.PackageManager;
using UnityEditor.PackageManager.Requests;

[ExecuteInEditMode]
public class TypedRequestExample : MonoBehaviour
{
    Request<PackageInfo[]> m_GenericRequest;

    void Start()
    {
        Debug.Log("Searching packages with a typed request...");
        m_GenericRequest = Client.Search("com.unity.textmeshpro");
    }
    void Update()
    {
        if (m_GenericRequest != null && m_GenericRequest.IsCompleted)
        {
            if (m_GenericRequest.Status == StatusCode.Success)
            {
                var packages = m_GenericRequest.Result;

                if (packages.Length > 0)
                {
                    var package = packages[0];
                    Debug.Log($"Found package: {package.name}" +
                        $"\nVersion: {package.version}" +
                        $"\nDescription: {package.description}");
                }
                else
                {
                    Debug.Log("No packages found");
                }
            }
            else
            {
                Debug.LogError($"Search failed: {m_GenericRequest.Error.message}");
            }
            m_GenericRequest = null;
        }
    }
}
```

**Related information**

* [PackageInfo](/engine/6000.3/script-reference/unityeditor/packagemanager/packageinfo.md)
* [Client](/engine/6000.3/script-reference/unityeditor/packagemanager/client.md)
* [StatusCode](/engine/6000.3/script-reference/unityeditor/packagemanager/statuscode.md)
* [Request](/engine/6000.3/script-reference/unityeditor/packagemanager/requests/request.md)

## Properties

| Property                                                                                         | Description                                                                                     |
| ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- |
| [Result](/engine/6000.3/script-reference/unityeditor/packagemanager/requests/request1/result.md) | A property that provides access to the result of a completed Package Manager request operation. |

## Inheritance

**Inherited Members:**

* [Request.Status()](/engine/6000.3/script-reference/unityeditor/packagemanager/requests/request/status.md)
* [Request.IsCompleted()](/engine/6000.3/script-reference/unityeditor/packagemanager/requests/request/iscompleted.md)
* [Request.Error()](/engine/6000.3/script-reference/unityeditor/packagemanager/requests/request/error.md)
