CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-google-genai--google-genai

Java idiomatic SDK for the Gemini Developer APIs and Vertex AI APIs

Overview
Eval results
Files

types-reference.mddocs/

Types Reference

Common types and data models used throughout the SDK including Content, Part, Schema, configurations, and media types.

Core Imports

import com.google.genai.types.Content;
import com.google.genai.types.Part;
import com.google.genai.types.Blob;
import com.google.genai.types.FileData;
import com.google.genai.types.Image;
import com.google.genai.types.Video;
import com.google.genai.types.Schema;
import com.google.genai.types.SafetySetting;
import com.google.genai.types.Tool;
import com.google.genai.types.FunctionDeclaration;
import com.google.genai.types.FunctionCall;
import com.google.genai.types.FunctionResponse;

Content Types

Content

package com.google.genai.types;

public final class Content {
  public static Content fromParts(Part... parts);
  public static Content fromParts(List<Part> parts);
  public static Builder builder();

  public Optional<List<Part>> parts();
  public Optional<String> role();

  public Builder toBuilder();
}

Usage:

// Simple text content
Content content = Content.fromParts(Part.fromText("Hello"));

// With role
Content content = Content.builder()
    .parts(ImmutableList.of(Part.fromText("Hello")))
    .role("user")
    .build();

// Multimodal content
Content content = Content.fromParts(
    Part.fromText("Describe this image"),
    Part.fromImage(image)
);

Part

package com.google.genai.types;

public final class Part {
  // Factory methods
  public static Part fromText(String text);
  public static Part fromImage(Image image);
  public static Part fromVideo(Video video);
  public static Part fromFileData(FileData fileData);
  public static Part fromFunctionCall(FunctionCall functionCall);
  public static Part fromFunctionResponse(FunctionResponse functionResponse);
  public static Part fromUri(String uri, String mimeType);

  public static Builder builder();

  // Fields (mutually exclusive)
  public Optional<String> text();
  public Optional<Blob> inlineData();
  public Optional<FileData> fileData();
  public Optional<FunctionCall> functionCall();
  public Optional<FunctionResponse> functionResponse();
  public Optional<ExecutableCode> executableCode();
  public Optional<CodeExecutionResult> codeExecutionResult();
  public Optional<String> thought();
}

Usage:

// Text part
Part textPart = Part.fromText("Hello world");

// Image part
Part imagePart = Part.fromImage(image);

// File reference part
Part filePart = Part.fromUri("gs://bucket/file.pdf", "application/pdf");

// Function call part
Part functionPart = Part.fromFunctionCall(functionCall);

Blob

package com.google.genai.types;

public final class Blob {
  public static Builder builder();

  public Optional<String> data();
  public Optional<String> mimeType();
  public Optional<String> displayName();
}

Usage:

import java.util.Base64;

byte[] imageBytes = Files.readAllBytes(Paths.get("image.jpg"));
String base64Data = Base64.getEncoder().encodeToString(imageBytes);

Blob blob = Blob.builder()
    .data(base64Data)
    .mimeType("image/jpeg")
    .build();

Part part = Part.builder()
    .inlineData(blob)
    .build();

FileData

package com.google.genai.types;

public final class FileData {
  public static Builder builder();

  public Optional<String> fileUri();
  public Optional<String> mimeType();
  public Optional<String> displayName();
}

Usage:

FileData fileData = FileData.builder()
    .fileUri("gs://bucket/document.pdf")
    .mimeType("application/pdf")
    .displayName("My Document")
    .build();

Part part = Part.fromFileData(fileData);

Media Types

Image

package com.google.genai.types;

public final class Image {
  public static Image fromFile(String filePath);
  public static Builder builder();

  public Optional<String> imageUri();
  public Optional<byte[]> imageBytes();
  public Optional<String> gcsUri();
  public Optional<String> mimeType();
}

Usage:

// From file
Image image = Image.fromFile("path/to/image.jpg");

// From URI
Image image = Image.builder()
    .imageUri("https://example.com/image.jpg")
    .mimeType("image/jpeg")
    .build();

// From GCS
Image image = Image.builder()
    .gcsUri("gs://bucket/image.jpg")
    .mimeType("image/jpeg")
    .build();

// From bytes
Image image = Image.builder()
    .imageBytes(imageBytes)
    .mimeType("image/png")
    .build();

Video

package com.google.genai.types;

public final class Video {
  public static Builder builder();

  public Optional<String> videoUri();
  public Optional<byte[]> videoBytes();
  public Optional<String> gcsUri();
  public Optional<String> mimeType();
}

Usage:

Video video = Video.builder()
    .gcsUri("gs://bucket/video.mp4")
    .mimeType("video/mp4")
    .build();

Video video2 = Video.builder()
    .videoUri("https://example.com/video.mp4")
    .mimeType("video/mp4")
    .build();

Schema Types

Schema

package com.google.genai.types;

public final class Schema {
  public static Builder builder();

  public Optional<String> type();
  public Optional<String> format();
  public Optional<String> description();
  public Optional<Boolean> nullable();
  public Optional<List<String>> enum_();
  public Optional<Map<String, Schema>> properties();
  public Optional<List<String>> required();
  public Optional<Schema> items();
  public Optional<Long> minItems();
  public Optional<Long> maxItems();
  public Optional<Double> minimum();
  public Optional<Double> maximum();
}

Type Constants:

package com.google.genai.types;

public final class Type {
  public static final class Known {
    public static final String STRING = "STRING";
    public static final String NUMBER = "NUMBER";
    public static final String INTEGER = "INTEGER";
    public static final String BOOLEAN = "BOOLEAN";
    public static final String ARRAY = "ARRAY";
    public static final String OBJECT = "OBJECT";
  }
}

Usage:

import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableList;

// Simple string schema
Schema schema = Schema.builder()
    .type(Type.Known.STRING)
    .description("A person's name")
    .build();

// Object schema
Schema personSchema = Schema.builder()
    .type(Type.Known.OBJECT)
    .properties(ImmutableMap.of(
        "name", Schema.builder()
            .type(Type.Known.STRING)
            .build(),
        "age", Schema.builder()
            .type(Type.Known.INTEGER)
            .minimum(0.0)
            .build()
    ))
    .required(ImmutableList.of("name"))
    .build();

// Array schema
Schema arraySchema = Schema.builder()
    .type(Type.Known.ARRAY)
    .items(Schema.builder()
        .type(Type.Known.STRING)
        .build())
    .minItems(1L)
    .maxItems(10L)
    .build();

// Enum schema
Schema colorSchema = Schema.builder()
    .type(Type.Known.STRING)
    .enum_(ImmutableList.of("red", "green", "blue"))
    .build();

Safety Types

SafetySetting

package com.google.genai.types;

public final class SafetySetting {
  public static Builder builder();

  public Optional<String> category();
  public Optional<String> threshold();
  public Optional<String> method();
}

Categories:

package com.google.genai.types;

public final class HarmCategory {
  public static final class Known {
    public static final String HARM_CATEGORY_UNSPECIFIED = "HARM_CATEGORY_UNSPECIFIED";
    public static final String HARM_CATEGORY_HATE_SPEECH = "HARM_CATEGORY_HATE_SPEECH";
    public static final String HARM_CATEGORY_DANGEROUS_CONTENT = "HARM_CATEGORY_DANGEROUS_CONTENT";
    public static final String HARM_CATEGORY_HARASSMENT = "HARM_CATEGORY_HARASSMENT";
    public static final String HARM_CATEGORY_SEXUALLY_EXPLICIT = "HARM_CATEGORY_SEXUALLY_EXPLICIT";
  }
}

Thresholds:

package com.google.genai.types;

public final class HarmBlockThreshold {
  public static final class Known {
    public static final String HARM_BLOCK_THRESHOLD_UNSPECIFIED = "HARM_BLOCK_THRESHOLD_UNSPECIFIED";
    public static final String BLOCK_LOW_AND_ABOVE = "BLOCK_LOW_AND_ABOVE";
    public static final String BLOCK_MEDIUM_AND_ABOVE = "BLOCK_MEDIUM_AND_ABOVE";
    public static final String BLOCK_ONLY_HIGH = "BLOCK_ONLY_HIGH";
    public static final String BLOCK_NONE = "BLOCK_NONE";
    public static final String OFF = "OFF";
  }
}

Usage:

SafetySetting setting = SafetySetting.builder()
    .category(HarmCategory.Known.HARM_CATEGORY_HATE_SPEECH)
    .threshold(HarmBlockThreshold.Known.BLOCK_MEDIUM_AND_ABOVE)
    .build();

SafetyRating

package com.google.genai.types;

public final class SafetyRating {
  public Optional<String> category();
  public Optional<String> probability();
  public Optional<Boolean> blocked();
  public Optional<Double> probabilityScore();
  public Optional<String> severity();
  public Optional<Double> severityScore();
}

Tool Types

Tool

package com.google.genai.types;

public final class Tool {
  public static Builder builder();

  public Optional<List<FunctionDeclaration>> functionDeclarations();
  public Optional<GoogleSearchRetrieval> googleSearchRetrieval();
  public Optional<GoogleSearch> googleSearch();
  public Optional<GoogleMaps> googleMaps();
  public Optional<CodeExecution> codeExecution();
  public Optional<FileSearch> fileSearch();
  public Optional<ComputerUse> computerUse();
  public Optional<Retrieval> retrieval();
  public Optional<UrlContext> urlContext();
}

Usage:

// Function tool
Tool functionTool = Tool.builder()
    .functionDeclarations(ImmutableList.of(functionDeclaration))
    .build();

// Google Search tool
Tool searchTool = Tool.builder()
    .googleSearch(GoogleSearch.builder().build())
    .build();

// Code execution tool
Tool codeExecTool = Tool.builder()
    .codeExecution(CodeExecution.builder().build())
    .build();

FunctionDeclaration

package com.google.genai.types;

public final class FunctionDeclaration {
  public static Builder builder();

  public Optional<String> name();
  public Optional<String> description();
  public Optional<Schema> parameters();
}

Usage:

FunctionDeclaration function = FunctionDeclaration.builder()
    .name("getCurrentWeather")
    .description("Get the current weather in a location")
    .parameters(Schema.builder()
        .type(Type.Known.OBJECT)
        .properties(ImmutableMap.of(
            "location", Schema.builder()
                .type(Type.Known.STRING)
                .description("City name")
                .build(),
            "unit", Schema.builder()
                .type(Type.Known.STRING)
                .enum_(ImmutableList.of("celsius", "fahrenheit"))
                .build()
        ))
        .required(ImmutableList.of("location"))
        .build())
    .build();

FunctionCall

package com.google.genai.types;

public final class FunctionCall {
  public static Builder builder();

  public Optional<String> name();
  public Optional<JsonNode> args();
  public Optional<String> id();
}

FunctionResponse

package com.google.genai.types;

public final class FunctionResponse {
  public static Builder builder();

  public Optional<String> name();
  public Optional<JsonNode> response();
  public Optional<String> id();
}

Usage:

// Process function call from model
Part part = response.part();
part.functionCall().ifPresent(call -> {
    String functionName = call.name().orElse("");
    JsonNode args = call.args().orElse(null);

    // Execute function
    Object result = executeFunction(functionName, args);

    // Create response
    FunctionResponse functionResponse = FunctionResponse.builder()
        .name(functionName)
        .response(objectMapper.valueToTree(result))
        .id(call.id().orElse(null))
        .build();

    // Send back to model
    Content responseContent = Content.fromParts(
        Part.fromFunctionResponse(functionResponse)
    );
});

Constant Types

FinishReason

package com.google.genai.types;

public final class FinishReason {
  public static final class Known {
    public static final String FINISH_REASON_UNSPECIFIED = "FINISH_REASON_UNSPECIFIED";
    public static final String STOP = "STOP";
    public static final String MAX_TOKENS = "MAX_TOKENS";
    public static final String SAFETY = "SAFETY";
    public static final String RECITATION = "RECITATION";
    public static final String OTHER = "OTHER";
    public static final String BLOCKLIST = "BLOCKLIST";
    public static final String PROHIBITED_CONTENT = "PROHIBITED_CONTENT";
    public static final String SPII = "SPII";
    public static final String MALFORMED_FUNCTION_CALL = "MALFORMED_FUNCTION_CALL";
  }
}

BlockedReason

package com.google.genai.types;

public final class BlockedReason {
  public static final class Known {
    public static final String BLOCKED_REASON_UNSPECIFIED = "BLOCKED_REASON_UNSPECIFIED";
    public static final String SAFETY = "SAFETY";
    public static final String OTHER = "OTHER";
    public static final String BLOCKLIST = "BLOCKLIST";
    public static final String PROHIBITED_CONTENT = "PROHIBITED_CONTENT";
  }
}

FunctionCallingMode

package com.google.genai.types;

public final class FunctionCallingMode {
  public static final class Known {
    public static final String MODE_UNSPECIFIED = "MODE_UNSPECIFIED";
    public static final String AUTO = "AUTO";
    public static final String ANY = "ANY";
    public static final String NONE = "NONE";
  }
}

HTTP Types

HttpOptions

package com.google.genai.types;

public final class HttpOptions {
  public static Builder builder();

  public Optional<String> baseUrl();
  public Optional<String> apiVersion();
  public Optional<Integer> timeout();
  public Optional<Map<String, String>> headers();
  public Optional<JsonNode> extraBody();
  public Optional<JsonNode> extraQuery();
  public Optional<HttpRetryOptions> retryOptions();
}

HttpResponse

package com.google.genai.types;

public final class HttpResponse {
  public static Builder builder();

  public Optional<Map<String, String>> headers();
  public Optional<String> body();
}

Pagination Types

Pager

package com.google.genai;

public final class Pager<T> implements Iterable<T> {
  public ImmutableList<T> page();
  public ImmutableList<T> nextPage();
  public Iterator<T> iterator();
  public String name();
  public int pageSize();
  public int size();
  public Optional<HttpResponse> sdkHttpResponse();
}

AsyncPager

package com.google.genai;

public final class AsyncPager<T> {
  public CompletableFuture<ImmutableList<T>> page();
  public CompletableFuture<ImmutableList<T>> nextPage();
  public CompletableFuture<Void> forEach(Consumer<? super T> itemAction);
  public CompletableFuture<String> name();
  public CompletableFuture<Integer> pageSize();
  public CompletableFuture<Integer> size();
  public CompletableFuture<Optional<HttpResponse>> sdkHttpResponse();
}

Builder Pattern

All configuration and data types use the builder pattern:

// Create builder
Content.Builder builder = Content.builder();

// Set fields
builder.parts(ImmutableList.of(Part.fromText("Hello")));
builder.role("user");

// Build immutable instance
Content content = builder.build();

// Modify existing instance
Content modified = content.toBuilder()
    .role("model")
    .build();

Optional Usage

Most fields use Optional<T>:

Content content = getContent();

// Check if present
if (content.role().isPresent()) {
    String role = content.role().get();
}

// Or use orElse
String role = content.role().orElse("user");

// Or use ifPresent
content.role().ifPresent(r -> {
    System.out.println("Role: " + r);
});

// Or use map
String upperRole = content.role()
    .map(String::toUpperCase)
    .orElse("UNKNOWN");

Immutability

All types are immutable after creation:

Content content = Content.builder()
    .role("user")
    .build();

// Cannot modify - need to create new instance
Content newContent = content.toBuilder()
    .role("model")
    .build();

Install with Tessl CLI

npx tessl i tessl/maven-com-google-genai--google-genai

docs

batch-operations.md

caching.md

chat-sessions.md

client-configuration.md

content-generation.md

embeddings-tokens.md

error-handling.md

file-search-stores.md

files-management.md

image-operations.md

index.md

live-sessions.md

model-tuning.md

operations.md

tools-functions.md

types-reference.md

video-generation.md

tile.json