code: private PubsubFuture<List<String>> publish0(final List<Message> messages, final String canonicalTopic) {
      final String path = canonicalTopic + ":publish";
      for (final Message message : messages) {
        if (!isEncoded(message)) {
          throw new IllegalArgumentException("Message data must be Base64 encoded: " + message);
        }
      }
      return post("publish", path, PublishRequest.of(messages), readJson(PublishResponse.class)
          .andThen(PublishResponse::messageIds));
    }
docs: Publish a batch of messages.
  
  @param messages       The batch of messages.
  @param canonicalTopic The canonical topic to publish on.
  @return a future that is completed with a list of message ID's for the published messages.