valley
valley

Reputation: 177

Phantom Entry created in Google Shared Contacts

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.

Upvotes: 0

Views: 138

Answers (2)

valley
valley

Reputation: 177

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

Upvotes: 1

Android Enthusiast
Android Enthusiast

Reputation: 4950

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='[email protected]' displayName='E. Bennet' />
<gd:email rel='http://schemas.google.com/g/2005#home'
address='[email protected]' />
<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='[email protected]'
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

Upvotes: 0

Related Questions