**Requires [authorization](https://developers.google.com/glass/v1/reference/contacts/update#auth)**

Updates a contact in place.
[See an example](https://developers.google.com/glass/v1/reference/contacts/update#examples).

## Request

### HTTP request

```
PUT https://www.googleapis.com/mirror/v1/contacts/id
```

### Parameters

| Parameter name | Value | Description |
|---|---|---|
| **Path parameters** |||
| `id` | `string` | The ID of the contact. |

### Authorization

This request requires authorization with the following scope ([read more about authentication and authorization](https://developers.google.com/glass/authorization)).

| Scope |
|---|
| `https://www.googleapis.com/auth/glass.timeline` |

### Request body

In the request body, supply a [Contacts resource](https://developers.google.com/glass/v1/reference/contacts#resource) with the following properties:

| Property name | Value | Description | Notes |
|---|---|---|---|
| **Required Properties** ||||
| `acceptCommands[].type` | `string` | The type of operation this command corresponds to. Allowed values are: - `TAKE_A_NOTE` - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command. - `POST_AN_UPDATE` - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command. | writable |
| `displayName` | `string` | The name to display for this contact. | writable |
| `id` | `string` | An ID for this contact. This is generated by the application and is treated as an opaque token. | writable |
| `imageUrls[]` | `list` | Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client. | writable |
| **Optional Properties** ||||
| `acceptCommands[]` | `list` | A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest `priority` are shown for that particular command. | writable |
| `acceptTypes[]` | `list` | A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items. | writable |
| `phoneNumber` | `string` | Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number. | writable |
| `priority` | `unsigned integer` | Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities. | writable |
| `speakableName` | `string` | Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic. | writable |
| `type` | `string` | The type for this contact. This is used for sorting in UIs. Allowed values are: - `INDIVIDUAL` - Represents a single person. This is the default. - `GROUP` - Represents more than a single person. | writable |

## Response

If successful, this method returns a [Contacts resource](https://developers.google.com/glass/v1/reference/contacts#resource) in the response body.

## Examples

**Note:** The code examples available for this method do not represent all supported programming languages (see the [client libraries page](https://developers.google.com/glass/tools-downloads/client-libraries) for a list of supported languages).

### Java

Uses the [Java client library](https://developers.google.com/glass/tools-downloads/client-libraries).

```java
import com.google.api.services.mirror.Mirror;
import com.google.api.services.mirror.model.Contact;

import java.io.IOException;

public class MyClass {
  // ...

  /**
   * Rename an existing contact for the current user.
   * 
   * @param service Authorized Mirror service.
   * @param contactId ID of the contact to rename.
   * @param newDisplayName New displayName for the contact.
   * @return Patched contact on success, {@code null} otherwise.
   */
  public static Contact renameContact(Mirror service, String contactId, String newDisplayName) {
    try {
      // Get the latest version of the contact from the API.
      Contact contact = service.contacts().get(contactId).execute();

      contact.setDisplayName(newDisplayName);
      // Send an update request to the API.
      return service. contacts().update(contactId, contact).execute();
    } catch (IOException e) {
      System.err.println("An error occurred: " + e);
      return null;
    }
  }

  // ...
}
```

### .NET

Uses the [.NET client library](https://developers.google.com/glass/tools-downloads/client-libraries).

```
using System;

using Google.Apis.Mirror.v1;
using Google.Apis.Mirror.v1.Data;

public class MyClass {
  // ...

  /// <summary>
  /// Rename an existing contact for the current user.
  /// </summary>
  /// <param name='service'>Authorized Mirror service.</param>
  /// <param name='contactId'>ID of the contact to rename.</param>
  /// <param name='newDisplayName'>
  /// New displayName for the contact.
  /// </param>
  /// <returns>
  /// Updated contact on success, null otherwise.
  /// </returns>
  public static Contact RRenameContact(MirrorService service,
      String contactId, String newDisplayName) {
    try {
      Contact contact = service.Contacts.Get(contactId).Fetch();
      contact.DisplayName = newDisplayName;
      return service.Contacts.Update(contact, contactId).Fetch();
    } catch (Exception e) {
      Console.WriteLine("An error occurred: " + e.Message);
      return null;
    }
  }

  // ...
}
```

### PHP

Uses the [PHP client library](https://developers.google.com/glass/tools-downloads/client-libraries).

```php
/**
 * Rename an existing contact for the current user.
 *
 * @param Google_MirrorService $service Authorized Mirror service.
 * @param string $contactId ID of the contact to rename.
 * @param string $newDisplayName New displayName for the contact.
 * @return Google_Contact Updated contact on success, null otherwise.
 */
function renameContact($service, $contactId, $newDisplayName) {
  try {
    $updatedContact = $service->contacts->get($contactId);
    $updatedContact->setDisplayName($newDisplayName);
    return $service->contacts->update($contactId, $updatedContact);
  } catch (Exception $e) {
    print 'An error occurred: ' . $e->getMessage();
    return null;
  }
}
```

### Python

Uses the [Python client library](https://developers.google.com/glass/tools-downloads/client-libraries).

```python
from apiclient import errors
# ...

def rename_contact(service, contact_id, new_display_name):
  """Rename an existing contact for the current user.

  Args:
    service: Authorized Mirror service.
    contact_id: ID of the contact to rename.
    new_display_name: New displayName for the contact.

  Returns:
    return Patched contact on success, None otherwise.
  """
  try:
    # Get the latest version of the contact from the API.
    contact = service.contacts().get(contact_id).execute()

    contact['displayName'] = new_display_name
    return service. contacts().update(
        id=contact_id, body=contact).execute()
  except errors.HttpError, e:
    print 'An error occurred: %s' % error
    return None
```

### Ruby

Uses the [Ruby client library](https://developers.google.com/glass/tools-downloads/client-libraries).

```ruby
##
# Rename an existing contact for the current user.
#
# @param [Google::APIClient] client
#   Authorized client instance.
# @param [String] contact_id
#   ID of the contact to rename.
# @param [String] new_display_name
#   New displayName for the contact.
# @return [Google::APIClient::Schema::Mirror::V1::Contact]
#   Updated contact on success, nil otherwise.
def rename_contact(client, contact_id, new_display_name)
  mirror = client.discovered_api('mirror', 'v1')
  # Get the latest version of the contact from the API.
  result = client.execute(
    :api_method => mirror.contacts.get,
    :parameters => { 'id' => contact_id })
  if result.success?
    contact = result.data
    contact.display_name = new_display_name
    result = client.execute(
      :api_method => mirror.contacts.update,
      :parameters => { 'id' => contact_id },
      :body_object => contact)
    if result.success?
      return result.data
    end
  end
  puts "An error occurred: #{result.data['error']['message']}"
end
```

### Go

Uses the [Go client library](https://developers.google.com/glass/tools-downloads/client-libraries).

```go
import (
        "code.google.com/p/google-api-go-client/mirror/v1"
        "fmt"
)

// RenameContact renames an existing contact for the current user.
func RenameContact(g *mirror.Service, contactId string,
        newDisplayName string) (*mirror.Contact, error) {
        s, err := g. Contacts.Get(contactId).Do()
        if err != nil {
                fmt.Printf("An error occurred: %v\n", err)
                return nil, err
        }
        s.DisplayName = newDisplayName
        r, err := g.Contacts.Patch(contactId, s).Do()
        if err != nil {
                fmt.Printf("An error occurred: %v\n", err)
                return nil, err
        }
        return r, nil
}
```

### Raw HTTP

Does not use a client library.

```
PUT /mirror/v1/contacts/harold HTTP/1.1
Authorization: Bearer auth token
Content-Type: application/json
Content-Length: length

{
  "displayName": "Harold Penguin",
  "imageUrls": ["https://developers.google.com/glass/images/harold.jpg"]
}
```