> This page is for NeMo Relay, version dev.
> For other versions, use one of these documentation indexes:
> - Latest (v0.11.1) (default): https://docs.nvidia.com/nemo/relay/latest/llms.txt
> - dev: https://docs.nvidia.com/nemo/relay/dev/llms.txt
> - v0.11.1: https://docs.nvidia.com/nemo/relay/v0.11.1/llms.txt
> - v0.10.4: https://docs.nvidia.com/nemo/relay/v0.10.4/llms.txt
> - v0.9.4: https://docs.nvidia.com/nemo/relay/v0.9.4/llms.txt
> - v0.8.4: https://docs.nvidia.com/nemo/relay/v0.8.4/llms.txt
> - v0.7.3: https://docs.nvidia.com/nemo/relay/v0.7.3/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/relay/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/relay/_mcp/server.

# Enum Registration Surface

> Closed registration surfaces; unspecified and unknown values cannot be invoked.

Generated from `cargo doc --no-deps -p nemo-relay-builtins -p nemo-relay-diagnostics -p nemo-relay-logging -p nemo-relay-plugin-host -p nemo-relay-codecs -p nemo-relay -p nemo-relay-runtime -p nemo-relay-model-pricing -p nemo-relay-resource-metrics -p nemo-relay-observability -p nemo-relay-adaptive -p nemo-relay-pii-redaction -p nemo-relay-ffi -p nemo-relay-types -p nemo-relay-plugin -p nemo-relay-worker-proto -p nemo-relay-worker`.

```rust
#[repr(i32)]pub enum RegistrationSurface {
Show 18 variants    Unspecified = 0,
    Subscriber = 1,
    EventMetadataInjector = 2,
    ToolSanitizeRequestGuardrail = 10,
    ToolSanitizeResponseGuardrail = 11,
    ToolConditionalExecutionGuardrail = 12,
    ToolRequestIntercept = 13,
    ToolExecutionIntercept = 14,
    LlmSanitizeRequestGuardrail = 20,
    LlmSanitizeResponseGuardrail = 21,
    LlmConditionalExecutionGuardrail = 22,
    LlmRequestIntercept = 23,
    LlmExecutionIntercept = 24,
    LlmStreamExecutionIntercept = 25,
    MarkSanitizeGuardrail = 30,
    ScopeSanitizeStartGuardrail = 31,
    ScopeSanitizeEndGuardrail = 32,
    ConditionalMiddlewareGuardrail = 40,
}
```

Closed registration surfaces; unspecified and unknown values cannot be invoked.

## Variants

### `Unspecified = 0`

<pre />

No registration surface selected; invalid for registrations and invocations.

### `Subscriber = 1`

<pre />

Observes an event and completes without returning a rewritten value.

### `EventMetadataInjector = 2`

<pre />

Produces open metadata additions for an observed event.

### `ToolSanitizeRequestGuardrail = 10`

<pre />

Rewrites tool request arguments before execution.

### `ToolSanitizeResponseGuardrail = 11`

<pre />

Rewrites the application tool result after execution.

### `ToolConditionalExecutionGuardrail = 12`

<pre />

Allows or blocks execution of a tool request.

### `ToolRequestIntercept = 13`

<pre />

Rewrites a tool request within the ordered interceptor chain.

### `ToolExecutionIntercept = 14`

<pre />

Executes or delegates a managed tool call and may schedule marks.

### `LlmSanitizeRequestGuardrail = 20`

<pre />

Rewrites a provider LLM request using its codec context.

### `LlmSanitizeResponseGuardrail = 21`

<pre />

Rewrites a provider LLM response using its codec context.

### `LlmConditionalExecutionGuardrail = 22`

<pre />

Allows or blocks execution of an LLM request.

### `LlmRequestIntercept = 23`

<pre />

Rewrites a provider request or normalized annotation and may contribute evidence.

### `LlmExecutionIntercept = 24`

<pre />

Executes or delegates a unary LLM call with request and response codec access.

### `LlmStreamExecutionIntercept = 25`

<pre />

Executes or delegates streaming LLM output with request-only codec access.

### `MarkSanitizeGuardrail = 30`

<pre />

Replaces sanitizable fields of a mark before publication.

### `ScopeSanitizeStartGuardrail = 31`

<pre />

Replaces sanitizable fields of a scope-start event before publication.

### `ScopeSanitizeEndGuardrail = 32`

<pre />

Replaces sanitizable fields of a scope-end event before publication.

### `ConditionalMiddlewareGuardrail = 40`

<pre />

Allows or blocks selected middleware registrations before they execute.

## Implementations

### `impl RegistrationSurface`

<pre />

#### `is_valid`

<pre />

Returns `true` if `value` is a variant of `RegistrationSurface`.

#### `from_i32`

<pre />

Converts an `i32` to a `RegistrationSurface`, or `None` if `value` is not a valid variant.

### `impl RegistrationSurface`

<pre />

#### `as_str_name`

<pre />

String value of the enum field names used in the ProtoBuf definition.

The values are not transformed in any way and thus are considered stable (if the ProtoBuf definition does not change) and safe for programmatic use.

#### `from_str_name`

<pre />

Creates an enum from field names used in the ProtoBuf definition.

## Trait Implementations

### `impl Clone for RegistrationSurface`

<pre />

#### `clone`

<pre />

#### `clone_from`

<pre />

### `impl Debug for RegistrationSurface`

<pre />

#### `fmt`

<pre />

### `impl Default for RegistrationSurface`

<pre />

#### `default`

<pre />

### `impl From<RegistrationSurface> for i32`

<pre />

#### `from`

<pre />

### `impl Hash for RegistrationSurface`

<pre />

#### `hash`

<pre />

#### `hash_slice`

<pre />

### `impl Ord for RegistrationSurface`

<pre />

#### `cmp`

<pre />

#### `max`

<pre />

#### `min`

<pre />

#### `clamp`

<pre />

### `impl PartialEq for RegistrationSurface`

<pre />

#### `eq`

<pre />

#### `ne`

<pre />

### `impl PartialOrd for RegistrationSurface`

<pre />

#### `partial_cmp`

<pre />

#### `lt`

<pre />

#### `le`

<pre />

#### `gt`

<pre />

#### `ge`

<pre />

### `impl TryFrom<i32> for RegistrationSurface`

<pre />

#### `Error`

<pre />

#### `try_from`

<pre />

### `impl Copy for RegistrationSurface`

<pre />

### `impl Eq for RegistrationSurface`

<pre />

### `impl StructuralPartialEq for RegistrationSurface`

<pre />