Руководство по протоколу

Классический API Google Sites позволяет вашим приложениям получать доступ, публиковать и изменять контент на сайте Google . Кроме того, ваше приложение может запрашивать список недавних действий, получать историю изменений и загружать/скачивать вложения и файлы.

Аудитория

В этом документе предполагается, что вы понимаете общие идеи протокола API данных Google .

Этот документ предназначен для программистов, желающих писать клиентские приложения, способные взаимодействовать с Сайтами Google. Он предоставляет серию примеров базового взаимодействия API данных с использованием необработанного XML/HTTP с пояснениями. Прочитав этот документ, вы сможете узнать больше о взаимодействии с API с использованием наших клиентских библиотек , прочитав примеры для конкретных языков, которые можно найти в других руководствах на левой панели навигации.

Справочное руководство по материалам данного руководства см. в справочном руководстве .

Авторизация запросов

Когда ваше приложение запрашивает закрытые данные пользователя, оно должно включать токен авторизации. Токен также идентифицирует ваше приложение для Google.

О протоколах авторизации

Ваше приложение должно использовать OAuth 2.0 для авторизации запросов. Другие протоколы авторизации не поддерживаются. Если ваше приложение использует «Войти через Google» , некоторые аспекты авторизации выполняются за вас.

Авторизация запросов с помощью OAuth 2.0

Запросы к API данных Google Sites для получения закрытых пользовательских данных должны быть авторизованы прошедшим проверку подлинности пользователем.

Детали процесса авторизации или «потока» для OAuth 2.0 несколько различаются в зависимости от того, какое приложение вы пишете. Следующий общий процесс применим ко всем типам приложений:

  1. Когда вы создаете свое приложение, вы регистрируете его с помощью консоли Google API . Затем Google предоставляет информацию, которая понадобится вам позже, например идентификатор клиента и секрет клиента.
  2. Активируйте API данных Google Sites в консоли Google API. (Если API не указан в консоли API, пропустите этот шаг.)
  3. Когда вашему приложению требуется доступ к пользовательским данным, оно запрашивает у Google определенный объем доступа.
  4. Google отображает пользователю экран согласия , прося его разрешить вашему приложению запрашивать некоторые его данные.
  5. Если пользователь одобряет, Google предоставляет вашему приложению кратковременный токен доступа .
  6. Ваше приложение запрашивает пользовательские данные, прикрепляя к запросу токен доступа.
  7. Если Google определит, что ваш запрос и токен действительны, он вернет запрошенные данные.

Некоторые потоки включают дополнительные шаги, например использование токенов обновления для получения новых токенов доступа. Подробную информацию о потоках для различных типов приложений см. в документации Google OAuth 2.0 .

Ниже представлена ​​информация об области действия OAuth 2.0 для API данных Google Sites:

https://sites.google.com/feeds/

Чтобы запросить доступ с помощью OAuth 2.0, вашему приложению необходима информация об области действия, а также информация, которую Google предоставляет при регистрации вашего приложения (например, идентификатор клиента и секрет клиента).

Вернуться наверх

Указание версии

В каждом запросе к API данных Google Sites должна быть указана версия 1.4. Чтобы указать номер версии, используйте HTTP-заголовок GData-Version :

GData-Version: 1.4

Альтернативно, если вы не можете установить заголовки HTTP, вы можете указать v=1.4 в качестве параметра запроса в URL-адресе. Но HTTP-заголовок предпочтителен там, где это возможно.

Примечание . Клиентские библиотеки автоматически предоставляют соответствующие заголовки версий, поэтому не используйте параметр запроса v=1.4 при использовании клиентской библиотеки.

Вернуться наверх

Лента сайта

Фид сайта можно использовать для перечисления сайтов Google, которыми владеет пользователь или на которые у него есть разрешения на просмотр, а также для изменения названия существующего сайта. В доменах G Suite его также можно использовать для создания или копирования всего сайта.

Листинг сайтов

Чтобы получить список сайтов, к которым имеет доступ пользователь, отправьте аутентифицированный запрос GET на следующий URL-адрес:

https://sites.google.com/feeds/site/domainName
Параметр подачи Описание
domainName « site » или домен вашего домена, размещенного в G Suite (например, example.com ).

В ответе будет фид со списком сайтов:

GET /feeds/site/domainName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

HTTP/1.1 200 OK

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
    xmlns:gAcl="http://schemas.google.com/acl/2007" xmlns:sites="http://schemas.google.com/sites/2008"
    xmlns:gs="http://schemas.google.com/spreadsheets/2006" xmlns:dc="http://purl.org/dc/terms"
    xmlns:batch="http://schemas.google.com/gdata/batch" xmlns:gd="http://schemas.google.com/g/2005"
    xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>https://sites.google.com/feeds/site/site</id>
<updated>2009-12-02T17:47:34.406Z</updated>
<title>Site</title>
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"
    href="https://sites.google.com/feeds/site/site"/>
<link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml"
    href="https://sites.google.com/feeds/feeds/site/domainName"/>
<link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName"/>
<link rel="next" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/?start-index=2"/>
<generator version="1" uri="http://sites.google.com/">Google Sites</generator>
<openSearch:startIndex>1</openSearch:startIndex>
<entry gd:etag="W/&quot;CkUAQH4_eil7I2A9WxNaFk4.&quot;">
  <id>https://sites.google.com/feeds/site/site/myTestSite</id>
  <updated>2009-12-01T01:17:21.042Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-01T01:17:21.042Z</app:edited>
  <title>myTestSite</title>
  <summary/>
  <link rel="alternate" type="text/html" href="http://sites.google.com/site/myTestSite/"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/myTestSite"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myTestSite"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myTestSite"/>
  <sites:siteName>myTestSite</sites:siteName>
  <sites:theme>default</sites:theme>
</entry>
<entry gd:etag="W/&quot;DkQGQHczfA9WxNaFk4.&quot;">
  <id>https://sites.google.com/feeds/site/domainName/myOtherTestSite</id>
  <updated>2009-12-01T02:25:21.987Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-01T02:25:21.987Z</app:edited>
  <title>myOtherTestSite</title>
  <summary>A new site to hold memories</summary>
  <category scheme="http://schemas.google.com/sites/2008#tag" term="Memories Site"/>
  <link rel="alternate" type="text/html" href="http://sites.google.com/site/myOtherTestSite"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/myOtherTestSite"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myOtherTestSite"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myOtherTestSite"/>
  <sites:siteName>myOtherTestSite</sites:siteName>
  <sites:theme>iceberg</sites:theme>
</entry>
...
</feed>

Сайты перечислены в алфавитном порядке.

Создание новых сайтов

Примечание . Эта функция доступна только для доменов G Suite.

Новые сайты можно подготовить, отправив HTTP POST в фид сайта, например:

POST /feeds/site/example.com HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:sites="http://schemas.google.com/sites/2008">
  <title>Source Site</title>
  <summary>A new site to hold memories</summary>
  <sites:theme>slate</sites:theme>
</entry>

Приведенный выше запрос приведет к созданию нового сайта Google с темой «шифер» в домене G Suite example.com . URL-адрес сайта будет http://sites.google.com/a/example.com/source-site/.

Если сайт успешно создан, сервер ответит 201 Created . Запись ответа будет содержать элементы, добавленные сервером, такие как ссылка на сайт, ссылка на канал ACL сайта, имя сайта, заголовок и краткое описание.

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gAcl="http://schemas.google.com/acl/2007"
    xmlns:sites="http://schemas.google.com/sites/2008" xmlns:gs="http://schemas.google.com/spreadsheets/2006"
    xmlns:dc="http://purl.org/dc/terms" xmlns:batch="http://schemas.google.com/gdata/batch"
    xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0"
    gd:etag="W/&quot;DEECR38l7I2A9WxNaF0Q.&quot;">
  <id>https://sites.google.com/feeds/site/example.com/source-site</id>
  <updated>2009-12-02T23:31:06.184Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-02T23:31:06.184Z</app:edited>
  <title>New Test Site</title>
  <summary>A new site to hold memories</summary>
  <link rel="alternate" type="text/html" href="http://sites.google.com/a/example.com/source-site/"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/example.com/source-site"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/source-site"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/source-site"/>
  <sites:siteName>source-site</sites:siteName>
  <sites:theme>slate</sites:theme>
</entry>

Копирование сайта

Примечание . Эта функция доступна только для доменов G Suite.

Существующий сайт можно дублировать так же, как и при создании нового сайта . Однако в записи Atom запроса POST включите <link> с rel='source' указывающий на фид сайта, который нужно скопировать. Любой скопированный сайт будет иметь эту ссылку. Вот пример дублирования сайта:

POST /feeds/site/example.com HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry xmlns="http://www.w3.org/2005/Atom">
  <link rel="http://schemas.google.com/sites/2008#source" type="application/atom+xml"
      href="https://sites.google.com/feeds/site/example.com/source-site"/>
  <title>Copy of New Test Site</title>
  <summary>A newer site to hold memories</summary>
</entry>

Приведенный выше запрос скопирует сайт по адресу http://sites.google.com/a/example.com/source-site/.

Важные моменты:

  • Копировать можно только сайты и шаблоны сайтов, принадлежащие проверенному пользователю.
  • Шаблон сайта также можно скопировать. Сайт является шаблоном, если на странице настроек Google Sites установлен флажок «Опубликовать этот сайт как шаблон».
  • Вы можете скопировать сайт из другого домена, пока вы не указаны в качестве владельца исходного сайта.

Обновление метаданных сайта

Чтобы обновить заголовок или краткое описание сайта, отправьте HTTP PUT на ссылку edit записи сайта. Например, в следующем примере заголовок предыдущего сайта будет обновлен на New Test Site2 , а его описание — на Newer description .

PUT /feeds/site/example.com/source-site HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gAcl="http://schemas.google.com/acl/2007"
    xmlns:sites="http://schemas.google.com/sites/2008" xmlns:gs="http://schemas.google.com/spreadsheets/2006"
    xmlns:dc="http://purl.org/dc/terms" xmlns:batch="http://schemas.google.com/gdata/batch"
    xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0"
    gd:etag="W/&quot;DEECR38l7I2A9WxNaF0Q.&quot;">
  <id>https://sites.google.com/feeds/site/example.com/source-site</id>
  <updated>2009-12-02T23:31:06.184Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-02T23:31:06.184Z</app:edited>
  <title>New Test Site2</title>
  <summary>Newer description</summary>
  <category scheme="http://schemas.google.com/sites/2008#tag" term="Category"/>
  <link rel="alternate" type="text/html" href="http://sites.google.com/a/example.com/source-site/"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/example.com/source-site"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/source-site"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/source-site"/>
  <sites:siteName>source-site</sites:siteName>
</entry>

Добавление категорий

Примечание . Эта функция доступна только для доменов G Suite.

Сайты G Suite для вашего домена включают метаданные категорий, которые полезны для категоризации сайтов в вашем домене. Чтобы добавить или обновить метаданные категории, отправьте HTTP PUT на ссылку edit записи вашего сайта, которая включает тег category . См. жирную линию в следующем примере:

PUT /feeds/site/example.com/source-site HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gAcl="http://schemas.google.com/acl/2007"
    xmlns:sites="http://schemas.google.com/sites/2008" xmlns:gs="http://schemas.google.com/spreadsheets/2006"
    xmlns:dc="http://purl.org/dc/terms" xmlns:batch="http://schemas.google.com/gdata/batch"
    xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0"
    gd:etag="W/&quot;DEECR38l7I2A9WxNaF0Q.&quot;">
  <id>https://sites.google.com/feeds/site/example.com/source-site</id>
  <updated>2009-12-02T23:31:06.184Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-02T23:31:06.184Z</app:edited>
  <title>My Team website</title>
  <summary>This site contains contact information and a summary of major efforts our team owns</summary>
  <category scheme="http://schemas.google.com/sites/2008#tag" term="Team Site"/>
  <link rel="alternate" type="text/html" href="http://sites.google.com/a/example.com/my-team-site/"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/example.com/my-team-site"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/my-team-site"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/my-team-site"/>
  <sites:siteName>my-team-site</sites:siteName>
</entry>

В этом примере редактируется существующий сайт и добавляется категория «Сайт группы».

Вы также можете добавить несколько категорий, добавив дополнительные теги <category> . См. жирные линии в следующем примере:

PUT /feeds/site/example.com/my-team-site HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gAcl="http://schemas.google.com/acl/2007"
    xmlns:sites="http://schemas.google.com/sites/2008" xmlns:gs="http://schemas.google.com/spreadsheets/2006"
    xmlns:dc="http://purl.org/dc/terms" xmlns:batch="http://schemas.google.com/gdata/batch"
    xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0"
    gd:etag="W/&quot;DEECR38l7I2A9WxNaF0Q.&quot;">
  <id>https://sites.google.com/feeds/site/example.com/my-team-site</id>
  <updated>2009-12-02T23:31:06.184Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-02T23:31:06.184Z</app:edited>
  <title>My Team website</title>
  <summary>This site contains contact information and a summary of major efforts our team owns</summary>
  <category scheme="http://schemas.google.com/sites/2008#tag" term="Team Site/">
  <category scheme="http://schemas.google.com/sites/2008#tag" term="Legal Department/">
  <link rel="alternate" type="text/html" href="http://sites.google.com/a/example.com/my-team-site/"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/example.com/my-team-site"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/my-team-site"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/my-team-site"/>
  <sites:siteName>my-team-site</sites:siteName>
</entry>

В этом примере добавляются две категории: «Сайт группы» и «Юридический отдел».

Сопоставление веб-адресов

Сопоставление веб-адресов позволяет пользователям Сайтов сопоставлять свои домены с Сайтом Google. Например, вместо http://sites.google.com/a/domain.com/mysite можно использовать http://www.mydomainsite.com . В зависимости от того, где размещен ваш сайт, вы можете вручную изменить сопоставления веб-адресов сайта. Дополнительную информацию можно найти в статье нашего Справочного центра .

Получение сопоставлений веб-адресов сайта

Чтобы вернуть сопоставления веб-адресов для сайта, получите запись/канал сайта с параметром with-mappings=true :

GET /feeds/site/domainName?with-mappings=true HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

HTTP/1.1 200 OK

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
    xmlns:gAcl="http://schemas.google.com/acl/2007" xmlns:sites="http://schemas.google.com/sites/2008"
    xmlns:gs="http://schemas.google.com/spreadsheets/2006" xmlns:dc="http://purl.org/dc/terms"
    xmlns:batch="http://schemas.google.com/gdata/batch" xmlns:gd="http://schemas.google.com/g/2005"
    xmlns:thr="http://purl.org/syndication/thread/1.0">
...
<entry gd:etag="W/&quot;DkQGQHczfA9WxNaFk4.&quot;">
  <id>https://sites.google.com/feeds/site/domainName/myOtherTestSite</id>
  <updated>2009-12-01T02:25:21.987Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-01T02:25:21.987Z</app:edited>
  <title>myOtherTestSite</title>
  <summary>A new site to hold memories</summary>
  <link rel="alternate" type="text/html" href="http://sites.google.com/site/myOtherTestSite"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/myOtherTestSite"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myOtherTestSite"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myOtherTestSite"/>
  <link rel='webAddressMapping' href='http://www.mysitemapping.com'>
  <link rel='webAddressMapping' href='http://www.mysitemapping2.com'>
  <link rel='webAddressMapping' href='http://www.myothermapping.org'>
</entry>
...
</feed>

Существующие сопоставления будут отображаться как link с rel='webAddressMapping'. Например, в приведенном выше примере есть три webAddressMapping , которые указывают на сайт http://sites.google.com/site/ myOtherTestSite .

Изменение сопоставлений веб-адресов

Примечание . Все операции GET/POST/PUT должны указывать параметр with-mappings=true при работе с сопоставлениями веб-адресов. Если параметр отсутствует, значения webAddressMapping не будут возвращаться в записях сайта (GET) или учитываться при обновлении/удалении сопоставлений (PUT) из записи.

Чтобы добавить, обновить или удалить сопоставление, просто укажите, измените или удалите такую ​​ссылку при создании новых сайтов или обновлении метаданных сайта . Параметр with-mappings=true должен быть включен в URI фида сайта. Примечание. Чтобы обновить сопоставления адресов, вам необходимо быть администратором сайта или администратором домена, если сайт размещен в G Suite.

Например, приведенный ниже запрос обновляет сопоставление http://www.mysitemapping.com на http://www.my-new-sitemapping.com и удаляет http://www.mysitemapping2.com , оставляя ссылку. записи:

PUT /feeds/site/domainName?with-mappings=true HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry gd:etag="W/&quot;DkQGQHczfA9WxNaFk4.&quot;">
  <id>https://sites.google.com/feeds/site/domainName/myOtherTestSite</id>
  <updated>2009-12-01T02:25:21.987Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-01T02:25:21.987Z</app:edited>
  <title>myOtherTestSite</title>
  <summary>A new site to hold memories</summary>
  <link rel="alternate" type="text/html" href="http://sites.google.com/site/myOtherTestSite"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/myOtherTestSite"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myOtherTestSite"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myOtherTestSite"/>
  <link rel='webAddressMapping' href='www.my-new-sitemapping.com'>
  <!-- missing mapping2 will be deleted -->
  <link rel='webAddressMapping' href='http://www.myothermapping.org'>
</entry>

Обратите внимание: сопоставления веб-адресов также можно указать во время создания/копирования сайта.

Вернуться наверх

Лента активности

Вы можете получить информацию о недавней активности (изменениях) на Сайте, загрузив ленту активности. Каждая запись в ленте активности содержит информацию об изменении, внесенном на Сайт.

Чтобы запросить канал активности, отправьте HTTP GET на URL-адрес канала активности:

https://sites.google.com/feeds/activity/domainName/siteName
Параметр подачи Описание
domainName « site » или домен вашего домена, размещенного в G Suite (например, example.com ).
siteName Имя веб-пространства вашего сайта; находится в URL-адресе Сайта (например, myCoolSite ).

Пример запроса и ответа:

GET /feeds/activity/site/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

HTTP/1.1 200 OK

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">
<id>https://sites.google.com/feeds/activity/site/siteName</id>
<updated>2009-09-10T05:24:23.120Z</updated>
<title>Activity</title>
<link rel="alternate" type="text/html" href="http://sites.google.com/site/siteName/system/app/pages/recentChanges"/>
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"
  href="https://sites.google.com/feeds/activity/site/siteName"/>
<link rel="self" type="application/atom+xml"
  href="https://sites.google.com/feeds/activity/site/siteName"/>
<generator version="1" uri="http://sites.google.com">Google Sites</generator>
<openSearch:startIndex>1</openSearch:startIndex>
<entry xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;CU4GQ3szfSl7ImA9WxNRFUg.&quot;">
<id>https://sites.google.com/feeds/activity/site/siteName/940375996952876062</id>
<updated>2009-09-10T03:38:42.585Z</updated>
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/sites/2008#deletion" label="deletion"/>
<title>home</title>
<summary type="xhtml">
  <div xmlns="http://www.w3.org/1999/xhtml">User deleted <a href="http://sites.google.com/site/siteName/home">home</a>
</div>
</summary>
<link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml"
  href="https://sites.google.com/feeds/revision/site/siteName/5409745539831916487"/>
<link rel="http://schemas.google.com/sites/2008#current" type="application/atom+xml"
  href="https://sites.google.com/feeds/content/site/siteName/5409745539831916487"/>
<link rel="self" type="application/atom+xml"
  href="https://sites.google.com/feeds/activity/site/siteName/940375996952876062"/>
<author>
  <name>User</name>
  <email>user@gmail.com</email>
</author>
</entry>
<entry xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;CU8DQn45fyl7ImA9WxNRFUg.&quot;">
  <id>https://sites.google.com/feeds/activity/site/siteName/7165439066235480082</id>
  <updated>2009-09-10T03:37:53.027Z</updated>
  <category scheme="http://schemas.google.com/g/2005#kind"
    term="http://schemas.google.com/sites/2008#edit" label="edit"/>
  <title>home</title>
  <summary type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">User2 edited <a href="http://sites.google.com/site/siteName/home">home</a>
  </div>
  </summary>
  <link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml"
    href="https://sites.google.com/feeds/revision/site/siteName/5409745539831916487"/>
  <link rel="http://schemas.google.com/sites/2008#current" type="application/atom+xml"
    href="https://sites.google.com/feeds/content/site/siteName/5409745539831916487"/>
  <link rel="self" type="application/atom+xml"
    href="https://sites.google.com/feeds/activity/site/siteName/7165439066235480082"/>
  <author>
    <name>User</name>
    <email>user@gmail.com</email>
  </author>
</entry>
<entry xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;CU8AR3s4cSl7ImA9WxNRFUg.&quot;">
  <id>https://sites.google.com/feeds/activity/site/siteName/127448462987345884</id>
  <updated>2009-09-10T03:37:26.539Z</updated>
  <category scheme="http://schemas.google.com/g/2005#kind"
    term="http://schemas.google.com/sites/2008#creation" label="creation"/>
  <title>home</title>
  <summary type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">User3 created <a href="http://sites.google.com/site/siteName/home">home</a>
  </div>
  </summary>
  <link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml"
    href="https://sites.google.com/feeds/revision/site/siteName/5409745539831916487"/>
  <link rel="http://schemas.google.com/sites/2008#current" type="application/atom+xml"
    href="https://sites.google.com/feeds/content/site/siteName/5409745539831916487"/>
  <link rel="self" type="application/atom+xml"
    href="https://sites.google.com/feeds/activity/site/siteName/127448462987345884"/>
  <author>
    <name>User3</name>
    <email>user3@gmail.com</email>
  </author>
</entry>
</feed>

Примечание . Для доступа к этому каналу требуется, чтобы вы были соавтором или владельцем Сайта. Ваш клиент должен отправить правильный заголовок Authorization и ссылаться на токен, полученный в запросах авторизации .

Вернуться наверх

Фид редакций

Чтобы получить историю изменений для любой записи контента, отправьте HTTP GET по ссылке на версию записи:

https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID
Параметр подачи Описание
domainName « site » или домен вашего домена, размещенного в G Suite (например, example.com ).
siteName Имя веб-пространства вашего сайта; находится в URL-адресе Сайта (например, myCoolSite ).

Чтобы найти ссылку на версии для данной страницы/комментария/вложения/элемента списка, сначала извлеките запись из канала контента, используя ее CONTENT_ENTRY_ID. Полученная запись будет содержать <atom:link> в канале изменений. Например:

<link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml"
    href="https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID"/>

Пример запроса и ответа:

GET /feeds/revision/domainName/siteName/CONTENT_ENTRY_ID HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

HTTP/1.1 200 OK

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
    xmlns:sites="http://schemas.google.com/sites/2008" xmlns:gs="http://schemas.google.com/spreadsheets/2006"
    xmlns:dc="http://purl.org/dc/terms" xmlns:batch="http://schemas.google.com/gdata/batch"
    xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID</id>
<updated>2009-09-10T04:33:35.337Z</updated>
<title>Revisions</title>
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"
    href="https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID"/>
<link rel="self" type="application/atom+xml"
    href="https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID"/>
<generator version="1" uri="http://sites.google.com">Google Sites</generator>
<openSearch:startIndex>1</openSearch:startIndex>
<entry gd:etag="W/&quot;CU4GQmA9WxNRFUg.&quot;">
  <id>https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID/2</id>
  <updated>2009-09-10T03:38:42.045Z</updated>
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
  <title>Home</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">Latest content here</div>
  </content>
  <link rel="alternate" type="text/html"
    href="http://sites.google.com/domainName/siteName/CONTENT_ENTRY_ID/system/app/pages/admin/compare?wuid=wuid%3Agx%3A4f67c7&amp;rev1=2"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID/2"/>
  <author>
    <name>User</name>
    <email>user@gmail.com</email>
  </author>
  <sites:pageName>home</sites:pageName>
  <sites:revision>2</sites:revision>
</entry>
<entry gd:etag="W/&quot;CU8DQ388eSl7ImA9WxNRFUg.&quot;">
  <id>https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID/1</id>
  <updated>2009-09-10T03:37:52.171Z</updated>
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
  <title>Home</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">Older content here</div>
  </content>
  <link rel="alternate" type="text/html"
    href="http://sites.google.com/domainName/siteName/CONTENT_ENTRY_ID/system/app/pages/admin/compare?wuid=wuid%3Agx%3A4bc7&amp;rev1=1"/>
  <link rel="self" type="application/atom+xml"
    href="https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID/1"/>
  <author>
    <name>User</name>
    <email>user@gmail.com</email>
  </author>
  <sites:pageName>home</sites:pageName>
  <sites:revision>1</sites:revision>
</entry>
</feed>

Примечание . Для доступа к этому каналу требуется, чтобы вы были соавтором или владельцем Сайта. Ваш клиент должен отправить правильный заголовок Authorization и ссылаться на токен, полученный в запросах авторизации .

Вернуться наверх

Лента контента

Получение контента

В ленте контента указан текущий контент Сайтов. Отправьте аутентифицированный запрос GET по следующему URL-адресу:

https://sites.google.com/feeds/content/domainName/siteName
Параметр подачи Описание
domainName « site » или домен вашего домена, размещенного в G Suite (например, example.com ).
siteName Имя веб-пространства вашего сайта; находится в URL-адресе Сайта (например, myCoolSite ).

Результатом является канал, в котором перечислена первая страница записей контента на Сайте. Каждая запись в фиде будет представлять отдельный тип контента, например webpage , filecabinet , attachment , comment и т. д <category scheme="http://schemas.google.com/g/2005#kind"> элемент определяет тип записи. Список значений kind поддержки см. в справочном руководстве .

Примечание . Этот канал может требовать или не требовать аутентификации; в зависимости от разрешений на совместное использование Сайта. Если Сайт является закрытым, ваш клиент должен отправить правильный заголовок Authorization (как показано в примере выше) и ссылаться на токен, полученный в запросах авторизации .

GET /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

HTTP/1.1 200 OK

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
  xmlns:sites="http://schemas.google.com/sites/2008" xmlns:gs="http://schemas.google.com/spreadsheets/2006"
  xmlns:dc="http://purl.org/dc/terms" xmlns:batch="http://schemas.google.com/gdata/batch"
  xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>https://sites.google.com/feeds/content/domainName/siteName</id>
<updated>2009-08-31T01:39:20.286Z</updated>
<title>Content</title>
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"
    href="https://sites.google.com/feeds/content/domainName/siteName"/>
<link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml"
    href="https://sites.google.com/feeds/content/domainName/siteName"/>
<link rel="self" type="application/atom+xml"
    href="https://sites.google.com/feeds/content/domainName/siteName"/>
<link rel="http://schemas.google.com/g/2005#batch" type="application/atom+xml"
    href="https://sites.google.com/feeds/content/domainName/siteName/batch""/>
<link rel="next" type="application/atom+xml" href="https://sites.google.com/feeds/content/domainName/siteName/?start-index=2"/>
<generator version="1" uri="http://sites.google.com">Google Sites</generator>
<openSearch:startIndex>1</openSearch:startIndex>
<entry gd:etag="W/&quot;Ck8GQXk7fil7ImA9WxNSFk0.&quot;">
  <id>https://sites.google.com/feeds/content/domainName/siteName/7322156894</id>
  <updated>2009-08-30T02:53:40.706Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-30T02:53:40.706Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
  <title>Subpage</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">Page html content here</div>
  </content>
  <link rel="http://schemas.google.com/sites/2008#parent" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/6492205817"/>
  <link rel="alternate" type="text"
      href="http://sites.google.com/site/siteName/subpage"/>
  <link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml"
      href="https://sites.google.com/feeds/revision/domainName/siteName/7322156894"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/7322156894"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/7322156894"/>
  <author>
    <name>User</name>
    <email>user@gmail.com</email>
  </author>
  <sites:pageName>subpage</sites:pageName>
  <sites:revision>5</sites:revision>
</entry>
<entry gd:etag="W/&quot;CkMBQH08fCl7ImA9WxNSFk0.&quot;">
  <id>https://sites.google.com/feeds/content/domainName/siteName/5930635231</id>
  <updated>2009-08-30T02:47:31.374Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-30T02:47:31.374Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#listitem" label="listpage"/>
  <title/>
  <link rel="http://schemas.google.com/sites/2008#parent" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/5930635231"/>
  <link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml"
      href="https://sites.google.com/feeds/revision/domainName/siteName/5930635231"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/5930635231"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/5930635231"/>
  <author>
    <name>User</name>
    <email>user@gmail.com</email>
  </author>
  <sites:revision>1</sites:revision>
  <gs:field index="A" name="Issue/Feature">Implement cool feature X</gs:field>
  <gs:field index="B" name="Priority">P2</gs:field>
  <gs:field index="C" name="Owner"/>
  <gs:field index="D" name="Resolved"/>
</entry>
<entry gd:etag="W/&quot;AkYHQ3ozcCl7ImA9WxJaE08.&quot;">
  <id>https://sites.google.com/feeds/content/domainName/siteName/1265948545471894517</id>
  <updated>2009-08-03T19:35:32.488Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-03T19:35:32.488Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#filecabinet" label="filecabinet"/>
  <title>files</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">Page html content here</div>
  </content>
  <link rel="alternate" type="text"
      href="https://sites.google.com/domainName/siteName/files"/>
  <link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml"
      href="https://sites.google.com/feeds/revision/domainName/siteName/12671894517"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/12671894517"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/12671894517"/>
  <author>
    <name>User</name>
    <email>user@gmail.com</email>
  </author>
  <gd:feedLink href="httpn://sites.google.com/feeds/content/domainName/siteName?parent=12671894517"/>
  <sites:pageName>files</sites:pageName>
  <sites:revision>1</sites:revision>
</entry>
...
</feed>

Примечание . Это только первые несколько результатов. Чтобы просмотреть весь фид контента, перейдите по ссылке «Далее» в фиде:

<link rel="next" type="application/atom+xml" href="https://sites.google.com/feeds/content/domainName/siteName/?start-index=2"/>

Объяснение общих элементов Atom см. в справочнике по протоколу данных Google . Ниже описаны элементы, имеющие особое значение для классического API Сайтов. Записи некоторых типов будут иметь дополнительные свойства (не перечисленные ниже), а другие — нет. Например, запись listitem может содержать элементы <gs:field> , а запись webpage нет.

Элемент Описание
<content ...> Внутренний текст — это тело HTML страницы. Для некоторых записей (например, вложений) этот элемент будет содержать атрибут src , указывающий на файл.
<link rel="alternate" ...> Ссылка на страницу или элемент на Сайтах Google.
<link rel="http://schemas.google.com/sites/2008#revision" ...> Атрибут href указывает на канал изменений записи.
<link rel="http://schemas.google.com/sites/2008#parent" ...> Атрибут href указывает на родительскую запись записи.
<link rel="http://schemas.google.com/sites/2008#template" ...> Атрибут href указывает на страницу шаблона записи.
<category scheme="http://schemas.google.com/g/2005#kind" ...> label — это тип записи.
<category term="http://schemas.google.com/g/2005#template" ...> label=template обозначающий, что запись является шаблоном.
<gd:feedLink> Атрибут href указывает на дочерних элементов родительской записи.
<sites:pageName> Имя веб-пространства страницы; соответствующий имени в URL-адресе страницы.
<sites:revision> Текущий номер редакции.

Примеры запросов к фиду контента

Вы можете выполнять поиск по ленте контента, используя некоторые стандартные параметры запроса API данных Google, а также параметры, специфичные для классического API Сайтов. Более подробную информацию и полный список поддерживаемых параметров смотрите в Справочном руководстве .

Получение определенных типов записей

Чтобы получить только определенный тип записи, используйте параметр kind . Этот пример возвращает только записи webpage :

GET /feeds/content/domainName/siteName?kind=webpage

Чтобы вернуть более одного типа записи, разделите каждый kind знаком «,». Этот пример возвращает записи filecabinet и listpage :

GET /feeds/content/domainName/siteName?kind=filecabinet,listpage

Альтернативно вы можете использовать стандартный формат запроса Google Data /-/category вместо параметра kind :

GET /feeds/content/domainName/siteName/-/filecabinet|listpage

Получение шаблонов страниц

Этот пример возвращает только страницы template :

GET /feeds/content/domainName/siteName/-/template

Чтобы вернуть все типы записей и включить страницы template , используйте:

GET /feeds/content/domainName/siteName/-/template|-template

Получение страницы по пути

Если вы знаете относительный путь к странице на сайте Google, вы можете использовать параметр path для получения этой конкретной страницы. В этом примере будет возвращена страница, расположенная по http://sites.google.com/ site / siteName /path/to/the/page :

GET /feeds/content/domainName/siteName?path=/path/to/the/page

Получение всех записей на родительской странице

Если вы знаете идентификатор записи страницы, вы можете использовать parent параметр для получения всех ее дочерних записей (если таковые имеются):

GET /feeds/content/domainName/siteName?parent=CONTENT_ENTRY_ID

Включая черновики или удаленные записи

Чтобы включить черновики или удаленные записи, используйте параметры include-drafts или include-deleted соответственно. Этот пример включает черновики записей в ленте контента:

GET /feeds/content/domainName/siteName?include-drafts=true

Полнотекстовый поиск

Для поиска по всему содержимому сайта используйте параметр q для выполнения полнотекстового поиска:

GET /feeds/content/domainName/siteName?q=Text%20I%20am%20looking%20for

Вернуться наверх



Создание контента

Новый контент (веб-страницы, страницы списков, страницы файлового шкафа, страницы объявлений и т. д.) можно создать, отправив HTTP POST в канал контента:

https://sites.google.com/feeds/content/domainName/siteName

Список поддерживаемых типов записей см. в параметре kind в Справочном руководстве .

Создание новых элементов/страниц

В этом примере создается новая webpage на верхнем уровне сайта, включается некоторый XHTML для тела страницы и устанавливается заголовок заголовка «Новый заголовок веб-страницы»:

POST /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 328
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom">
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
  <title>New Webpage Title</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">HTML body goes here</div>
  </content>
</entry>

В случае успеха сервер отвечает сообщением 201 Created и копией записи.

Создание элементов/страниц по настраиваемым URL-путям

По умолчанию предыдущий пример будет создан с URL- http://sites.google.com/ domainName / siteName /new-webpage-title и иметь заголовок страницы «Новый заголовок веб-страницы». То есть <atom:title> нормализуется как new-webpage-title для URL-адреса. Чтобы настроить URL-адрес страницы, вы можете установить элемент <sites:pageName> .

В этом примере создается новый filecabinet с заголовком страницы «Хранилище файлов», но создается страница с URL- http://sites.google.com/ domainName / siteName /files путем указания элемента <sites:pageName> .

POST /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 393
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:sites="http://schemas.google.com/sites/2008">
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#filecabinet" label="filecabinet"/>
  <title>File Storage</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">A list of files is below.</div>
  </content>
  <sites:pageName>files</sites:pageName>
</entry>

Сервер использует следующие правила приоритета для именования URL-пути страницы:

  1. <sites:pageName> , если присутствует. Должно удовлетворять az, AZ, 0-9, -, _ .
  2. <atom:title> не должно быть нулевым, если имя страницы отсутствует. Нормализация заключается в обрезке + свертывании пробелов до '-' и удалении символов, не соответствующих az, AZ, 0-9, -, _ .

Например, «Custom_Page2» будет принят сервером.

Создание подстраниц

Чтобы создать подстраницы (дочерние) на родительской странице, включите <link rel="http://schemas.google.com/sites/2008#parent"> в новую запись Atom. Установите атрибут href ссылки на собственную ссылку родительской записи.

В этом примере создается новое announcement с заголовком «объявление» на родительской странице объявлений с идентификатором записи PARENT_ENTRY_ID . Также включен XHTML-контент для тела страницы:

POST /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 470
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom">
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#announcement" label="announcement"/>
  <link rel="http://schemas.google.com/sites/2008#parent" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/PARENT_ENTRY_ID"/>
  <title>announcement</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">This weekend. My place.</div>
  </content>
</entry>

Шаблоны страниц

Создание шаблонов страниц

Процесс создания шаблона страницы аналогичен созданию новых элементов/страниц и созданию подстраниц . Разница заключается в добавлении category с термином и меткой, установленными на «http://schemas.google.com/g/2005#template». ' и 'шаблон' соответственно.

В этом примере создается новый шаблон webpage .

POST /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 464
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:sites="http://schemas.google.com/sites/2008">
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
  <category scheme="http://schemas.google.com/g/2005#labels" term="http://schemas.google.com/g/2005#template" label="template"/>
  <title>Webpage Template</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">This weekend. My place.</div>
  </content>
</entry>

Создание страниц по шаблону

Подобно созданию шаблонов страниц, вы можете создать экземпляр новой страницы из шаблона, включив <link> с rel='http://schemas.google.com/sites/2008#template', указывающий на собственную ссылку шаблона страницы. .

В этом примере создается новая страница filecabinet из существующего шаблона страницы, который определяет файловый шкаф.

POST /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 464
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:sites="http://schemas.google.com/sites/2008">
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#filecabinet" label="filecabinet"/>
  <title>File Cabinet Page From Template</title>
  <link rel='http://schemas.google.com/sites/2008#template' type='application/atom+xml'
    href='https://sites.google.com/feeds/content/domainName/siteName/ENTRY_ID'/>
</entry>

Примечание . Несмотря на то, что шаблон определяет <category> , включение его в вашу запись все равно необходимо. Также обратите внимание: если вы включите элемент <content> , сервер его отклонит.

Загрузка файлов

Как и в Google Сайтах, API позволяет загружать вложения на страницы картотеки и родительские страницы.

Чтобы загрузить вложение родительскому элементу, отправьте запрос HTTP POST на URL-адрес канала контента:

https://sites.google.com/feeds/content/domainName/siteName

Тело POST должно представлять собой многочастный запрос MIME, объединяющий содержимое файла с <atom:entry> , содержащим метаданные вложения. <atom:entry> должен ссылаться на собственную ссылку родительской записи, чтобы указать, где будет создано вложение. Дополнительную информацию см. в разделе Создание подстраниц .

Загрузка вложения

Вот пример загрузки PDF-файла в картотеку с идентификатором PARENT_ENTRY_ID . Вложение будет создано с заголовком «Файл PDF» и (необязательным) описанием «Пакет HR».

POST /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 7221984
Content-Type: multipart/related; boundary=END_OF_PART
--END_OF_PART
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom">
  <category scheme="http://schemas.google.com/g/2005#kind"
          term="http://schemas.google.com/sites/2008#attachment" label="attachment"/>
  <link rel="http://schemas.google.com/sites/2008#parent" type="application/atom+xml"
        href="https://sites.google.com/feeds/content/domainName/siteName/PARENT_ENTRY_ID"/>
  <title>PDF File</title>
  <summary>HR packet</summary>
</entry>

--END_OF_PART
Content-Type: application/pdf

... pdf contents here ...

--END_OF_PART--

Если загрузка прошла успешно, сервер ответит сообщением 201 Created и копией вновь созданной записи вложения.

Загрузка вложения в папку

Чтобы загрузить вложение в существующую папку в filecabinet , включите категорию с атрибутом «term», установленным для имени папки:

<category scheme="http://schemas.google.com/sites/2008#folder" term="FolderName">

Веб-вложения

Веб-вложения — это особые виды вложений. По сути, это ссылки на другие файлы в Интернете, которые вы можете добавить в списки своего файлового шкафа. Эта функция аналогична методу загрузки «Добавить файл по URL» в пользовательском интерфейсе Сайтов Google.

Примечание . Веб-приложения можно создавать только в картотеке. Их нельзя загрузить на другие типы страниц.

В этом примере создается webattachment в файловом шкафу, на который ссылается идентификатор FILECABINET_ENTRY_ID . Для его заголовка и (необязательного) описания установлены значения «Логотип Google» и «приятные цвета» соответственно.

POST /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Type: application/atom+xml
Content-Length: 531

<entry xmlns="http://www.w3.org/2005/Atom">
  <category scheme="http://schemas.google.com/g/2005#kind"
          term="http://schemas.google.com/sites/2008#webattachment" label="webattachment"/>
  <link rel="http://schemas.google.com/sites/2008#parent" type="application/atom+xml"
        href="https://sites.google.com/feeds/content/domainName/siteName/FILECABINET_ENTRY_ID"/>
  <title>GoogleLogo</title>
  <summary>nice colors</summary>
  <content type="image/gif" src="http://www.google.com/images/logo.gif"></content>
</entry>

POST создает ссылку в файловом шкафу пользователя, указывающую на изображение по адресу «http://www.google.com/images/logo.gif».

Вернуться наверх



Обновление контента

Метаданные (заголовок, имя страницы и т. д.) и содержимое любой страницы можно редактировать с помощью одного запроса PUT к ссылке edit . Тело запроса должно содержать запись Atom, описывающую обновленную страницу. Исключением из этого правила является запись вложения, в которой запись можно использовать только для обновления метаданных вложения. Чтобы изменить содержимое прикрепленного файла, просто включите необработанные данные в качестве тела запроса PUT в ссылку edit-media вложения. Вы также можете обновить как метаданные, так и содержимое прикрепленного файла одновременно, используя составной запрос MIME.

Чтобы убедиться, что ваше обновление не перезаписывает изменения другого клиента, включите значение ETag исходной записи. Это можно сделать, указав значение ETag в заголовке HTTP If-Match или включив атрибут gd:etag исходной записи в обновленную запись. Чтобы определить значение ETag исходной записи, проверьте атрибут gd:etag элемента <entry> . Для записей мультимедиа ETag мультимедиа может быть доступен в атрибуте gd:etag ссылки edit-media .

Если вы хотите обновить запись независимо от того, обновил ли ее кто-то другой после того, как вы ее получили, используйте If-Match: * и не включайте ETag. Дополнительную информацию об ETags см. в справочном руководстве по API данных Google .

Обновление метаданных элемента или содержимого HTML

Чтобы обновить метаданные записи или содержимое HTML, отправьте HTTP PUT на ссылку edit записи.

Ниже приведен пример обновления записи listpage (представленной ее идентификатором ENTRY_ID ) со следующими изменениями:

  • Название изменено на «Обновленный контент».
  • Обновленный HTML-контент
  • Заголовок первого столбца списка обновляется на «Владелец».
  • URL-адрес страницы изменяется элементом <sites:pageName>
PUT /feeds/content/domainName/siteName/ENTRY_ID
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 816
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:sites="http://schemas.google.com/sites/2008"
    xmlns:gs="http://schemas.google.com/spreadsheets/2006" xmlns:gd="http://schemas.google.com/g/2005"
    gd:etag="W/&quot;CEEBRn0ymA9WxJWEUw.&quot;">
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#listpage" label="listpage"/>
  <title>Updated Title</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">Updated Content</div>
  </content>
  <gs:worksheet name="listpage"/>
  <gs:header row="1"/>
  <gs:data startRow="2">
    <gs:column index="A" name="Owner"/>
    <gs:column index="B" name="Decription"/>
    <gs:column index="C" name="Completed"/>
  </gs:data>
  <sites:pageName>newPagePath</sites:pageName>
</entry>

Примечание. Запись (возвращенная сервером) будет содержать больше элементов, чем в примере выше.

Замена содержимого вложения

Ниже приведен пример замены содержимого вложения с сохранением его метаданных. Поскольку запрос содержит новый контент, используется ссылка edit-media записи вложения.

PUT /feeds/media/content/domainName/siteName/ATTACHMENT_ENTRY_ID
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 70581
Content-Type: application/msword

... doc contents here ...

Обновление метаданных и контента вложения

Ниже приведен пример одновременного обновления метаданных и содержимого вложения. Имя вложения будет изменено на «Новое название», а его содержимое будет заменено содержимым ZIP-файла. Поскольку запрос содержит новое содержимое файла, используется ссылка edit-media записи вложения.

Обратите внимание, что включение ETag для метаданных также обеспечивает неявное If-Match для медиаконтента, поскольку любое обновление медиаконтента приводит к изменению ETag метаданных.

PUT /feeds/media/content/domainName/siteName/ATTACHMENT_ENTRY_ID
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Type: multipart/related; boundary="END_OF_PART"
--END_OF_PART
Content-Type: application/atom+xml

<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="BxAaTxRZAyp7ImBq">
  <link rel="http://schemas.google.com/sites/2008#parent" type="application/atom+xml"
        href="https://sites.google.com/feeds/content/domainName/siteName/ATTACHMENT_ENTRY_ID"/>
  <title>New Title</title>
</entry>

--END_OF_PART
Content-Type: application/zip

... zip contents here ...

--END_OF_PART

Вернуться наверх



Удаление контента

Чтобы удалить элемент с сайта Google, сначала получите запись, а затем отправьте запрос DELETE на URL-адрес edit записи. Это тот же URL-адрес, который используется при обновлении метаданных элемента или содержимого HTML .

DELETE /feeds/content/domainName/siteName/ENTRY_ID
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
If-Match: <ETag or * here>

Если запись была успешно удалена, сервер отвечает HTTP 200 OK .

Если вы хотите быть уверенным, что не удалите запись, которая была изменена другим клиентом с момента ее получения, включите заголовок HTTP If-Match , содержащий значение ETag исходной записи. Вы можете определить значение ETag исходной записи, проверив атрибут gd:etag элемента <entry> .

Если вы хотите удалить запись независимо от того, обновил ли ее кто-то другой после того, как вы ее получили, используйте If-Match: * и не включайте ETag. (В этом случае вам не нужно получать запись перед ее удалением.)

Дополнительную информацию об ETags см. в справочном руководстве по API данных Google .

Вернуться наверх



Загрузка вложений

Если у вас есть запись вложения, вы можете загрузить файл, отправив аутентифицированный HTTP GET по ссылке <content> src записи. Пример ссылки на содержимое PDF-файла:

<content type="application/pdf"
  src="http://502377765-a-google-com-s-sites.googlegroups.com/feeds/media/content/domainName/siteName/678942036"/>

Вернуться наверх

ACL-канал

Обзор разрешений на общий доступ (ACL)

Каждая запись ACL в канале ACL представляет роль доступа определенного объекта: пользователя, группы пользователей, домена или доступа по умолчанию (то есть общедоступного сайта). Записи будут отображаться только для объектов с явным доступом: одна запись будет отображаться для каждого адреса электронной почты на панели «Люди с доступом» на экране общего доступа в пользовательском интерфейсе Сайтов Google. Таким образом, администраторы домена не будут показаны, даже если они имеют неявный доступ к сайту.

Роли

Элемент роли представляет уровень доступа, который может иметь сущность. Существует четыре возможных значения элемента gAcl:role :

  • reader — средство просмотра (эквивалентно доступу только для чтения).
  • писатель — соавтор (эквивалент доступа на чтение/запись).
  • владелец — обычно администратор сайта (эквивалент доступа на чтение/запись).

Области применения

Элемент области представляет объект, имеющий этот уровень доступа. Существует пять возможных типов элемента gAcl:scope :

  • user — значение адреса электронной почты, например «user@gmail.com».
  • группа — адрес электронной почты группы Google, например «group@domain.com».
  • Домен — доменное имя G Suite, например «domain.com».
  • приглашение — пользователь, который был приглашен на сайт, но еще не добавлен в ACL сайта. (Недоступно, если указан gdata 1.3 или ниже.)
  • default — существует только одна возможная область типа «default», которая не имеет значения (например <gAcl:scope type="default"> ). Эта конкретная область контролирует доступ, который любой пользователь имеет по умолчанию на общедоступном сайте.

Примечание . Домены не могут иметь значение gAcl:role установленное на доступ «владелец», они могут быть только читателями или писателями.

О сфере «приглашения».

API возвращает область приглашения, когда вы добавляете в список управления доступом одного или нескольких пользователей, у которых еще нет учетной записи Google. API возвращает URL-адрес со встроенным токеном, который вы должны предоставить приглашенным пользователям, чтобы они могли принять приглашение.

Этот метод приглашения позволяет вам приглашать пользователей, не являющихся пользователями Google, без предварительного знания того, какой адрес электронной почты они хотят использовать. Пока пользователи нажимают на URL-адрес приглашения со встроенным токеном, они могут подписаться на доступ, используя любой адрес электронной почты, который они хотят. Кроме того, несколько пользователей потенциально могут использовать этот URL-адрес для принятия приглашения, поэтому это может быть полезно при приглашении одного пользователя или группы пользователей.

Примечание. Область «приглашение» доступна только в gdata версии 1.4 и выше. Это не будет работать, если вы явно укажете версию 1.3 или ниже.

Получение канала ACL

Канал ACL можно использовать для управления разрешениями на общий доступ к сайту, и он доступен через следующий URI:

https://sites.google.com/feeds/acl/site/domainName/siteName
Параметр подачи Описание
domainName « site » или домен вашего домена, размещенного в G Suite (например, example.com ).
siteName Имя веб-пространства вашего сайта; находится в URL-адресе Сайта (например, myCoolSite ).

Стоит отметить, что каждая запись в ленте сайта содержит ссылку на эту ленту:

 <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName"/>

Чтобы получить разрешения на общий доступ к сайту, отправьте HTTP GET на URI канала ACL:

GET /feeds/acl/site/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

Сервер ответит 200 OK и потоком записей ACL:

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
    xmlns:gAcl="http://schemas.google.com/acl/2007" xmlns:sites="http://schemas.google.com/sites/2008"
    xmlns:gs="http://schemas.google.com/spreadsheets/2006" xmlns:dc="http://purl.org/dc/terms"
    xmlns:batch="http://schemas.google.com/gdata/batch" xmlns:gd="http://schemas.google.com/g/2005"
    xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>https://sites.google.com/feeds/acl/site/domainName/siteName</id>
<updated>2009-12-03T22:01:05.963Z</updated>
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/acl/2007#accessRule"/>
<title>Acl</title>
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"
    href="https://sites.google.com/feeds/acl/site/domainName/siteName"/>
<link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml"
    href="https://sites.google.com/feeds/acl/site/domainName/siteName"/>
<link rel="self" type="application/atom+xml"
    href="https://sites.google.com/feeds/acl/site/domainName/siteName"/>
<generator version="1" uri="http://sites.google.com">Google Sites</generator>
<openSearch:startIndex>1</openSearch:startIndex>
<entry>
  <id>https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserA%40gmail.com</id>
  <updated>2009-12-03T22:01:05.963Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-03T22:01:05.963Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/acl/2007#accessRule"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserA%40google.com"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserA%40google.com"/>
  <gAcl:scope type="user" value="userA@google.com"/>
  <gAcl:role value="owner"/>
</entry>
<entry>
  <id>https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserB%40gmail.com</id>
  <updated>2009-12-03T22:01:05.963Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-03T22:01:05.963Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/acl/2007#accessRule"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserB%40gmail.com"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserB%40gmail.com"/>
  <gAcl:scope type="user" value="userB@gmail.com"/>
  <gAcl:role value="writer"/>
</entry>
<entry>
  <id>https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserC%40gmail.com</id>
  <updated>2009-12-03T22:01:05.963Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-03T22:01:05.963Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/acl/2007#accessRule"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserC%40gmail.com"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserC%40gmail.com"/>
  <gAcl:scope type="user" value="userC@gmail.com"/>
  <gAcl:role value="reader"/>
</entry>
...
</feed>

Вернуться наверх

Совместное использование сайта

Канал ACL принимает запросы GET , POST и PUT . Чтобы вставить новую роль в канал ACL, просто отправьте запрос POST к каналу ACL сайта.

Примечание . Некоторые списки управления доступом могут быть возможны только в том случае, если домен настроен на разрешение таких разрешений (например, если включен общий доступ за пределами домена для доменов G Suite и т. д.).

В этом примере на сайт добавляется новый соавтор (писатель):

POST /feeds/acl/site/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gAcl='http://schemas.google.com/acl/2007'>
  <category scheme='http://schemas.google.com/g/2005#kind'
    term='http://schemas.google.com/acl/2007#accessRule'/>
  <gAcl:role value='writer'/>
  <gAcl:scope type='user' value='new_writer@example.com'/>
</entry>

Сообщение 201 Created и новая запись возвращаются при успешной вставке:

<entry>
  <id>https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_writer%40example.com</id>
  <updated>2009-12-03T22:01:05.963Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-03T22:01:05.963Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/acl/2007#accessRule"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_writer%40example.com"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_writer%40example.com"/>
  <gAcl:role value='writer'/>
  <gAcl:scope type='user' value='new_writer@example.com'/>
</entry>

Приглашение пользователей через область «пригласить»

Если вы добавляете пользователей, у которых нет учетных записей Google, API возвращает URL-адрес, который вы должны предоставить пользователям, которых хотите пригласить. Нажав на URL-адрес, они смогут получить доступ к сайту, войдя в систему с существующей учетной записью или создав новую.

Успешное приглашение возвращает 201 Created и новую запись, содержащую URL-адрес, который вы должны передать пользователю:

<entry>
  <id>https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_invite%40example.com</id>
  <updated>2009-12-03T22:01:05.963Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-03T22:01:05.963Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/acl/2007#accessRule"/>
  <link rel="http://schemas.google.com/sites/2008#invite" type="text/html"href="domainName/siteName?invite=inviteToken"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_invite%40example.com"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_invite%40example.com"/>
  <gAcl:role value='writer'/>
  <gAcl:scope type='invite' value='new_invite%40example.com'/>
</entry>

Совместное использование на уровне группы и домена

Подобно совместному использованию сайта с одним пользователем , вы можете поделиться сайтом с группой Google или доменом G Suite. Необходимые значения scope перечислены ниже.

Публикация на адрес электронной почты группы:

<gAcl:scope type="group" value="group@example.com"/>

Публикация на весь домен:

<gAcl:scope type="domain" value="example.com"/>

Общий доступ на уровне домена поддерживается только для доменов G Suite и только для домена, в котором размещен сайт. Например, http://sites.google.com/a/domain1.com/siteA может совместно использовать весь сайт только с доменом 1.com, а не с доменом 2.com. Сайты, которые не размещены в домене G Suite (например, http://sites.google.com/site/siteB), не могут приглашать домены.

Изменение разрешений на общий доступ

Чтобы обновить запись ACL, измените ее при необходимости и выдайте HTTP-запрос PUT к ссылке edit записи, которая представляет собой просто элемент <link> , атрибут rel которого имеет значение «edit». В предыдущем примере эта ссылка выглядит так:

<link rel='edit' type='application/atom+xml'
    href='https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_writer%40example.com'/>

В приведенном ниже фрагменте роль new_writer@gmail.com меняется на «читатель»:

PUT /feeds/acl/site/domainName/siteName/user%3Anew_writer%40example.com HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gAcl='http://schemas.google.com/acl/2007'>
  <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/acl/2007#accessRule'/>
  <gAcl:role value='reader'/>
  <gAcl:scope type='user' value='new_writer@gmail.com'/>
</entry>

Удаление разрешений на общий доступ

Чтобы удалить разрешения для этого пользователя, отправьте запрос DELETE на ту же ссылку edit , которая использовалась для запроса PUT :

DELETE /feeds/acl/site/domainName/siteName/user%3Anew_writer%40example.com HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

Сервер ответит 200 OK .

Вернуться наверх

Специальные темы

Повторное получение ленты или записи

Если вы хотите получить ранее полученный канал или запись, вы можете повысить эффективность , указав серверу отправлять список или запись только в том случае, если они изменились с момента последнего получения.

Чтобы выполнить такой условный поиск, отправьте запрос HTTP GET , который включает заголовок HTTP If-None-Match . В заголовке укажите ETag списка или записи, который можно найти в атрибуте gd:etag элемента <feed> или элемента <entry> .

Пример использования фида сайта:

GET /feeds/site/domainName/myOtherTestSite/
GData-Version: 1.4
If-None-Match: W/"Ck8GQXk7fil7ImA9WxNSFk0."

Когда сервер получает этот запрос, он проверяет, имеет ли запрошенный вами элемент тот же ETag, что и указанный вами ETag. Если ETags совпадают, то элемент не изменился, и сервер возвращает либо код состояния HTTP 304 Not Modified , либо код состояния HTTP 412 Precodition Failed . Оба этих кода состояния указывают на то, что элемент, который вы уже получили, актуален.

Если ETags не совпадают, значит, элемент был изменен с момента последнего запроса, и сервер возвращает элемент.

Дополнительную информацию об ETags см. в справочном руководстве по API данных Google .

Пакетная обработка

Пакетные запросы дают вашему клиенту возможность выполнять несколько операций в одном запросе, а не отправлять каждую операцию по отдельности.

Сервер выполнит как можно больше запрошенных изменений и вернет информацию о состоянии, которую вы можете использовать для оценки успеха или неудачи каждой операции. Дополнительные сведения о пакетной обработке в API данных Google см. в разделе Пакетная обработка с помощью API данных Google.

Каждая операция в пакетном фиде имеет элемент <id> , за исключением операций вставки. Этот элемент аналогичен URL-адресу запроса, который вы обычно используете при обновлении, удалении или запросе канала контента. Например, если вы обновляете редактирование, установите <id> для ссылки edit соответствующей записи. Он используется для идентификации целевой записи. Новые записи не содержат элементов <id> , поскольку они еще не созданы. Вместо этого вы можете определить строковое значение в <batch:id> , которое будет возвращено в ответе сервера и использовано для поиска соответствующей записи.

Чтобы сделать пакетный запрос, создайте пакетный канал и отправьте HTTP POST на пакетную ссылку канала:

<link rel="http://schemas.google.com/g/2005#batch" type="application/atom+xml"
    href="https://sites.google.com/feeds/content/site/siteName/batch"/>

В приведенном ниже примере показано, как запросить, вставить, обновить и удалить запись веб-страницы:

POST /feeds/content/site/siteName/batch HTTP/1.1
Host: sites.google.com
Accept: */*
If-Match: *
GData-Version: 1.4
Authorization: <your authorization header here>

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:sites="http://schemas.google.com/sites/2008"
      xmlns:gd="http://schemas.google.com/g/2005" xmlns:batch='http://schemas.google.com/gdata/batch'>
  <entry>
    <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID1</id>
    <batch:operation type="query"/>
  </entry>
  <entry>
    <batch:id>1</batch:id>
    <batch:operation type='insert'/>
    <category scheme="http://schemas.google.com/g/2005#kind"
        term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
    <title>New Webpage1</title>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">HTML body goes here</div>
    </content>
  </entry>
  <entry gd:etag="&quot;YDgpeyI.&quot;">
    <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID2</id>
    <batch:operation type='update'/>
    <category scheme="http://schemas.google.com/g/2005#kind"
        term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
    <title>Updated Title for Webpage2</title>
    ...
    <batch:operaation type="update"/>
  </entry>
  <entry gd:etag="&quot;YassseyI.&quot;">
    <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID3</id>
    <batch:operation type='delete'/>
  </entry>
</feed>

Возвращенный фид будет содержать одну запись результата для каждой операции:

 
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
    xmlns:sites="http://schemas.google.com/sites/2008" xmlns:gs="http://schemas.google.com/spreadsheets/2006"
    xmlns:dc="http://purl.org/dc/terms" xmlns:batch="http://schemas.google.com/gdata/batch"
    xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID1</id>
<updated>2009-11-10T22:44:08.369Z</updated>
<title>Batch Feed</title>
<entry gd:etag="&quot;YDgpsdfeyI.&quot;">
  <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID1</id>
  <published>2009-08-31T04:42:45.251Z</published>
  <updated>2009-10-25T22:46:13.729Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-25T22:46:13.671Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
  <title>Page Title</title>
  ...
  <batch:status code="200" reason="Success"/>
  <batch:operation type="query"/>
</entry>
<entry gd:etag="&quot;YDsseyI.&quot;">
  <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID4</id>
  <published>2009-11-10T22:44:08.531Z</published>
  <updated>2009-11-10T22:44:08.560Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-10T22:44:08.531Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
  <title>New Webpage1</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">
    <table cellspacing="0" class="sites-layout-name-one-column sites-layout-hbox">
      <tbody>
        <tr>
          <td class="sites-layout-tile sites-tile-name-content-1">
            <div>HTML body goes here</div>
          </td>
        </tr>
      </tbody>
    </table>
  </div>
</content>
...
<batch:id>1</batch:id>
<batch:status code="201" reason="Created"/>
<batch:operation type="insert"/>
</entry>
<entry gd:etag="&quot;YDkpeyI.&quot;">
  <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID2</id>
  <updated>2009-11-10T22:44:09.296Z</updated>
  <title>Updated Title for Webpage2</title>
  ...
  <sites:pageName>updated-title-for-webpage2</sites:pageName>
  <sites:revision>5</sites:revision>
  <batch:status code="200" reason="Success"/>
  <batch:operation type="update"/>
</entry>
<entry>
  <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID3</id>
  <title>Deleted</title>
  <content>Deleted</content>
  <batch:status code="200" reason="Success"/>
  <batch:operation type="delete"/>
</entry>
</feed>

Вернуться наверх