Классический Google Sites API позволяет приложениям получать доступ к контенту сайта Google, публиковать его и изменять. Кроме того, ваше приложение может запрашивать список недавних действий, получать историю изменений, а также загружать и скачивать прикрепленные файлы и файлы.
Аудитория
В этом документе предполагается, что вы знакомы с основными принципами работы протокола Google Data API.
Этот документ предназначен для программистов, которые хотят создавать клиентские приложения, взаимодействующие с Google Сайтами. В нем приведены примеры базовых взаимодействий с Data API с использованием необработанных XML/HTTP и объяснения к ним. После того как вы ознакомитесь с этим документом, вы можете узнать больше о взаимодействии с API с помощью наших клиентских библиотек, прочитав примеры для конкретных языков, приведенные в других руководствах на панели навигации слева.
Справочную информацию можно найти в руководстве по переносу.
Авторизация запросов
Когда ваше приложение запрашивает непубличные пользовательские данные, оно должно включать токен авторизации. который одновременно является идентификатором этого приложения для Google.
Протоколы авторизации
Для авторизации запросов ваше приложение должно использовать протокол OAuth 2.0. Другие протоколы авторизации не поддерживаются. Если в вашем приложении используется вход с аккаунтом Google, некоторые действия в рамках авторизации выполняются автоматически.
Авторизация запросов с помощью протокола OAuth 2.0
Для всех запросов к Google Sites Data API, связанных с непубличными пользовательскими данными, требуется авторизация от пользователя, прошедшего аутентификацию.
Особенности процесса авторизации с помощью OAuth 2.0 зависят от типа приложения. В общих чертах процедура выглядит так:
- Сначала приложение нужно зарегистрировать через Google API Console. В результате вы получите информацию, которая понадобится вам позже, например идентификатор и секретный код клиента.
- Вы активируете Google Sites Data API в Google API Console. Если такого API в консоли нет, пропустите этот шаг.
- Если приложению требуются пользовательские данные, оно запрашивает у Google нужную область доступа.
- Google показывает пользователю окно запроса доступа с предложением авторизовать приложение для запроса этих данных.
- Если пользователь соглашается, Google предоставляет приложению токен доступа с коротким сроком действия.
- Ваше приложение запрашивает пользовательские данные, указывая токен доступа.
- Получив действительный запрос и токен, Google отправляет необходимые данные.
Иногда процесс может включать дополнительные этапы, например использование токенов обновления для получения новых токенов доступа. Подробную информацию о процедуре для приложений различных типов можно найти в документации по OAuth 2.0.
Информация об области действия OAuth 2.0 для Google Sites Data API:
https://sites.google.com/feeds/
Чтобы запросить доступ по протоколу OAuth 2.0, приложению нужна информация об области доступа, а также данные, которые Google предоставляет при регистрации приложения (например, идентификатор или секретный ключ клиента).
Как указать версию
Каждый запрос к Google Sites Data API должен содержать версию 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/"CkUAQH4_eil7I2A9WxNaFk4.""> <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/"DkQGQHczfA9WxNaFk4.""> <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/"DEECR38l7I2A9WxNaF0Q."">
<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 Сайтов установлен флажок "Опубликовать этот сайт как шаблон".
- Вы можете скопировать сайт из другого домена, если являетесь владельцем исходного сайта.
обновление метаданных сайта;
Чтобы изменить заголовок или краткое описание сайта, отправьте 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/"DEECR38l7I2A9WxNaF0Q.""> <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/"DEECR38l7I2A9WxNaF0Q.""> <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/"DEECR38l7I2A9WxNaF0Q.""> <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/"DkQGQHczfA9WxNaFk4.""> <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. Если параметр отсутствует, значение webAddressMappings не будет возвращаться в записях сайта (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/"DkQGQHczfA9WxNaFk4.""> <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/"CU4GQ3szfSl7ImA9WxNRFUg.""> <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/"CU8DQn45fyl7ImA9WxNRFUg.""> <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/"CU8AR3s4cSl7ImA9WxNRFUg.""> <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/"CU4GQmA9WxNRFUg.""> <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&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/"CU8DQ388eSl7ImA9WxNRFUg.""> <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&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/"Ck8GQXk7fil7ImA9WxNSFk0.""> <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/"CkMBQH08fCl7ImA9WxNSFk0.""> <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/"AkYHQ3ozcCl7ImA9WxJaE08.""> <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.
Ниже описаны элементы, которые имеют определенное значение для Sites API классических сайтов. У некоторых объектов типа kind есть дополнительные свойства (не перечисленные ниже), а у других их нет. Например, запись 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> | Текущий номер версии. |
Примеры запросов к фиду контента
Вы можете искать контент в фиде, используя некоторые стандартные параметры запроса Google Data API и параметры, относящиеся к классическому Sites API. Более подробную информацию и полный список поддерживаемых параметров можно найти в Справочном руководстве.
Как получить определенные типы записей
Чтобы получить только определенный тип записи, используйте параметр kind. В этом примере возвращаются только записи webpage:
GET /feeds/content/domainName/siteName?kind=webpage
Чтобы вернуть несколько типов записей, разделите их kind запятыми. В этом примере возвращаются записи filecabinet и
listpage:
GET /feeds/content/domainName/siteName?kind=filecabinet,listpage
Вместо параметра kind можно использовать стандартный формат запроса /-/category к данным Google:
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 страницы сервер использует следующие правила приоритета:
<sites:pageName>, если есть. Должно соответствоватьa-z, A-Z, 0-9, -, _.<atom:title>– не может быть пустым, если не указан параметр pageName. Нормализация заключается в том, чтобы удалить лишние пробелы и заменить их на дефисы, а также удалить символы, не соответствующие регулярному выражениюa-z, A-Z, 0-9, -, _.
Например, сервер примет значение Custom_Page2.
Как создавать подстраницы
Чтобы создать подстраницы (дочерние страницы) для родительской страницы, добавьте в новую запись Atom элемент <link rel="http://schemas.google.com/sites/2008#parent">. Установите для атрибута 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 и 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-файл" и описанием "Пакет документов для отдела кадров" (необязательно).
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.
Его название и описание (необязательно) – "GoogleLogo" и "nice colors" соответственно.
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 multipart.
Чтобы подтвердить, что ваше обновление не перезаписывает изменения другого клиента, укажите значение ETag исходной записи. Для этого укажите значение ETag в заголовке HTTP If-Match или добавьте атрибут gd:etag исходной записи в обновленную запись. Чтобы определить значение ETag исходной записи, изучите атрибут gd:etag элемента <entry>.
Для записей медиаконтента тег ETag может быть доступен в атрибуте gd:etag ссылки edit-media.
Если вы хотите обновить запись независимо от того, изменил ли ее кто-то после того, как вы ее получили, используйте метод If-Match: * и не включайте заголовок ETag. Дополнительную информацию о тегах ETag можно найти в справочном руководстве по Google Data API.
обновление метаданных или 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/"CEEBRn0ymA9WxJWEUw.""> <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="Description"/> <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. В этом случае вам не нужно получать запись перед ее удалением.
Подробнее о тегах ETag…
Как скачать прикрепленные файлы
После того как вы получите запись о прикрепленном файле, вы сможете скачать его, отправив аутентифицированный 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 представляет роль доступа определенного объекта: пользователя, группы пользователей, домена или доступа по умолчанию (общедоступного сайта). Записи будут показываться только для объектов с явным доступом – по одной записи для каждого адреса электронной почты на панели "Пользователи с доступом" на экране предоставления доступа в интерфейсе Google Сайтов. Поэтому администраторы домена не будут показаны, даже если у них есть неявный доступ к сайту.
Роли
Элемент role представляет уровень доступа, который может быть у объекта. Элемент gAcl:role может принимать четыре значения:
- Читатель – пользователь с правами просмотра (эквивалент доступа только для чтения).
- writer – соавтор (эквивалент доступа для чтения и записи).
- Владелец – обычно администратор сайта (эквивалентно доступу на чтение и запись).
Области действия
Элемент области действия представляет объект, которому назначен этот уровень доступа. Существует пять возможных типов элемента gAcl:scope:
- user – значение адреса электронной почты, например user@gmail.com.
- group – адрес электронной почты группы Google, например group@domain.com.
- domain – доменное имя G Suite, например "domain.com".
- invite – пользователь, которому отправлено приглашение на сайт, но который ещё не добавлен в список контроля доступа для сайта. (Недоступно, если указана версия gdata 1.3 или более ранняя.)
- default – существует только одна область типа "default", у которой нет значения (например,
<gAcl:scope type="default">). Эта область определяет доступ, который по умолчанию есть у любого пользователя на общедоступном сайте.
Примечание. Для доменов нельзя задать значение gAcl:role "владелец". Доступ может быть только для чтения или записи.
Об области действия "invite"
API возвращает область приглашения, когда вы добавляете в список контроля доступа одного или нескольких пользователей, у которых ещё нет аккаунта Google. API возвращает URL со встроенным токеном, который необходимо предоставить приглашенным пользователям, чтобы они могли принять приглашение.
Этот способ позволяет приглашать пользователей, у которых нет аккаунта Google, не зная, какой адрес электронной почты они хотят использовать. Пока пользователи нажимают на URL приглашения со встроенным токеном, они могут зарегистрироваться, используя любой адрес электронной почты. Кроме того, несколько пользователей могут принять приглашение, используя этот URL, поэтому он может быть полезен, если вы приглашаете одного пользователя или группу пользователей.
Примечание. Область действия "invite" доступна только в 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 сайта.
Примечание. Некоторые 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 можно предоставить только домену domain1.com, но не domain2.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 списка или записи, который можно найти в элементе <feed> или атрибуте gd:etag элемента <entry>.
Пример использования фида сайта:
GET /feeds/site/domainName/myOtherTestSite/ GData-Version: 1.4 If-None-Match: W/"Ck8GQXk7fil7ImA9WxNSFk0."
Когда сервер получает этот запрос, он проверяет, совпадает ли ETag запрошенного объекта с ETag, который вы указали. Если теги ETag совпадают, значит объект не изменился, и сервер возвращает код статуса HTTP 304 Not Modified или код статуса HTTP 412 Precodition Failed. Оба этих кода статуса указывают на то, что полученный вами объект актуален.
Если теги ETag не совпадают, значит объект был изменен с момента последнего запроса, и сервер возвращает объект.
Подробнее о тегах ETag…
Пакетная обработка
Пакетные запросы позволяют клиенту выполнять несколько операций в одном запросе, а не отправлять каждый запрос отдельно.
Сервер выполнит как можно больше запрошенных изменений и вернет информацию о статусе, которую можно использовать для оценки успешности или неудачности каждой операции. Подробнее о пакетной обработке в Google Data API можно узнать из этой статьи.
Каждая операция в пакетном фиде, кроме операций вставки, содержит элемент <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=""YDgpeyI.""> <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=""YassseyI.""> <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=""YDgpsdfeyI."">
<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=""YDsseyI."">
<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=""YDkpeyI."">
<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>