List schema revisions for a topic

This document shows you how to list the revisions of a schema for Pub/Sub topics.

Before you begin

Required roles and permissions

To get the permissions that you need to list schema revisions and manage them, ask your administrator to grant you the Pub/Sub Editor ( roles/pubsub.editor ) IAM role on your project. For more information about granting roles, see Manage access to projects, folders, and organizations .

This predefined role contains the permissions required to list schema revisions and manage them. To see the exact permissions that are required, expand the Required permissionssection:

Required permissions

The following permissions are required to list schema revisions and manage them:

  • Create schema: pubsub.schemas.create
  • Attach schema to topic: pubsub.schemas.attach
  • Commit a schema revision: pubsub.schemas.commit
  • Delete a schema or a schema revision: pubsub.schemas.delete
  • Get a schema or schema revisions: pubsub.schemas.get
  • List schemas: pubsub.schemas.list
  • List schema revisions: pubsub.schemas.listRevisions
  • Rollback a schema: pubsub.schemas.rollback
  • Validate a message: pubsub.schemas.validate
  • Get the IAM policy for a schema: pubsub.schemas.getIamPolicy
  • Configure the IAM policy for a schema: pubsub.schemas.setIamPolicy

You might also be able to get these permissions with custom roles or other predefined roles .

You can grant roles and permissions to principals such as users, groups, domains, or service accounts. You can create a schema in one project and attach it to a topic located in a different project. Ensure that you have the required permissions for each project.

List the revisions of a schema

You can list the revisions of a schema in a Google Cloud project using the Google Cloud console, the gcloud CLI, the Pub/Sub API, or the Cloud Client Libraries.

Console

  1. In the Google Cloud console, go to the Pub/Sub schemaspage.

    Go to Schemas

    The list of schemas is displayed.

  2. Click the name of the schema that you want to view.

    The Schema detailspage for the schema opens.

    In the Revisionssection, you can see the list of available revisions for the schema.

gcloud

To view the latest revision for a schema:

gcloud pubsub schemas list-revisions SCHEMA_ID 

Use the gcloud pubsub schemas list-revisions <var>SCHEMA_ID</var> --view=FULL command to see the definitions for the schema revisions.

REST

To list the schemas revisions for a schema, send a GET request like the following:

GET https://pubsub.googleapis.com/v1/projects/ SCHEMA_NAME 
:listRevisions

If successful, the response body contains a JSON object containing all schema revisions for the schema .

C++

Before trying this sample, follow the C++ setup instructions in Quickstart: Using Client Libraries . For more information, see the Pub/Sub C++ API reference documentation .

  namespace 
  
 pubsub 
  
 = 
  
 :: 
 google 
 :: 
 cloud 
 :: 
 pubsub 
 ; 
 []( 
 pubsub 
 :: 
 SchemaServiceClient 
  
 client 
 , 
  
 std 
 :: 
 string 
  
 const 
&  
 project_id 
 , 
  
 std 
 :: 
 string 
  
 const 
&  
 schema_id 
 ) 
  
 { 
  
 auto 
  
 const 
  
 parent 
  
 = 
  
 pubsub 
 :: 
 Schema 
 ( 
 project_id 
 , 
  
 schema_id 
 ). 
 FullName 
 (); 
  
 for 
  
 ( 
 auto 
&  
 s 
  
 : 
  
 client 
 . 
 ListSchemaRevisions 
 ( 
 parent 
 )) 
  
 { 
  
 if 
  
 ( 
 ! 
 s 
 ) 
  
 throw 
  
 std 
 :: 
 move 
 ( 
 s 
 ). 
 status 
 (); 
  
 std 
 :: 
 cout 
 << 
 "Schema revision: " 
 << 
 s 
 - 
> DebugString 
 () 
 << 
 " 
 \n 
 " 
 ; 
  
 } 
 } 
 

Go

The following sample uses the major version of the Go Pub/Sub client library (v2). If you are still using the v1 library, see the migration guide to v2 . To see a list of v1 code samples, see the deprecated code samples .

Before trying this sample, follow the Go setup instructions in Quickstart: Using Client Libraries . For more information, see the Pub/Sub Go API reference documentation .

  import 
  
 ( 
  
 "context" 
  
 "fmt" 
  
 "io" 
  
 pubsub 
  
 "cloud.google.com/go/pubsub/v2/apiv1" 
  
 "cloud.google.com/go/pubsub/v2/apiv1/pubsubpb" 
  
 "google.golang.org/api/iterator" 
 ) 
 func 
  
 listSchemaRevisions 
 ( 
 w 
  
 io 
 . 
 Writer 
 , 
  
 projectID 
 , 
  
 schemaID 
  
 string 
 ) 
  
 ([] 
 * 
 pubsubpb 
 . 
 Schema 
 , 
  
 error 
 ) 
  
 { 
  
 // projectID := "my-project-id" 
  
 // schemaID := "my-schema-id" 
  
 ctx 
  
 := 
  
 context 
 . 
 Background 
 () 
  
 client 
 , 
  
 err 
  
 := 
  
 pubsub 
 . 
 NewSchemaClient 
 ( 
 ctx 
 ) 
  
 if 
  
 err 
  
 != 
  
 nil 
  
 { 
  
 return 
  
 nil 
 , 
  
 fmt 
 . 
 Errorf 
 ( 
 "pubsub.NewSchemaClient: %w" 
 , 
  
 err 
 ) 
  
 } 
  
 defer 
  
 client 
 . 
 Close 
 () 
  
 var 
  
 schemas 
  
 [] 
 * 
 pubsubpb 
 . 
 Schema 
  
 req 
  
 := 
  
& pubsubpb 
 . 
 ListSchemaRevisionsRequest 
 { 
  
 Name 
 : 
  
 fmt 
 . 
 Sprintf 
 ( 
 "projects/%s/schemas/%s" 
 , 
  
 projectID 
 , 
  
 schemaID 
 ), 
  
 View 
 : 
  
 pubsubpb 
 . 
 SchemaView_FULL 
 , 
  
 } 
  
 schemaIter 
  
 := 
  
 client 
 . 
 ListSchemaRevisions 
 ( 
 ctx 
 , 
  
 req 
 ) 
  
 for 
  
 { 
  
 sc 
 , 
  
 err 
  
 := 
  
 schemaIter 
 . 
 Next 
 () 
  
 if 
  
 err 
  
 == 
  
 iterator 
 . 
 Done 
  
 { 
  
 break 
  
 } 
  
 if 
  
 err 
  
 != 
  
 nil 
  
 { 
  
 return 
  
 nil 
 , 
  
 fmt 
 . 
 Errorf 
 ( 
 "schemaIter.Next: %w" 
 , 
  
 err 
 ) 
  
 } 
  
 fmt 
 . 
 Fprintf 
 ( 
 w 
 , 
  
 "Got schema revision: %#v\n" 
 , 
  
 sc 
 ) 
  
 schemas 
  
 = 
  
 append 
 ( 
 schemas 
 , 
  
 sc 
 ) 
  
 } 
  
 fmt 
 . 
 Fprintf 
 ( 
 w 
 , 
  
 "Got %d schema revisions" 
 , 
  
 len 
 ( 
 schemas 
 )) 
  
 return 
  
 schemas 
 , 
  
 nil 
 } 
 

Java

Before trying this sample, follow the Java setup instructions in Quickstart: Using Client Libraries . For more information, see the Pub/Sub Java API reference documentation .

  import 
  
 com.google.cloud.pubsub.v1. SchemaServiceClient 
 
 ; 
 import 
  
 com.google.pubsub.v1. Schema 
 
 ; 
 import 
  
 com.google.pubsub.v1. SchemaName 
 
 ; 
 import 
  
 java.io.IOException 
 ; 
 public 
  
 class 
 ListSchemaRevisionsExample 
  
 { 
  
 public 
  
 static 
  
 void 
  
 main 
 ( 
 String 
 ... 
  
 args 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 // TODO(developer): Replace these variables before running the sample. 
  
 String 
  
 projectId 
  
 = 
  
 "your-project-id" 
 ; 
  
 String 
  
 schemaId 
  
 = 
  
 "your-schema-id" 
 ; 
  
 listSchemaRevisionsExample 
 ( 
 projectId 
 , 
  
 schemaId 
 ); 
  
 } 
  
 public 
  
 static 
  
 void 
  
 listSchemaRevisionsExample 
 ( 
 String 
  
 projectId 
 , 
  
 String 
  
 schemaId 
 ) 
  
 throws 
  
 IOException 
  
 { 
  
  SchemaName 
 
  
 schemaName 
  
 = 
  
  SchemaName 
 
 . 
 of 
 ( 
 projectId 
 , 
  
 schemaId 
 ); 
  
 try 
  
 ( 
  SchemaServiceClient 
 
  
 schemaServiceClient 
  
 = 
  
  SchemaServiceClient 
 
 . 
 create 
 ()) 
  
 { 
  
 for 
  
 ( 
  Schema 
 
  
 schema 
  
 : 
  
 schemaServiceClient 
 . 
 listSchemaRevisions 
 ( 
 schemaName 
 ). 
 iterateAll 
 ()) 
  
 { 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 schema 
 ); 
  
 } 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Listed schema revisions." 
 ); 
  
 } 
  
 } 
 } 
 

Python

Before trying this sample, follow the Python setup instructions in Quickstart: Using Client Libraries . For more information, see the Pub/Sub Python API reference documentation .

  from 
  
 google.cloud.pubsub 
  
 import 
 SchemaServiceClient 
 # TODO(developer): Replace these variables before running the sample. 
 # project_id = "your-project-id" 
 # schema_id = "your-schema-id" 
 schema_client 
 = 
 SchemaServiceClient 
 () 
 schema_path 
 = 
 schema_client 
 . 
  schema_path 
 
 ( 
 project_id 
 , 
 schema_id 
 ) 
 for 
 schema 
 in 
 schema_client 
 . 
 list_schema_revisions 
 ( 
 request 
 = 
 { 
 "name" 
 : 
 schema_path 
 }): 
 print 
 ( 
 schema 
 ) 
 print 
 ( 
 "Listed schema revisions." 
 ) 
 

Node.js

Before trying this sample, follow the Node.js setup instructions in Quickstart: Using Client Libraries . For more information, see the Pub/Sub Node.js API reference documentation .

  /** 
 * 
 TODO 
 ( 
 developer 
 ): 
 Uncomment 
 this 
 variable 
 before 
 running 
 the 
 sample 
 . 
 */ 
 // 
 const 
 schemaNameOrId 
 = 
 'YOUR_SCHEMA_NAME_OR_ID' 
 ; 
 // 
 Imports 
 the 
 Google 
 Cloud 
 client 
 library 
 const 
 { 
 PubSub 
 } 
 = 
 require 
 ( 
 '@google-cloud/pubsub' 
 ); 
 // 
 Creates 
 a 
 client 
 ; 
 cache 
 this 
 for 
 further 
 use 
 const 
 pubSubClient 
 = 
 new 
 PubSub 
 (); 
 async 
 function 
 listSchemaRevisions 
 ( 
 schemaNameOrId 
 ) 
 { 
 // 
 Get 
 the 
 fully 
 qualified 
 schema 
 name 
 . 
 const 
 schema 
 = 
 pubSubClient 
 . 
 schema 
 ( 
 schemaNameOrId 
 ); 
 const 
 name 
 = 
 await 
 schema 
 . 
 getName 
 (); 
 // 
 Use 
 the 
 gapic 
 client 
 to 
 list 
 the 
 schema 
 revisions 
 . 
 const 
 schemaClient 
 = 
 await 
 pubSubClient 
 . 
 getSchemaClient 
 (); 
 const 
 [ 
 results 
 ] 
 = 
 await 
 schemaClient 
 . 
 listSchemaRevisions 
 ({ 
 name 
 , 
 }); 
 for 
 ( 
 const 
 rev 
 of 
 results 
 ) 
 { 
 console 
 . 
 log 
 ( 
 rev 
 . 
 revisionId 
 , 
 rev 
 . 
 revisionCreateTime 
 ); 
 } 
 console 
 . 
 log 
 ( 
 ` 
 Listed 
 revisions 
 of 
 schema 
 $ 
 { 
 name 
 } 
 . 
 ` 
 ); 
 } 
 

Node.js

Before trying this sample, follow the Node.js setup instructions in Quickstart: Using Client Libraries . For more information, see the Pub/Sub Node.js API reference documentation .

  /** 
 * 
 TODO 
 ( 
 developer 
 ): 
 Uncomment 
 this 
 variable 
 before 
 running 
 the 
 sample 
 . 
 */ 
 // 
 const 
 schemaNameOrId 
 = 
 'YOUR_SCHEMA_NAME_OR_ID' 
 ; 
 // 
 Imports 
 the 
 Google 
 Cloud 
 client 
 library 
 import 
  
 { 
 PubSub 
 } 
 from 
  
 '@google-cloud/pubsub' 
 ; 
 // 
 Creates 
 a 
 client 
 ; 
 cache 
 this 
 for 
 further 
 use 
 const 
 pubSubClient 
 = 
 new 
 PubSub 
 (); 
 async 
 function 
 listSchemaRevisions 
 ( 
 schemaNameOrId 
 : 
 string 
 ) 
 { 
 // 
 Get 
 the 
 fully 
 qualified 
 schema 
 name 
 . 
 const 
 schema 
 = 
 pubSubClient 
 . 
 schema 
 ( 
 schemaNameOrId 
 ); 
 const 
 name 
 = 
 await 
 schema 
 . 
 getName 
 (); 
 // 
 Use 
 the 
 gapic 
 client 
 to 
 list 
 the 
 schema 
 revisions 
 . 
 const 
 schemaClient 
 = 
 await 
 pubSubClient 
 . 
 getSchemaClient 
 (); 
 const 
 [ 
 results 
 ] 
 = 
 await 
 schemaClient 
 . 
 listSchemaRevisions 
 ({ 
 name 
 , 
 }); 
 for 
 ( 
 const 
 rev 
 of 
 results 
 ) 
 { 
 console 
 . 
 log 
 ( 
 rev 
 . 
 revisionId 
 , 
 rev 
 . 
 revisionCreateTime 
 ); 
 } 
 console 
 . 
 log 
 ( 
 ` 
 Listed 
 revisions 
 of 
 schema 
 $ 
 { 
 name 
 } 
 . 
 ` 
 ); 
 } 
 

What's next

Create a Mobile Website
View Site in Mobile | Classic
Share by: