Timeline: update

Memerlukan otorisasi

Memperbarui item linimasa di tempatnya. Lihat contoh.

Metode ini mendukung URI /upload dan menerima media yang diupload dengan karakteristik berikut:

  • Ukuran file maksimum: 10 MB
  • Jenis MIME Media yang Diterima: audio/* , image/* , video/*

Permintaan

Permintaan HTTP

Metode ini menyediakan fungsi upload media melalui dua URI terpisah. Untuk mengetahui detail selengkapnya, lihat dokumen tentang upload media.

  • URI upload, untuk permintaan upload media:
    PUT https://www.googleapis.com/upload/mirror/v1/timeline/id
  • URI Metadata, untuk permintaan khusus metadata:
    PUT https://www.googleapis.com/mirror/v1/timeline/id

Parameter

Nama parameter Nilai Deskripsi
Parameter jalur
id string ID item linimasa.
Parameter kueri yang diperlukan
uploadType string Jenis permintaan upload ke URI /upload. Nilai yang dapat diterima adalah:
  • media - Upload sederhana. Upload media saja, tanpa metadata apa pun.
  • multipart - Upload multibagian. Mengupload media dan metadatanya, dalam satu permintaan.
  • resumable - Upload yang dapat dilanjutkan. Upload file dengan cara yang dapat dilanjutkan, menggunakan serangkaian setidaknya dua permintaan saat permintaan pertama menyertakan metadata.

Otorisasi

Permintaan ini memerlukan otorisasi dengan setidaknya satu cakupan berikut (baca selengkapnya tentang autentikasi dan otorisasi).

Cakupan
https://www.googleapis.com/auth/glass.timeline
https://www.googleapis.com/auth/glass.location

Isi permintaan

Dalam isi permintaan, sediakan resource Linimasa dengan properti berikut sebagai metadata. Untuk mengetahui informasi selengkapnya, lihat dokumen tentang upload media.

Nama properti Nilai Deskripsi Catatan
Properti Opsional
bundleId string ID paket untuk item ini. Layanan dapat menentukan bundleId untuk mengelompokkan banyak item sekaligus. Item-item tersebut muncul pada satu item tingkat atas di perangkat. dapat ditulis
canonicalUrl string URL kanonis yang mengarah ke versi kanonis/kualitas data data yang diwakili oleh item linimasa. dapat ditulis
creator nested object Pengguna atau grup yang membuat item ini. dapat ditulis
displayTime datetime Waktu yang akan ditampilkan saat item ini dilihat di linimasa, diformat sesuai dengan RFC 3339. Linimasa pengguna ini diurutkan secara kronologis pada waktu tampilan, sehingga juga akan menentukan tempat item ditampilkan di linimasa. Jika tidak disetel oleh layanan, waktu tampilan akan ditetapkan secara default ke waktu updated. dapat ditulis
html string Konten HTML untuk item ini. Jika text dan html diberikan untuk satu item, html akan dirender dalam linimasa.

Elemen HTML yang diizinkan - Anda dapat menggunakan elemen ini di kartu linimasa.

  • Header: h1, h2, h3, h4, h5, h6
  • Gambar: img
  • Daftar: li, ol, ul
  • Semantik HTML5: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
  • Struktural: blockquote, br, div, hr, p, span
  • Gaya: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
  • Tabel: table, tbody, td, tfoot, th, thead, tr

Elemen HTML yang diblokir: Elemen ini dan kontennya dihapus dari payload HTML.

  • Header dokumen: head, title
  • Sematan: audio, embed, object, source, video
  • Frame: frame, frameset
  • Pembuatan skrip: applet, script

Elemen lainnya: Elemen apa pun yang tidak tercantum akan dihapus, tetapi kontennya dipertahankan.

dapat ditulis
isBundleCover boolean Apakah item ini merupakan sampul paket.

Jika item ditandai sebagai sampul paket, item tersebut akan menjadi titik entri ke paket item yang memiliki bundleId yang sama dengan item tersebut. Tugas hanya akan ditampilkan di linimasa utama — bukan dalam paket yang terbuka.

Pada linimasa utama, item yang ditampilkan adalah:
  • Item yang memiliki isBundleCover yang ditetapkan ke true
  • Item yang tidak memiliki bundleId
Dalam sub-jadwal paket, item yang ditampilkan adalah:
  • Item yang memiliki bundleId yang dimaksud AND isBundleCover ditetapkan ke false
dapat ditulis
location nested object Lokasi geografis yang terkait dengan item ini. dapat ditulis
notification nested object Mengontrol cara notifikasi untuk item ini ditampilkan di perangkat. Jika informasi ini tidak ada, tidak ada notifikasi yang akan dibuat. dapat ditulis
notification.deliveryTime datetime Waktu pengiriman notifikasi. dapat ditulis
notification.level string Menjelaskan seberapa penting notifikasi tersebut. Nilai yang diizinkan adalah:
  • DEFAULT - Notifikasi dari tingkat kepentingan default. Bel akan diputar untuk memberi tahu pengguna.
dapat ditulis
recipients[] list Daftar pengguna atau grup yang diajak berbagi item ini. dapat ditulis
sourceItemId string String buram yang dapat Anda gunakan untuk memetakan item linimasa ke data dalam layanan Anda sendiri. dapat ditulis
speakableText string Versi konten yang dapat diucapkan dari item ini. Bersama dengan item menu READ_ALOUD, gunakan kolom ini untuk memberikan teks yang lebih jelas saat dibacakan secara lisan, atau untuk memberikan informasi yang diperluas tentang apa yang ditampilkan secara visual di Glass.

Glassware juga harus menentukan kolom speakableType, yang akan diucapkan sebelum teks ini jika konteks tambahan berguna, misalnya saat pengguna meminta item dibacakan dengan keras setelah notifikasi.
dapat ditulis
speakableType string Deskripsi yang dapat diucapkan tentang jenis item ini. Ini akan diumumkan kepada pengguna sebelum membaca konten item jika konteks tambahan berguna, misalnya saat pengguna meminta agar item dibacakan secara lisan setelah notifikasi disampaikan.

Ini harus berupa frasa kata benda singkat dan sederhana seperti "Email", "SMS", atau "Info Terbaru Planet Harian".

Glassware sebaiknya mengisi kolom ini untuk setiap item linimasa, meskipun item tersebut tidak berisi speakableText atau teks sehingga pengguna dapat mempelajari jenis item tanpa melihat layar.
dapat ditulis
text string Konten teks item ini. dapat ditulis
title string Judul item ini. dapat ditulis

Tanggapan

Jika berhasil, metode ini menampilkan resource Linimasa dalam isi respons.

Contoh

Catatan: Contoh kode yang tersedia untuk metode ini tidak merepresentasikan semua bahasa pemrograman yang didukung (lihat halaman library klien untuk mengetahui daftar bahasa yang didukung).

Java

Menggunakan library klien Java.

import com.google.api.services.mirror.Mirror;
import com.google.api.services.mirror.model.NotificationConfig;
import com.google.api.services.mirror.model.TimelineItem;

import java.io.IOException;

public class MyClass {
  // ...

  /**
   * Update a timeline item in the user's Glass with an optional notification and attachment.
   * 
   * @param service Authorized Mirror service.
   * @param itemId ID of the timeline item to update.
   * @param newText timeline item's text.
   * @param newNotificationLevel Optional notification level, supported values
   *        are {@code null} and "AUDIO_ONLY".
   * @return Updated timeline item on success, {@code null} otherwise.
   */
  public static TimelineItem updateTimelineItem(Mirror service, String itemId, String newText,
      String newNotificationLevel) {
    try {
      // First retrieve the timeline item from the API.
      TimelineItem timelineItem = service.timeline().get(itemId).execute();
      // Update the timeline item's metadata.
      timelineItem.setText(newText);
      if (newNotificationLevel != null && newNotificationLevel.length() > 0) {
        timelineItem.setNotification(new NotificationConfig().setLevel(newNotificationLevel));
      } else {
        timelineItem.setNotification(null);
      }
      return service.timeline().update(itemId, timelineItem).execute();
    } catch (IOException e) {
      System.err.println("An error occurred: " + e);
      return null;
    }
  }

  // ...
}

.NET

Menggunakan library klien.NET.

using System;
using System.IO;

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

public class MyClass {
  // ...

  /// <summary>
  /// Update a timeline item in the user's Glass with an optional
  /// notification and attachment.
  /// </summary>
  /// <param name='service'>Authorized Mirror service.</param>
  /// <param name='itemId'>ID of the timeline item to update.</param>
  /// <param name='newText'>Timeline Item's text content.</param>
  /// <param name='newNotificationLevel'>
  /// Optional notification level, supported values are null and
  /// "AUDIO_ONLY".
  /// </param>
  /// <returns>
  /// Updated timeline item on success, null otherwise.
  /// </returns>
  public static TimelineItem UpdateTimelineItem(MirrorService service,
      String itemId, String newText, String newNotificationLevel) {
    try {
      // First retrieve the timeline item from the API.
      TimelineItem timelineItem = service.Timeline.Get(itemId).Fetch();
      // Update the timeline item's metadata.
      timelineItem.Text = newText;
      if (!String.IsNullOrEmpty(newNotificationLevel)) {
        timelineItem.Notification = new NotificationConfig() {
          Level = newNotificationLevel
        };
      } else {
        timelineItem.Notification = null;
      }
      return service.Timeline.Update(timelineItem, itemId).Fetch();
    } catch (Exception e) {
      Console.WriteLine("An error occurred: " + e.Message);
      return null;
    }
  }

  // ...
}

PHP

Menggunakan library klien PHP.

/**
 * Update a timeline item in the user's Glass with an optional
 * notification and attachment.
 *
 * @param Google_MirrorSservice $service Authorized Mirror service.
 * @param string $itemId ID of the timeline item to update.
 * @param string $newText timeline item's text (can be HTML content).
 * @param string $newNotificationLevel Optional notification level,
 *               supported values are {@code null} and "AUDIO_ONLY".
 * @return Google_TimelineItem Updated timeline item on success,
 *         null otherwise.
 */
function updateTimelineItem($service, $itemId, $newText, $newNotificationLevel) {
  try {
    $timelineItem = $service->timeline->get($itemId);
    $timelineItem->setText($newText);
    if ($notificationlevel != null) {
      $notification = new Google_NotificationConfig();
      $notification->setLevel($newNotificationLevel);
      $timelineItem->setNotification($notification);
    } else {
      $timelineItem->setNotification(null);
    }
    return $service->timeline->update($itemId, $timelineItem);
  } catch (Exception $e) {
    print 'An error occurred: ' . $e->getMessage();
    return null;
  }
}

Python

Menggunakan library klien Python.

import io

from apiclient import errors
from apiclient.http import MediaIoBaseUpload
# ...

def update_timeline_item(service, item_id, new_text, 
                         new_notification_level=None):
  """Update a timeline item in the user's Glass.

  Args:
    service: Authorized Mirror service.
    item_id: ID of the timeline item to update.
    new_text: Timeline item's text (can be HTML content).
    new_content_type: Optional attachment's content type (supported content
                      types are 'image/*', 'video/*' and 'audio/*').
    new_attachment: Optional attachment as data string.
    new_notification_level: Optional notification level, supported values are
                            None and 'AUDIO_ONLY'.
  Returns:
    Updated timeline item on success, None otherwise.
  """
  try:
    # First retrieve the timeline item from the API.
    timeline_item = service.timeline().get(id=item_id).execute()
    # Update the timeline item's metadata.
    timeline_item['text'] = new_text
    if new_notification_level:
      timeline_item['notification'] = {'level': new_notification_level}
    elif 'notification' in timeline_item:
      timeline_item.pop('notification')
    return service.timeline().update(id=item_id, body=timeline_item).execute()
  except errors.HttpError, error:
    print 'An error occurred: %s' % error
    return None

Ruby

Menggunakan library klien Ruby.

##
# Update a timeline item in the user's glass.
#
# @param [Google::APIClient] client
#   Authorized client instance.
# @param [String] item_id
#   ID of the timeline item to update.
# @param [String] new_text
#   Timeline item's new text.
# @param [String] new_notification_level
#   Optional new notification level, supported values are nil and 'AUDIO_ONLY'.
# @return [Google::APIClient::Schema::Mirror::V1::TimelineItem]
#   Updated timeline item instance if successful, nil otherwise.
def update_timeline_item(client, item_id, new_text, new_notification_level)
  mirror = client.discovered_api('mirror', 'v1')
  result = client.execute(
    :api_method => mirror.timeline.get,
    :parameters => { 'id' => item_id })
  if result.success?
    timeline_item = result.data
    timeline_item.text = new_text
    if new_notification_level
      timeline_item.notification = { 'level' => new_notification_level }
    else
      timeline_item.notification = nil
    end
    result = client.execute(
      :api_method => mirror.timeline.update,
      :body_object => timeline_item,
      :parameters => { 'id' => item_id })
    if result.success?
      return result.data
    end
  end
  puts "An error occurred: #{result.data['error']['message']}"
end

Go

Menggunakan library klien Go.

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

// UpdateTimelineItem updates a timeline item in the user's timeline with an
// optional notification and attachment.
func UpdateTimelineItem(g *mirror.Service, itemId string, newNotificationLevel string) (
	*mirror.TimelineItem, error) {
	t, err := g.Timeline.Get(itemId).Do()
	if err != nil {
		fmt.Printf("An error occurred: %v\n", err)
		return nil, err
	}
	t.Text = newText
	if newNotificationLevel != "" {
		t.Notification = &mirror.NotificationConfig{Level: newNotificationLevel}
	} else {
		t.Notification = nil
	}
	r, err := g.Timeline.Update(itemId, t).Do()
	if err != nil {
		fmt.Printf("An error occurred: %v\n", err)
		return nil, err
	}
	return r, nil
}

HTTP Mentah

Tidak menggunakan library klien.

PUT /mirror/v1/timeline/timeline item id HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer auth token
Content-Type: application/json
Content-Length: 26

{ "text": "Hello world" }