Kay
Kay

Reputation: 1

Request email audit export fails with status 400 and "Premature end of file."

according to https://developers.google.com/admin-sdk/email-audit/#creating_a_mailbox_for_export I am trying to request the email audit export of an user in G Suite this way:

def requestAuditExport(account):
    credentials = getCredentials()
    http = credentials.authorize(httplib2.Http())
    url = 'https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/helpling.com/'+account
    status, response = http.request(url, 'POST', headers={'Content-Type': 'application/atom+xml'})
    print(status)
    print(response)

And I get the following result:

{'content-length': '22', 'expires': 'Tue, 13 Dec 2016 14:19:37 GMT', 'date': 'Tue, 13 Dec 2016 14:19:37 GMT', 'x-frame-options': 'SAMEORIGIN', 'transfer-encoding': 'chunked', 'x-xss-protection': '1; mode=block', 'content-type': 'text/html; charset=UTF-8', 'x-content-type-options': 'nosniff', '-content-encoding': 'gzip', 'server': 'GSE', 'status': '400', 'cache-control': 'private, max-age=0', 'alt-svc': 'quic=":443"; ma=2592000; v="35,34"'}

b'Premature end of file.'

I cannot see where the problem is, can someone please give me a hint?

Thanks in advance!

Kay

Upvotes: 0

Views: 212

Answers (2)

Kay
Kay

Reputation: 1

Okay, found out what was wrong and fixed it myself. Finally it looks like this:

http = getCredentials().authorize(httplib2.Http())
url = 'https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/helpling.com/'+account
headers = {'Content-Type': 'application/atom+xml'}
xml_data = """<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'> \
                <apps:property name='includeDeleted' value='true'/> \
              </atom:entry>"""
status, response = http.request(url, 'POST', headers=headers, body=xml_data)

Not sure if it was about the body or the header. It works now and I hope it will help others.

Thanks anyway.

Upvotes: 0

Android Enthusiast
Android Enthusiast

Reputation: 4950

Fix it by going intp the Admin Console, Manage API client access page under Security and add the Client ID, scope needed for the Directory API. For more information, check this document.

Upvotes: 0

Related Questions