# `ReqLLM.ProviderFileReference`
[🔗](https://github.com/agentjido/req_llm/blob/main/lib/req_llm/provider_file_reference.ex#L1)

Metadata and validation for explicitly provider-owned file references.

Provider ownership is opt-in. Legacy `ReqLLM.Message.ContentPart.file_id/1`
values do not contain this metadata and are never inferred to belong to a
provider.

Owned references store a versioned record below the reserved
`"req_llm" -> "provider_file"` metadata namespace. Use
`ReqLLM.Message.ContentPart.owned_file_id/3` to create one.

# `t`

```elixir
@type t() :: %{required(String.t()) =&gt; term()}
```

# `fetch`

```elixir
@spec fetch(ReqLLM.Message.ContentPart.t() | map()) :: {:ok, t()} | :error
```

Returns the full ownership record for an explicitly owned file.

# `metadata_path`

```elixir
@spec metadata_path() :: [String.t()]
```

Returns the reserved metadata path used for provider-owned files.

# `owned?`

```elixir
@spec owned?(ReqLLM.Message.ContentPart.t() | map()) :: boolean()
```

Returns whether a content part was explicitly marked as provider-owned.

# `redacted`

```elixir
@spec redacted(ReqLLM.Message.ContentPart.t() | map()) :: {:ok, t()} | :error
```

Returns a redacted ownership record suitable for logs and diagnostics.

---

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