> ## Documentation Index
> Fetch the complete documentation index at: https://openrouter-d02e98a0-mintlify-5b6e02fd.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAIResponsesToolChoiceUnion - Go SDK

> OpenAIResponsesToolChoiceUnion type definition

<Warning>
  The Go SDK and docs are currently in beta.
  Report issues on [GitHub](https://github.com/OpenRouterTeam/go-sdk/issues).
</Warning>

## Supported Types

### OpenAIResponsesToolChoiceAuto

```go lines theme={null}
openAIResponsesToolChoiceUnion := components.CreateOpenAIResponsesToolChoiceUnionOpenAIResponsesToolChoiceAuto(components.OpenAIResponsesToolChoiceAuto{/* values here */})
```

### OpenAIResponsesToolChoiceNone

```go lines theme={null}
openAIResponsesToolChoiceUnion := components.CreateOpenAIResponsesToolChoiceUnionOpenAIResponsesToolChoiceNone(components.OpenAIResponsesToolChoiceNone{/* values here */})
```

### OpenAIResponsesToolChoiceRequired

```go lines theme={null}
openAIResponsesToolChoiceUnion := components.CreateOpenAIResponsesToolChoiceUnionOpenAIResponsesToolChoiceRequired(components.OpenAIResponsesToolChoiceRequired{/* values here */})
```

### OpenAIResponsesToolChoiceFunction

```go lines theme={null}
openAIResponsesToolChoiceUnion := components.CreateOpenAIResponsesToolChoiceUnionOpenAIResponsesToolChoiceFunction(components.OpenAIResponsesToolChoiceFunction{/* values here */})
```

### OpenAIResponsesToolChoice

```go lines theme={null}
openAIResponsesToolChoiceUnion := components.CreateOpenAIResponsesToolChoiceUnionOpenAIResponsesToolChoice(components.OpenAIResponsesToolChoice{/* values here */})
```

### ToolChoiceAllowed

```go lines theme={null}
openAIResponsesToolChoiceUnion := components.CreateOpenAIResponsesToolChoiceUnionToolChoiceAllowed(components.ToolChoiceAllowed{/* values here */})
```

### OpenAIResponsesToolChoiceApplyPatch

```go lines theme={null}
openAIResponsesToolChoiceUnion := components.CreateOpenAIResponsesToolChoiceUnionOpenAIResponsesToolChoiceApplyPatch(components.OpenAIResponsesToolChoiceApplyPatch{/* values here */})
```

### OpenAIResponsesToolChoiceShell

```go lines theme={null}
openAIResponsesToolChoiceUnion := components.CreateOpenAIResponsesToolChoiceUnionOpenAIResponsesToolChoiceShell(components.OpenAIResponsesToolChoiceShell{/* values here */})
```

## Union Discrimination

Use the `Type` field to determine which variant is active, then access the corresponding field:

```go lines theme={null}
switch openAIResponsesToolChoiceUnion.Type {
	case components.OpenAIResponsesToolChoiceUnionTypeOpenAIResponsesToolChoiceAuto:
		// openAIResponsesToolChoiceUnion.OpenAIResponsesToolChoiceAuto is populated
	case components.OpenAIResponsesToolChoiceUnionTypeOpenAIResponsesToolChoiceNone:
		// openAIResponsesToolChoiceUnion.OpenAIResponsesToolChoiceNone is populated
	case components.OpenAIResponsesToolChoiceUnionTypeOpenAIResponsesToolChoiceRequired:
		// openAIResponsesToolChoiceUnion.OpenAIResponsesToolChoiceRequired is populated
	case components.OpenAIResponsesToolChoiceUnionTypeOpenAIResponsesToolChoiceFunction:
		// openAIResponsesToolChoiceUnion.OpenAIResponsesToolChoiceFunction is populated
	case components.OpenAIResponsesToolChoiceUnionTypeOpenAIResponsesToolChoice:
		// openAIResponsesToolChoiceUnion.OpenAIResponsesToolChoice is populated
	case components.OpenAIResponsesToolChoiceUnionTypeToolChoiceAllowed:
		// openAIResponsesToolChoiceUnion.ToolChoiceAllowed is populated
	case components.OpenAIResponsesToolChoiceUnionTypeOpenAIResponsesToolChoiceApplyPatch:
		// openAIResponsesToolChoiceUnion.OpenAIResponsesToolChoiceApplyPatch is populated
	case components.OpenAIResponsesToolChoiceUnionTypeOpenAIResponsesToolChoiceShell:
		// openAIResponsesToolChoiceUnion.OpenAIResponsesToolChoiceShell is populated
}
```
