or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

configuration.mdexceptions.mdindex.mdmessage-handling.mdpublisher.mdschedulers.mdschema-service.mdsubscriber.mdtypes.md

types.mddocs/

0

# Types

1

2

Google Cloud Pub/Sub provides a comprehensive set of protobuf message types for all API operations. These types define the structure for topics, subscriptions, messages, requests, responses, and configuration objects.

3

4

## Capabilities

5

6

### Core Message Types

7

8

Fundamental types for Pub/Sub messaging operations.

9

10

```python { .api }

11

class PubsubMessage:

12

"""

13

A message published to or received from Pub/Sub.

14

15

Attributes:

16

- data: Message payload as bytes

17

- attributes: Key-value pairs for message metadata

18

- message_id: Server-assigned message ID

19

- publish_time: Time when message was published

20

- ordering_key: Optional key for message ordering

21

"""

22

23

data: bytes

24

attributes: MutableMapping[str, str]

25

message_id: str

26

publish_time: Timestamp

27

ordering_key: str

28

29

class ReceivedMessage:

30

"""

31

Message received from a pull operation.

32

33

Attributes:

34

- ack_id: Acknowledgment ID for the message

35

- message: The actual Pub/Sub message

36

- delivery_attempt: Number of delivery attempts

37

"""

38

39

ack_id: str

40

message: PubsubMessage

41

delivery_attempt: int

42

```

43

44

### Resource Types

45

46

Types representing Pub/Sub resources like topics and subscriptions.

47

48

```python { .api }

49

class Topic:

50

"""

51

A Pub/Sub topic resource.

52

53

Attributes:

54

- name: Topic resource name

55

- labels: User-defined labels

56

- message_storage_policy: Message storage policy

57

- kms_key_name: KMS key for encryption

58

- schema_settings: Schema validation settings

59

- satisfies_pzs: Whether topic satisfies PZS

60

- message_retention_duration: Message retention duration

61

"""

62

63

name: str

64

labels: MutableMapping[str, str]

65

message_storage_policy: MessageStoragePolicy

66

kms_key_name: str

67

schema_settings: SchemaSettings

68

satisfies_pzs: bool

69

message_retention_duration: Duration

70

71

class Subscription:

72

"""

73

A Pub/Sub subscription resource.

74

75

Attributes:

76

- name: Subscription resource name

77

- topic: Topic name this subscription receives messages from

78

- push_config: Push delivery configuration

79

- bigquery_config: BigQuery delivery configuration

80

- cloud_storage_config: Cloud Storage delivery configuration

81

- ack_deadline_seconds: Message acknowledgment deadline

82

- retain_acked_messages: Whether to retain acknowledged messages

83

- message_retention_duration: How long to retain messages

84

- labels: User-defined labels

85

- enable_message_ordering: Whether to enable message ordering

86

- expiration_policy: Subscription expiration policy

87

- filter: Message filter expression

88

- dead_letter_policy: Dead letter queue policy

89

- retry_policy: Message retry policy

90

- detached: Whether subscription is detached from topic

91

- enable_exactly_once_delivery: Whether to enable exactly-once delivery

92

- topic_message_retention_duration: Topic's message retention duration

93

- state: Current subscription state

94

"""

95

96

name: str

97

topic: str

98

push_config: PushConfig

99

bigquery_config: BigQueryConfig

100

cloud_storage_config: CloudStorageConfig

101

ack_deadline_seconds: int

102

retain_acked_messages: bool

103

message_retention_duration: Duration

104

labels: MutableMapping[str, str]

105

enable_message_ordering: bool

106

expiration_policy: ExpirationPolicy

107

filter: str

108

dead_letter_policy: DeadLetterPolicy

109

retry_policy: RetryPolicy

110

detached: bool

111

enable_exactly_once_delivery: bool

112

topic_message_retention_duration: Duration

113

state: Subscription.State

114

115

class Snapshot:

116

"""

117

A Pub/Sub snapshot resource.

118

119

Attributes:

120

- name: Snapshot resource name

121

- topic: Topic name the snapshot was created from

122

- expire_time: When the snapshot expires

123

- labels: User-defined labels

124

"""

125

126

name: str

127

topic: str

128

expire_time: Timestamp

129

labels: MutableMapping[str, str]

130

```

131

132

### Request and Response Types

133

134

Types for API requests and responses.

135

136

```python { .api }

137

class PublishRequest:

138

"""

139

Request to publish messages to a topic.

140

141

Attributes:

142

- topic: Topic name to publish to

143

- messages: Messages to publish

144

"""

145

146

topic: str

147

messages: Sequence[PubsubMessage]

148

149

class PublishResponse:

150

"""

151

Response from publish operation.

152

153

Attributes:

154

- message_ids: IDs of published messages

155

"""

156

157

message_ids: Sequence[str]

158

159

class PullRequest:

160

"""

161

Request to pull messages from subscription.

162

163

Attributes:

164

- subscription: Subscription name to pull from

165

- return_immediately: Whether to return immediately if no messages

166

- max_messages: Maximum number of messages to return

167

"""

168

169

subscription: str

170

return_immediately: bool

171

max_messages: int

172

173

class PullResponse:

174

"""

175

Response from pull operation.

176

177

Attributes:

178

- received_messages: Messages received from subscription

179

"""

180

181

received_messages: Sequence[ReceivedMessage]

182

183

class StreamingPullRequest:

184

"""

185

Request for streaming pull operation.

186

187

Attributes:

188

- subscription: Subscription name

189

- ack_ids: Message IDs to acknowledge

190

- modify_deadline_seconds: Deadline modifications

191

- modify_deadline_ack_ids: Message IDs for deadline modification

192

- stream_ack_deadline_seconds: Stream acknowledgment deadline

193

- client_id: Client identifier

194

- max_extension_period: Maximum lease extension period

195

"""

196

197

subscription: str

198

ack_ids: Sequence[str]

199

modify_deadline_seconds: Sequence[int]

200

modify_deadline_ack_ids: Sequence[str]

201

stream_ack_deadline_seconds: int

202

client_id: str

203

max_extension_period: Duration

204

205

class StreamingPullResponse:

206

"""

207

Response from streaming pull operation.

208

209

Attributes:

210

- received_messages: Messages received

211

- acknowledge_confirmation: Acknowledgment confirmations

212

- modify_ack_deadline_confirmation: Deadline modification confirmations

213

- subscription_properties: Subscription properties

214

"""

215

216

received_messages: Sequence[ReceivedMessage]

217

acknowledge_confirmation: AcknowledgeConfirmation

218

modify_ack_deadline_confirmation: ModifyAckDeadlineConfirmation

219

subscription_properties: StreamingPullResponse.SubscriptionProperties

220

```

221

222

### Configuration Types

223

224

Types for configuring Pub/Sub behavior.

225

226

```python { .api }

227

class PushConfig:

228

"""

229

Configuration for push delivery to HTTP endpoints.

230

231

Attributes:

232

- push_endpoint: URL to push messages to

233

- attributes: Endpoint configuration attributes

234

- oidc_token: OIDC token configuration

235

- pubsub_wrapper: Pub/Sub wrapper format

236

- no_wrapper: No wrapper configuration

237

"""

238

239

push_endpoint: str

240

attributes: MutableMapping[str, str]

241

oidc_token: PushConfig.OidcToken

242

pubsub_wrapper: PushConfig.PubsubWrapper

243

no_wrapper: PushConfig.NoWrapper

244

245

class BigQueryConfig:

246

"""

247

Configuration for BigQuery delivery.

248

249

Attributes:

250

- table: BigQuery table name

251

- use_topic_schema: Whether to use topic schema

252

- write_metadata: Whether to write metadata

253

- drop_unknown_fields: Whether to drop unknown fields

254

- state: Current configuration state

255

- use_table_schema: Whether to use table schema

256

- service_account_email: Service account for BigQuery access

257

"""

258

259

table: str

260

use_topic_schema: bool

261

write_metadata: bool

262

drop_unknown_fields: bool

263

state: BigQueryConfig.State

264

use_table_schema: bool

265

service_account_email: str

266

267

class CloudStorageConfig:

268

"""

269

Configuration for Cloud Storage delivery.

270

271

Attributes:

272

- bucket: Cloud Storage bucket name

273

- filename_prefix: Prefix for generated filenames

274

- filename_suffix: Suffix for generated filenames

275

- filename_datetime_format: Datetime format for filenames

276

- text_config: Text format configuration

277

- avro_config: Avro format configuration

278

- max_duration: Maximum duration before file write

279

- max_bytes: Maximum bytes before file write

280

- max_messages: Maximum messages before file write

281

- state: Current configuration state

282

- service_account_email: Service account for Cloud Storage access

283

"""

284

285

bucket: str

286

filename_prefix: str

287

filename_suffix: str

288

filename_datetime_format: str

289

text_config: CloudStorageConfig.TextConfig

290

avro_config: CloudStorageConfig.AvroConfig

291

max_duration: Duration

292

max_bytes: int

293

max_messages: int

294

state: CloudStorageConfig.State

295

service_account_email: str

296

297

class DeadLetterPolicy:

298

"""

299

Dead letter queue policy for failed messages.

300

301

Attributes:

302

- dead_letter_topic: Topic to send failed messages to

303

- max_delivery_attempts: Maximum delivery attempts before dead lettering

304

"""

305

306

dead_letter_topic: str

307

max_delivery_attempts: int

308

309

class RetryPolicy:

310

"""

311

Retry policy for message delivery.

312

313

Attributes:

314

- minimum_backoff: Minimum backoff duration

315

- maximum_backoff: Maximum backoff duration

316

"""

317

318

minimum_backoff: Duration

319

maximum_backoff: Duration

320

321

class ExpirationPolicy:

322

"""

323

Subscription expiration policy.

324

325

Attributes:

326

- ttl: Time-to-live for subscription

327

"""

328

329

ttl: Duration

330

331

class MessageStoragePolicy:

332

"""

333

Policy for message storage location.

334

335

Attributes:

336

- allowed_persistence_regions: Allowed storage regions

337

- enforce_in_transit: Whether to enforce in-transit requirements

338

"""

339

340

allowed_persistence_regions: Sequence[str]

341

enforce_in_transit: bool

342

343

class SchemaSettings:

344

"""

345

Schema validation settings.

346

347

Attributes:

348

- schema: Schema resource name

349

- encoding: Message encoding (JSON or BINARY)

350

- first_revision_id: First revision ID to validate against

351

- last_revision_id: Last revision ID to validate against

352

"""

353

354

schema: str

355

encoding: Encoding

356

first_revision_id: str

357

last_revision_id: str

358

```

359

360

### List Operation Types

361

362

Types for listing resources and their responses.

363

364

```python { .api }

365

class ListTopicsRequest:

366

"""

367

Request to list topics.

368

369

Attributes:

370

- project: Project to list topics from

371

- page_size: Maximum number of topics to return

372

- page_token: Token for pagination

373

"""

374

375

project: str

376

page_size: int

377

page_token: str

378

379

class ListTopicsResponse:

380

"""

381

Response from list topics operation.

382

383

Attributes:

384

- topics: Topics in the project

385

- next_page_token: Token for next page

386

"""

387

388

topics: Sequence[Topic]

389

next_page_token: str

390

391

class ListSubscriptionsRequest:

392

"""

393

Request to list subscriptions.

394

395

Attributes:

396

- project: Project to list subscriptions from

397

- page_size: Maximum number of subscriptions to return

398

- page_token: Token for pagination

399

"""

400

401

project: str

402

page_size: int

403

page_token: str

404

405

class ListSubscriptionsResponse:

406

"""

407

Response from list subscriptions operation.

408

409

Attributes:

410

- subscriptions: Subscriptions in the project

411

- next_page_token: Token for next page

412

"""

413

414

subscriptions: Sequence[Subscription]

415

next_page_token: str

416

417

class ListSnapshotsRequest:

418

"""

419

Request to list snapshots.

420

421

Attributes:

422

- project: Project to list snapshots from

423

- page_size: Maximum number of snapshots to return

424

- page_token: Token for pagination

425

"""

426

427

project: str

428

page_size: int

429

page_token: str

430

431

class ListSnapshotsResponse:

432

"""

433

Response from list snapshots operation.

434

435

Attributes:

436

- snapshots: Snapshots in the project

437

- next_page_token: Token for next page

438

"""

439

440

snapshots: Sequence[Snapshot]

441

next_page_token: str

442

```

443

444

### Management Operation Types

445

446

Types for creating, updating, and deleting resources.

447

448

```python { .api }

449

class CreateTopicRequest:

450

"""

451

Request to create a topic.

452

453

Attributes:

454

- name: Topic name

455

- topic: Topic configuration

456

"""

457

458

name: str

459

topic: Topic

460

461

class UpdateTopicRequest:

462

"""

463

Request to update a topic.

464

465

Attributes:

466

- topic: Updated topic configuration

467

- update_mask: Fields to update

468

"""

469

470

topic: Topic

471

update_mask: FieldMask

472

473

class DeleteTopicRequest:

474

"""

475

Request to delete a topic.

476

477

Attributes:

478

- topic: Topic name to delete

479

"""

480

481

topic: str

482

483

class CreateSubscriptionRequest:

484

"""

485

Request to create a subscription.

486

487

Attributes:

488

- name: Subscription name

489

- subscription: Subscription configuration

490

"""

491

492

name: str

493

subscription: Subscription

494

495

class UpdateSubscriptionRequest:

496

"""

497

Request to update a subscription.

498

499

Attributes:

500

- subscription: Updated subscription configuration

501

- update_mask: Fields to update

502

"""

503

504

subscription: Subscription

505

update_mask: FieldMask

506

507

class DeleteSubscriptionRequest:

508

"""

509

Request to delete a subscription.

510

511

Attributes:

512

- subscription: Subscription name to delete

513

"""

514

515

subscription: str

516

517

class DetachSubscriptionRequest:

518

"""

519

Request to detach a subscription from its topic.

520

521

Attributes:

522

- subscription: Subscription name to detach

523

"""

524

525

subscription: str

526

527

class DetachSubscriptionResponse:

528

"""

529

Response from detach subscription operation.

530

"""

531

pass

532

```

533

534

### Schema Types

535

536

Types for schema service operations.

537

538

```python { .api }

539

class Schema:

540

"""

541

A schema resource for message validation.

542

543

Attributes:

544

- name: Schema resource name

545

- type: Schema type (AVRO or PROTOCOL_BUFFER)

546

- definition: Schema definition string

547

- revision_id: Current revision ID

548

- revision_create_time: When revision was created

549

"""

550

551

name: str

552

type: Schema.Type

553

definition: str

554

revision_id: str

555

revision_create_time: Timestamp

556

557

class CreateSchemaRequest:

558

"""

559

Request to create a schema.

560

561

Attributes:

562

- parent: Parent project path

563

- schema: Schema definition

564

- schema_id: ID for the new schema

565

"""

566

567

parent: str

568

schema: Schema

569

schema_id: str

570

571

class ValidateSchemaRequest:

572

"""

573

Request to validate a schema.

574

575

Attributes:

576

- parent: Parent project path

577

- schema: Schema to validate

578

"""

579

580

parent: str

581

schema: Schema

582

583

class ValidateSchemaResponse:

584

"""

585

Response from schema validation.

586

"""

587

pass

588

589

class ValidateMessageRequest:

590

"""

591

Request to validate a message against a schema.

592

593

Attributes:

594

- parent: Parent project path

595

- name: Schema name (alternative to schema)

596

- schema: Schema definition (alternative to name)

597

- message: Message to validate

598

- encoding: Message encoding

599

"""

600

601

parent: str

602

name: str

603

schema: Schema

604

message: bytes

605

encoding: Encoding

606

607

class ValidateMessageResponse:

608

"""

609

Response from message validation.

610

"""

611

pass

612

```

613

614

### Acknowledgment and Response Types

615

616

Types for acknowledgment operations and their responses.

617

618

```python { .api }

619

class AcknowledgeRequest:

620

"""

621

Request for acknowledging messages.

622

623

Attributes:

624

- subscription: Subscription name

625

- ack_ids: List of acknowledgment IDs to acknowledge

626

"""

627

628

subscription: str

629

ack_ids: Sequence[str]

630

631

class ModifyAckDeadlineRequest:

632

"""

633

Request for modifying acknowledgment deadlines.

634

635

Attributes:

636

- subscription: Subscription name

637

- ack_ids: List of acknowledgment IDs to modify

638

- ack_deadline_seconds: New acknowledgment deadline in seconds

639

"""

640

641

subscription: str

642

ack_ids: Sequence[str]

643

ack_deadline_seconds: int

644

645

class AcknowledgeConfirmation:

646

"""

647

Confirmation response for acknowledgment operations.

648

649

Attributes:

650

- ack_ids: List of acknowledged message IDs

651

- temporary_failure_ack_ids: List of temporarily failed acknowledgments

652

- unknown_ack_ids: List of unknown acknowledgment IDs

653

"""

654

655

ack_ids: Sequence[str]

656

temporary_failure_ack_ids: Sequence[str]

657

unknown_ack_ids: Sequence[str]

658

659

class ModifyAckDeadlineConfirmation:

660

"""

661

Confirmation response for deadline modification operations.

662

663

Attributes:

664

- ack_ids: List of successfully modified acknowledgment IDs

665

- temporary_failure_ack_ids: List of temporarily failed modifications

666

- unknown_ack_ids: List of unknown acknowledgment IDs

667

"""

668

669

ack_ids: Sequence[str]

670

temporary_failure_ack_ids: Sequence[str]

671

unknown_ack_ids: Sequence[str]

672

```

673

674

### Seek Operation Types

675

676

Types for seeking subscriptions to specific points in time.

677

678

```python { .api }

679

class SeekRequest:

680

"""

681

Request to seek a subscription.

682

683

Attributes:

684

- subscription: Subscription name to seek

685

- time: Seek to a specific timestamp

686

- snapshot: Seek to a specific snapshot

687

"""

688

689

subscription: str

690

time: Timestamp

691

snapshot: str

692

693

class SeekResponse:

694

"""

695

Response from seek operation.

696

"""

697

pass

698

```

699

700

### Additional Request Types

701

702

Supplementary request types for various operations.

703

704

```python { .api }

705

class GetTopicRequest:

706

"""

707

Request to get a topic.

708

709

Attributes:

710

- topic: Topic name to retrieve

711

"""

712

713

topic: str

714

715

class GetSubscriptionRequest:

716

"""

717

Request to get a subscription.

718

719

Attributes:

720

- subscription: Subscription name to retrieve

721

"""

722

723

subscription: str

724

725

class GetSnapshotRequest:

726

"""

727

Request to get a snapshot.

728

729

Attributes:

730

- snapshot: Snapshot name to retrieve

731

"""

732

733

snapshot: str

734

735

class ListTopicSubscriptionsRequest:

736

"""

737

Request to list subscriptions for a topic.

738

739

Attributes:

740

- topic: Topic name

741

- page_size: Maximum number of subscriptions to return

742

- page_token: Token for pagination

743

"""

744

745

topic: str

746

page_size: int

747

page_token: str

748

749

class ListTopicSubscriptionsResponse:

750

"""

751

Response from listing topic subscriptions.

752

753

Attributes:

754

- subscriptions: List of subscription names

755

- next_page_token: Token for next page

756

"""

757

758

subscriptions: Sequence[str]

759

next_page_token: str

760

761

class ListTopicSnapshotsRequest:

762

"""

763

Request to list snapshots for a topic.

764

765

Attributes:

766

- topic: Topic name

767

- page_size: Maximum number of snapshots to return

768

- page_token: Token for pagination

769

"""

770

771

topic: str

772

page_size: int

773

page_token: str

774

775

class ListTopicSnapshotsResponse:

776

"""

777

Response from listing topic snapshots.

778

779

Attributes:

780

- snapshots: List of snapshot names

781

- next_page_token: Token for next page

782

"""

783

784

snapshots: Sequence[str]

785

next_page_token: str

786

787

class CreateSnapshotRequest:

788

"""

789

Request to create a snapshot.

790

791

Attributes:

792

- name: Snapshot name

793

- subscription: Subscription to create snapshot from

794

- labels: User-defined labels

795

"""

796

797

name: str

798

subscription: str

799

labels: MutableMapping[str, str]

800

801

class UpdateSnapshotRequest:

802

"""

803

Request to update a snapshot.

804

805

Attributes:

806

- snapshot: Updated snapshot configuration

807

- update_mask: Fields to update

808

"""

809

810

snapshot: Snapshot

811

update_mask: FieldMask

812

```

813

814

### Field Mask and Common Types

815

816

Types for field masks and common protobuf types.

817

818

```python { .api }

819

class FieldMask:

820

"""

821

Field mask for specifying which fields to update.

822

823

Attributes:

824

- paths: List of field paths to update

825

"""

826

827

paths: Sequence[str]

828

829

class Timestamp:

830

"""

831

Protobuf timestamp representation.

832

833

Attributes:

834

- seconds: Seconds since Unix epoch

835

- nanos: Nanoseconds within the second

836

"""

837

838

seconds: int

839

nanos: int

840

841

class Duration:

842

"""

843

Protobuf duration representation.

844

845

Attributes:

846

- seconds: Duration in seconds

847

- nanos: Nanoseconds within the second

848

"""

849

850

seconds: int

851

nanos: int

852

```

853

854

### Enum Types

855

856

Enumeration types used throughout the API.

857

858

```python { .api }

859

class Encoding(Enum):

860

"""

861

Message encoding types.

862

"""

863

864

JSON = "JSON"

865

BINARY = "BINARY"

866

867

class SchemaView(Enum):

868

"""

869

Schema view types for retrieval.

870

"""

871

872

BASIC = "BASIC" # Name and type only

873

FULL = "FULL" # Complete schema definition

874

875

class Subscription.State(Enum):

876

"""

877

Subscription states.

878

"""

879

880

ACTIVE = "ACTIVE"

881

RESOURCE_ERROR = "RESOURCE_ERROR"

882

```

883

884

## Usage Examples

885

886

### Working with Message Types

887

888

```python

889

from google.cloud.pubsub_v1 import types

890

from google.protobuf.timestamp_pb2 import Timestamp

891

import time

892

893

# Create a PubsubMessage

894

message = types.PubsubMessage(

895

data=b"Hello, World!",

896

attributes={

897

"event_type": "user_action",

898

"user_id": "12345"

899

},

900

ordering_key="user-12345"

901

)

902

903

# Create a publish request

904

publish_request = types.PublishRequest(

905

topic="projects/my-project/topics/my-topic",

906

messages=[message]

907

)

908

```

909

910

### Topic and Subscription Configuration

911

912

```python

913

from google.cloud.pubsub_v1 import types

914

from google.protobuf.duration_pb2 import Duration

915

916

# Create topic with schema settings

917

schema_settings = types.SchemaSettings(

918

schema="projects/my-project/schemas/user-events",

919

encoding=types.Encoding.JSON

920

)

921

922

topic = types.Topic(

923

name="projects/my-project/topics/user-events",

924

schema_settings=schema_settings,

925

labels={"environment": "production"}

926

)

927

928

# Create subscription with dead letter policy

929

dead_letter_policy = types.DeadLetterPolicy(

930

dead_letter_topic="projects/my-project/topics/user-events-dlq",

931

max_delivery_attempts=5

932

)

933

934

retry_policy = types.RetryPolicy(

935

minimum_backoff=Duration(seconds=10),

936

maximum_backoff=Duration(seconds=300)

937

)

938

939

subscription = types.Subscription(

940

name="projects/my-project/subscriptions/user-events-sub",

941

topic="projects/my-project/topics/user-events",

942

ack_deadline_seconds=60,

943

dead_letter_policy=dead_letter_policy,

944

retry_policy=retry_policy,

945

enable_message_ordering=True,

946

enable_exactly_once_delivery=True

947

)

948

```

949

950

### Push Configuration

951

952

```python

953

# Configure push endpoint

954

push_config = types.PushConfig(

955

push_endpoint="https://my-app.example.com/webhook",

956

attributes={

957

"x-goog-version": "v1"

958

}

959

)

960

961

# Subscription with push delivery

962

push_subscription = types.Subscription(

963

name="projects/my-project/subscriptions/push-sub",

964

topic="projects/my-project/topics/my-topic",

965

push_config=push_config

966

)

967

```

968

969

### BigQuery Configuration

970

971

```python

972

# Configure BigQuery delivery

973

bigquery_config = types.BigQueryConfig(

974

table="my-dataset.my-table",

975

use_topic_schema=True,

976

write_metadata=True,

977

drop_unknown_fields=False

978

)

979

980

bq_subscription = types.Subscription(

981

name="projects/my-project/subscriptions/bq-sub",

982

topic="projects/my-project/topics/my-topic",

983

bigquery_config=bigquery_config

984

)

985

```