# `HfHub.AccessRequests`
[🔗](https://github.com/North-Shore-AI/hf_hub_ex/blob/v0.3.1/lib/hf_hub/access_requests.ex#L1)

Access request management for gated repositories.

This module provides functions to manage user access requests for gated
models, datasets, and spaces on HuggingFace Hub.

## Examples

    # List pending access requests
    {:ok, requests} = HfHub.AccessRequests.list_pending("my-gated-model")

    # Accept a request
    :ok = HfHub.AccessRequests.accept("my-gated-model", "username")

    # Grant access directly (without prior request)
    :ok = HfHub.AccessRequests.grant("my-gated-model", "username")

# `repo_type`

```elixir
@type repo_type() :: :model | :dataset | :space
```

# `status`

```elixir
@type status() :: :pending | :accepted | :rejected
```

# `accept`

```elixir
@spec accept(String.t(), String.t(), keyword()) :: :ok | {:error, term()}
```

Accepts a pending access request.

## Options

  * `:token` - Authentication token (required)
  * `:repo_type` - Repository type (default: `:model`)

## Examples

    :ok = HfHub.AccessRequests.accept("my-gated-model", "username")

# `cancel`

```elixir
@spec cancel(String.t(), String.t(), keyword()) :: :ok | {:error, term()}
```

Cancels/revokes an access request or grant.

This removes the user's access completely.

## Options

  * `:token` - Authentication token (required)
  * `:repo_type` - Repository type (default: `:model`)

## Examples

    :ok = HfHub.AccessRequests.cancel("my-gated-model", "username")

# `grant`

```elixir
@spec grant(String.t(), String.t(), keyword()) :: :ok | {:error, term()}
```

Grants access directly without a prior request.

Use for proactive access grants to specific users.

## Options

  * `:token` - Authentication token (required)
  * `:repo_type` - Repository type (default: `:model`)

## Examples

    :ok = HfHub.AccessRequests.grant("my-gated-model", "username")

# `list_accepted`

```elixir
@spec list_accepted(
  String.t(),
  keyword()
) :: {:ok, [HfHub.AccessRequests.AccessRequest.t()]} | {:error, term()}
```

Lists accepted access requests for a repository.

## Options

  * `:token` - Authentication token
  * `:repo_type` - Repository type (default: `:model`)

## Examples

    {:ok, requests} = HfHub.AccessRequests.list_accepted("my-gated-model")

# `list_pending`

```elixir
@spec list_pending(
  String.t(),
  keyword()
) :: {:ok, [HfHub.AccessRequests.AccessRequest.t()]} | {:error, term()}
```

Lists pending access requests for a repository.

## Options

  * `:token` - Authentication token
  * `:repo_type` - Repository type (default: `:model`)

## Examples

    {:ok, requests} = HfHub.AccessRequests.list_pending("my-gated-model")

# `list_rejected`

```elixir
@spec list_rejected(
  String.t(),
  keyword()
) :: {:ok, [HfHub.AccessRequests.AccessRequest.t()]} | {:error, term()}
```

Lists rejected access requests for a repository.

## Options

  * `:token` - Authentication token
  * `:repo_type` - Repository type (default: `:model`)

## Examples

    {:ok, requests} = HfHub.AccessRequests.list_rejected("my-gated-model")

# `reject`

```elixir
@spec reject(String.t(), String.t(), keyword()) :: :ok | {:error, term()}
```

Rejects a pending access request.

## Options

  * `:token` - Authentication token (required)
  * `:repo_type` - Repository type (default: `:model`)

## Examples

    :ok = HfHub.AccessRequests.reject("my-gated-model", "username")

---

*Consult [api-reference.md](api-reference.md) for complete listing*
