Listar assinaturas do Google Workspace

Nesta página, explicamos como listar assinaturas do Google Workspace usando o método subscriptions.list().

Quando você chama esse método com autenticação de usuário, ele retorna uma lista de assinaturas autorizadas pelo usuário. Ao usar a autenticação de app, o método pode retornar uma lista que contém qualquer assinatura do app.

Pré-requisitos

Apps Script

  • Um projeto do Apps Script:
    • Use seu projeto do Google Cloud em vez do padrão criado automaticamente pelo Apps Script.
    • Para todos os escopos adicionados ao configurar a tela de permissão OAuth, você também precisa adicionar os escopos ao arquivo appsscript.json no seu projeto do Apps Script. Por exemplo, se você especificou o escopo chat.messages, adicione o seguinte:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages"
      ]
          
    • Ative o serviço avançado do Google Workspace Events.

Python

  • Python 3.6 ou mais recente
  • A ferramenta de gerenciamento de pacotes pip
  • As bibliotecas de cliente mais recentes do Google para Python. Para instalar ou atualizar, execute o seguinte comando na interface de linha de comando:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      
  • Uma assinatura do Google Workspace. Para criar uma, consulte Criar uma assinatura.

  • Requer autenticação:

    • Para autenticação do usuário, exige um escopo que ofereça suporte a pelo menos um dos tipos de evento da assinatura. Para identificar um escopo, consulte Escopos por tipo de evento.
    • Para autenticação de apps, requer o escopo chat.bot (somente apps do Google Chat).

Listar assinaturas autorizadas por um usuário

Para listar assinaturas, é necessário filtrar por pelo menos um tipo de evento. Você também pode filtrar sua consulta por um ou mais recursos de destino. Para saber mais sobre os filtros de consulta compatíveis, consulte a documentação do método list().

O exemplo de código a seguir retorna uma matriz de objetos Subscription filtrados por tipo de evento e recurso de destino. Quando autenticado como um usuário, o método retorna apenas uma lista de assinaturas que o usuário autorizou o app a criar.

Para listar as assinaturas de um tipo de evento e um recurso de destino específicos:

Apps Script

  1. No projeto do Apps Script, crie um arquivo de script chamado listSubscriptions e adicione o seguinte código:

    function listSubscriptions() {
      // Filter for event type (required).
      const eventType = 'EVENT_TYPE';
    
      // Filter for target resource (optional).
      const targetResource = 'TARGET_RESOURCE';
    
      const filter = `event_types:"${eventType}" AND target_resource="${targetResource}"`
    
      // Call the Workspace Events API using the advanced service.
      const response = WorkspaceEvents.Subscriptions.list({ filter });
      console.log(response);
    }
    

    Substitua:

    • EVENT_TYPE: um tipo de evento formatado de acordo com a especificação do CloudEvents. Por exemplo, para filtrar as assinaturas que recebem eventos sobre novas associações a um espaço do Google Chat, google.workspace.chat.message.v1.created.
    • TARGET_RESOURCE: um recurso de destino, formatado como o nome completo do recurso. Por exemplo, para filtrar por assinaturas de um espaço do Google Chat, use //chat.googleapis.com/spaces/SPACE_ID em que spaces/SPACE_ID representa o campo name do recurso Space.
  2. Para listar as assinaturas, execute a função listSubscriptions no projeto do Apps Script.

Python

  1. No diretório de trabalho, crie um arquivo chamado list_subscriptions.py e adicione o seguinte código:

    """List subscriptions."""
    
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['SCOPE']
    
    # Authenticate with Google Workspace and get user authentication.
    flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
    CREDENTIALS = flow.run_local_server()
    
    # Call the Workspace Events API using the service endpoint.
    service = build(
        'workspaceevents',
        'v1',
        credentials=CREDENTIALS,
    )
    
    # Filter for event type (required).
    EVENT_TYPE = 'EVENT_TYPE'
    
    # Filter for target resource (optional).
    TARGET_RESOURCE = 'TARGET_RESOURCE'
    
    FILTER = f'event_types:"{EVENT_TYPE}" AND target_resource="{TARGET_RESOURCE}"'
    response = service.subscriptions().list(filter=FILTER).execute()
    print(response)
    

    Substitua:

    • SCOPE: um escopo do OAuth que aceita pelo menos um tipo de evento da assinatura. Por exemplo, se a assinatura receber eventos um espaço atualizado do Chat, https://www.googleapis.com/auth/chat.spaces.readonly.
    • EVENT_TYPE: um tipo de evento formatado de acordo com a especificação do CloudEvents. Por exemplo, para filtrar as assinaturas que recebem eventos sobre novas associações a um espaço do Google Chat, google.workspace.chat.message.v1.created.
    • TARGET_RESOURCE: um recurso de destino, formatado como o nome completo do recurso. Por exemplo, para filtrar por assinaturas de um espaço do Google Chat, use //chat.googleapis.com/spaces/SPACE_ID em que spaces/SPACE_ID representa o campo name do recurso Space.
  2. No seu diretório de trabalho, verifique se você armazenou as credenciais de ID do cliente OAuth e nomeou o arquivo como credentials.json. O exemplo de código usa esse arquivo JSON para autenticar com o Google Workspace e receber credenciais de usuário. Para instruções, consulte Criar credenciais de ID do cliente OAuth.

  3. Para listar as assinaturas, execute o seguinte no terminal:

    python3 list_subscriptions.py

A API Google Workspace Events retorna uma matriz paginada de objetos Subscription que correspondem ao filtro da sua consulta.