Классический API Google Sites позволяет вашим приложениям получать доступ к контенту на сайте Google , публиковать его и изменять. Кроме того, ваше приложение может запрашивать список последних действий, получать историю изменений, а также загружать/скачивать вложения и файлы.
Аудитория
В этом документе предполагается, что вы понимаете общие принципы работы протокола Google Data API .
Этот документ предназначен для программистов, которые хотят писать клиентские приложения, способные взаимодействовать с Google Sites. В нем представлен ряд примеров базового взаимодействия с API данных с использованием необработанного XML/HTTP, с пояснениями. После прочтения этого документа вы сможете узнать больше о взаимодействии с API с помощью наших клиентских библиотек , ознакомившись с примерами для конкретных языков программирования, которые находятся в других руководствах в левой боковой панели навигации.
Для ознакомления с материалами данного руководства см. справочное руководство .
Авторизация запросов
Когда ваше приложение запрашивает непубличные данные пользователя, оно должно включать токен авторизации. Этот токен также идентифицирует ваше приложение для Google.
О протоколах авторизации
Для авторизации запросов ваше приложение должно использовать OAuth 2.0 . Другие протоколы авторизации не поддерживаются. Если ваше приложение использует вход через Google , некоторые аспекты авторизации обрабатываются автоматически.
Авторизация запросов с использованием OAuth 2.0
Запросы к API данных Google Сайтов для получения непубличных данных пользователей должны быть авторизованы аутентифицированным пользователем.
Детали процесса авторизации, или «потока», для OAuth 2.0 несколько различаются в зависимости от типа разрабатываемого приложения. Следующий общий процесс применим ко всем типам приложений:
- При создании приложения вы регистрируете его через консоль Google API . Затем Google предоставляет информацию, которая понадобится вам позже, например, идентификатор клиента и секретный ключ клиента.
- Активируйте Google Sites Data API в консоли Google API. (Если API не отображается в консоли API, пропустите этот шаг.)
- Когда вашему приложению требуется доступ к пользовательским данным, оно запрашивает у Google определенный объем доступа.
- 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 с темой оформления «slate» в домене 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 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/"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 . Если этот параметр отсутствует, 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/"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 Data . Элементы, имеющие специфическое значение для классического 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> | Текущий номер редакции. |
Примеры запросов к контентным лентам
Вы можете осуществлять поиск по ленте контента, используя некоторые стандартные параметры запроса 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 можно использовать стандартный формат запроса Google Data /-/category :
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-адресам
По умолчанию, в предыдущем примере страница будет создана по адресу 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>, если присутствует. Должно удовлетворять условиямaz, AZ, 0-9, -, _. -
<atom:title>не должен быть пустым, если pageName отсутствует. Нормализация заключается в удалении пробелов и сворачивании их в '-', а также удалении символов, не соответствующихaz, AZ, 0-9, -, _.
Например, сервер примет запрос 'Custom_Page2'.
Создание подстраниц
Чтобы создать дочерние страницы (подстраницы) под родительской страницей, добавьте в новую запись Atom ссылку <link rel="http://schemas.google.com/sites/2008#parent"> . Установите атрибут ` href ссылки равным `self` родительской страницы.
В этом примере создается новое 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 Sites, 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 Sites.
Примечание : Вложения к веб-страницам можно создавать только в рамках файлового хранилища. Их нельзя загружать на страницы других типов.
В этом примере создается 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. (В этом случае вам не нужно получать запись перед её удалением.)
Для получения дополнительной информации об 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 Feed
Обзор разрешений на совместное использование (ACL)
Каждая запись ACL в ленте ACL представляет собой роль доступа определенного объекта: пользователя, группы пользователей, домена или доступа по умолчанию (общедоступный сайт). Записи будут отображаться только для объектов с явным доступом — одна запись будет отображаться для каждого адреса электронной почты на панели «Люди с доступом» на экране общего доступа в пользовательском интерфейсе Google Sites. Таким образом, администраторы домена не будут отображаться, даже если у них есть неявный доступ к сайту.
Роли
Элемент `role` представляет собой уровень доступа, которым может обладать сущность. Элемент gAcl:role может иметь четыре возможных значения:
- читатель — зритель (эквивалентно доступу только для чтения).
- писатель — соавтор (эквивалентно доступу на чтение/запись).
- Владелец — как правило, администратор сайта (эквивалентно праву на чтение/запись).
Области применения
Элемент scope представляет собой сущность, имеющую данный уровень доступа. Существует пять возможных типов элемента gAcl:scope :
- user — значение адреса электронной почты, например, "user@gmail.com".
- группа — это адрес электронной почты группы Google, например, "group@domain.com".
- домен — доменное имя G Suite, например, "domain.com".
- invite — пользователь, приглашенный на сайт, но еще не добавленный в список контроля доступа (ACL) для этого сайта. (Недоступно, если указана версия gdata 1.3 или ниже.)
- default — Существует только одна возможная область видимости типа "default", которая не имеет значения (например
<gAcl:scope type="default">). Эта конкретная область видимости контролирует доступ, который любой пользователь имеет по умолчанию на общедоступном сайте.
Примечание : для доменов нельзя установить значение gAcl:role со значением доступа "владелец", они могут иметь только права на чтение или запись.
О сфере действия функции «приглашение».
API возвращает область действия приглашения, когда вы добавляете в список контроля доступа (ACL) одного или нескольких пользователей, у которых еще нет учетной записи Google. API возвращает URL-адрес со встроенным токеном, который вы должны предоставить приглашенным пользователям, чтобы разрешить им принять приглашение.
Этот метод приглашения позволяет приглашать пользователей, не зарегистрированных в Google, без предварительного знания их адреса электронной почты. Пользователи, перейдя по ссылке с приглашением и встроенным токеном, могут зарегистрироваться для получения доступа, используя любой желаемый адрес электронной почты. Кроме того, несколько пользователей могут использовать эту ссылку для принятия приглашения, что может быть полезно при приглашении одного пользователя или группы пользователей.
Примечание: область действия "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 списка или записи, который можно найти в атрибуте gd:etag элемента <feed> или <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 . Оба этих кода состояния указывают на то, что полученный вами элемент актуален.
Если ETags не совпадают, значит, элемент был изменен с момента вашего последнего запроса, и сервер возвращает элемент.
Для получения дополнительной информации об ETags см. справочное руководство по API данных Google .
Пакетная обработка
Пакетные запросы позволяют вашему клиенту выполнять несколько операций в одном запросе, вместо того чтобы отправлять каждую операцию по отдельности.
Сервер выполнит максимально возможное количество запрошенных изменений и вернет информацию о состоянии, которую вы можете использовать для оценки успеха или неудачи каждой операции. Более подробную информацию о пакетной обработке в Google Data API см. в разделе «Пакетная обработка с помощью 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>