0

While developing and testing against the Google Contacts v3 API (scope https://www.google.com/m8/feeds/) i created an entry in our company's shared contacts list (i.e. the Directory folder) which doesn't have an id nor is it clickable ("Contact wasn't found"). Therefore i cannot delete that entry. Also it isn't listed when requesting "list contacts" (totalResults: 0).

Google for Work Support couldn't help here and advised to ask in this forum. I hope that someone knows how to get rid of that phantom entry.

valley
  • 157
  • 1
  • 13

2 Answers2

1

As expected the deletion had to be done by Google and was not possible with an additional API call from my side.

valley
  • 157
  • 1
  • 13
0

The Shared Contacts API allows client applications to retrieve and update external contacts that are shared to all users in a Google Apps domain. Shared contacts are visible to all users of an Apps domain and all Google services have access to the contact list.

Create an XML representation of the shared contact to publish. This XML needs to be in the form of an Atom element of the Contact kind, which might look like this:

<atom:entry xmlns:atom='http://www.w3.org/2005/Atom'
xmlns:gd='http://schemas.google.com/g/2005'>
<atom:category scheme='http://schemas.google.com/g/2005#kind'
term='http://schemas.google.com/contact/2008#contact' />
<gd:name>
<gd:givenName>Elizabeth</gd:givenName>
<gd:familyName>Bennet</gd:familyName>
<gd:fullName>Elizabeth Bennet</gd:fullName>
</gd:name>
<atom:content type='text'>Notes</atom:content>
<gd:email rel='http://schemas.google.com/g/2005#work'
primary='true'
address='liz@gmail.com' displayName='E. Bennet' />
<gd:email rel='http://schemas.google.com/g/2005#home'
address='liz@example.org' />
<gd:phoneNumber rel='http://schemas.google.com/g/2005#work'
primary='true'>
(206)555-1212
</gd:phoneNumber>
<gd:phoneNumber rel='http://schemas.google.com/g/2005#home'>
(206)555-1213
</gd:phoneNumber>
<gd:im address='liz@gmail.com'
protocol='http://schemas.google.com/g/2005#GOOGLE_TALK'
primary='true'
rel='http://schemas.google.com/g/2005#home' />
<gd:structuredPostalAddress
rel='http://schemas.google.com/g/2005#work'
primary='true'>
<gd:city>Mountain View</gd:city>
<gd:street>1600 Amphitheatre Pkwy</gd:street>
<gd:region>CA</gd:region>
<gd:postcode>94043</gd:postcode>
<gd:country>United States</gd:country>
<gd:formattedAddress>
1600 Amphitheatre Pkwy Mountain View
</gd:formattedAddress>
</gd:structuredPostalAddress>

</atom:entry>

https://www.google.com/m8/feeds/contacts/example.com/full

The Google server creates a contact using the entry you sent, then returns an HTTP 201 CREATED status code, along with a copy of the new contact in the form of an <entry> element.

Your client application can use the Shared Contacts API to create new shared contacts, edit or delete existing shared contacts, and query for shared contacts that match particular criteria.

To delete a contact, send an authorized DELETE request to the contact's edit URL.

The URL is of the form:

https://www.google.com/m8/feeds/contacts/{userEmail}/full/{contactId}

With the appropriate values in place of userEmail and contactID.

Note: The special userEmail value default can be used to refer to the authenticated user.

To ensure that the request sent to the API doesn't overwrite another client's changes, the contact entry's Etag should be provided in the request header.

If-Match: Etag

If the Etag is outdated, the server responds with an HTTP 412 Precondition Failed status code.

<!-- Request -->
DELETE /m8/feeds/contacts/default/full/contactId
If-match: Etag
...
<!-- Response -->
HTTP/1.1 200 OK
Android Enthusiast
  • 4,826
  • 2
  • 15
  • 30
  • Well, i know all these steps and normally they work without any problem. In that case the mentioned contact does not have an Id! It is just shown in the list of the Directory folder, but it cannot be deleted like a normal contact entry. – valley Jul 27 '16 at 14:45