Listar assinaturas do Google Workspace

Esta página explica como listar assinaturas do Google Workspace usando o método subscriptions.list().

Quando você chama esse método com a autenticação do usuário, ele retorna uma lista de assinaturas autorizadas pelo usuário. Quando você usa 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 que você adicionou para configurar a tela de consentimento do OAuth, também é necessário adicionar os escopos ao arquivo appsscript.json no seu projeto do Apps Script. Exemplo:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages.readonly"
      ]
          
    • Ative o serviço avançado 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 a autenticação do usuário, é necessário um escopo compatível com pelo menos um dos tipos de evento da assinatura. Para identificar um escopo, consulte Escopos por tipo de evento.
    • Para a autenticação de apps, requer o escopo chat.bot (somente apps do Google Chat).

Listar assinaturas autorizadas por um usuário

Para listar as assinaturas, é necessário filtrar pelo menos um tipo de evento. Também é possível filtrar a consulta por um ou mais recursos de segmentação. Para saber mais sobre os filtros de consulta compatíveis, consulte a documentação do método list().

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

Para listar as assinaturas de um tipo de evento e recurso de segmentação especificados:

Apps Script

  1. No projeto do Apps Script, crie um novo 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 assinaturas que recebem eventos sobre novos membros em 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 assinaturas, execute a função listSubscriptions no seu 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('client_secrets.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 oferece suporte a pelo menos um tipo de evento da assinatura. Por exemplo, se a assinatura receber eventos de um espaço do Chat atualizado, 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 assinaturas que recebem eventos sobre novos membros em 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 diretório de trabalho, verifique se você armazenou as credenciais do ID do cliente OAuth e nomeou o arquivo como client_secrets.json. O exemplo de código usa esse arquivo JSON para autenticar com o Google Workspace e receber as credenciais do usuário. Para instruções, consulte Criar credenciais de ID do cliente do OAuth.

  3. Para listar 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 consulta.