A rebuilt version of Sites was launched on November 22, 2016. The Sites API cannot access or modify Sites made with this version, but can still access classic Sites.

Guia de protocolo

Com a API Google Sites clássica, seus apps podem acessar, publicar e modificar o conteúdo de um site Google. Além disso, o aplicativo pode solicitar uma lista das atividades recentes, buscar o histórico de revisões e fazer upload/download de anexos e arquivos.

Público-alvo

Neste documento, presumimos que você entenda as ideias gerais por trás do protocolo das APIs de dados do Google.

Este documento é destinado a programadores que desejam criar aplicativos clientes que possam interagir com o Google Sites. Ele fornece uma série de exemplos de interações básicas da API de dados usando XML/HTTP bruto, com explicações. Depois de ler este documento, você pode saber mais sobre como interagir com a API usando nossas bibliotecas de cliente lendo os exemplos específicos de linguagem encontrados nos outros guias na barra de navegação à esquerda.

Para ver uma referência do material neste guia, consulte o guia de referência.

Como autorizar solicitações

Quando seu aplicativo solicita dados do usuário não públicos, ele precisa incluir um token de autorização. O token também identifica o aplicativo para o Google.

Sobre os protocolos de autorização

O aplicativo deve obrigatoriamente usar o OAuth 2.0 para autorizar solicitações. Não há outros protocolos de autorização compatíveis. Se o aplicativo usa o Fazer login com o Google, alguns aspectos da autorização são administrados para você.

Autorizar solicitações com OAuth 2.0

As solicitações à API Google Sites Data para dados de usuários não públicos precisam ser autorizadas por um usuário autenticado.

Os detalhes do processo de autorização ou “fluxo” para o OAuth 2.0 variam um pouco, dependendo do tipo de aplicativo que você está criando. O processo geral a seguir se aplica a todos os tipos de aplicativo:

  1. Ao criar seu aplicativo, registre-o usando o Console de APIs do Google. Em seguida, o Google fornece informações que serão necessárias mais tarde, como uma chave secreta e um ID do cliente.
  2. Ative a API Google Sites Data no Console de APIs do Google. Se ela não estiver no Console de APIs, pule essa etapa.
  3. Quando seu aplicativo precisar de acesso aos dados do usuário, ele solicitará ao Google um determinado escopo do acesso.
  4. O Google exibe uma tela de consentimento para o usuário, pedindo para que o aplicativo seja autorizado a solicitar alguns dos dados dele.
  5. Se o usuário aprovar, o Google fornecerá ao aplicativo um token de acesso de curta duração.
  6. O aplicativo solicita dados de usuário, anexando o token de acesso à solicitação.
  7. Se o Google determinar que a solicitação e o token são válidos, ele retornará os dados solicitados.

Alguns fluxos incluem etapas adicionais, como atualizar tokens para adquirir novos tokens de acesso. Para ver informações detalhadas sobre fluxos de vários tipos de aplicativos, consulte a documentação do OAuth 2.0 do Google.

Veja as informações de escopo do OAuth 2.0 para a API de dados do Google Sites:

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

Para solicitar acesso usando o OAuth 2.0, você precisa das informações do escopo, bem como as fornecidas pelo Google durante o registro do aplicativo, como o ID e a chave secreta do cliente.

Voltar ao início

Como especificar uma versão

Todas as solicitações para a API de dados do Google Sites devem especificar a versão 1.4. Para especificar um número de versão, use o cabeçalho HTTP GData-Version:

GData-Version: 1.4

Como alternativa, se não for possível definir cabeçalhos HTTP, especifique v=1.4 como um parâmetro de consulta no URL. É recomendável usar o cabeçalho HTTP sempre que possível.

Observação: as bibliotecas de cliente fornecem os cabeçalhos de versão apropriados automaticamente. Portanto, não use o parâmetro de consulta v=1.4 ao usar uma biblioteca de cliente.

Voltar ao início

Feed do site

O feed pode ser usado para listar os sites Google de que um usuário é proprietário ou tem permissões de visualização e modificar o título de um site existente. Para domínios do G Suite, ele também pode ser usado para criar ou copiar um site inteiro.

Como listar sites

Para listar os sites a que um usuário tem acesso, envie uma solicitação GET autenticada para o seguinte URL:

https://sites.google.com/feeds/site/domainName
Parâmetro do feedDescrição
domainName"site" ou o domínio do seu domínio hospedado do G Suite (por exemplo, example.com).

A resposta incluirá um feed com uma lista de sites:

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

HTTP/1.1 200 OK

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

Os sites são listados em ordem alfabética.

Criar novos sites

Observação: esse recurso só está disponível nos domínios do G Suite.

É possível provisionar novos sites criando um POST HTTP para o feed de sites, por exemplo:

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>

A solicitação acima criaria um novo site Google com o tema "barreira" no domínio example.com do G Suite. O URL do site seria http://sites.google.com/a/example.com/site-de-origem/.

Se o site for criado, o servidor vai responder com 201 Created. A entrada da resposta conterá elementos adicionados pelo servidor, como um link para o site, um link para o feed de ACL do site, o nome, o título e o resumo do site.

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

Copiar um site

Observação: esse recurso só está disponível nos domínios do G Suite.

Os sites existentes podem ser duplicados da mesma forma que criar um novo site. No entanto, na entrada Atom da solicitação POST, inclua um <link> com rel='source' apontando para o feed do site a ser copiado. Qualquer site que tenha sido copiado terá esse link. Veja um exemplo de como duplicar um site:

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>

A solicitação acima copiaria o site em http://sites.google.com/a/example.com/site-de-origem/.

Pontos importantes:

  • Só é possível copiar sites e modelos de site de propriedade do usuário autenticado.
  • Também é possível copiar um modelo de site. Um site será um modelo se a configuração "Publicar este site como modelo" estiver marcada na página de configurações do Google Sites.
  • Você pode copiar um site de outro domínio, desde que esteja listado como proprietário no site de origem.

Como atualizar metadados de um site

Para atualizar o título ou o resumo de um site, envie um PUT HTTP para o link edit de uma entrada do site. O exemplo a seguir atualiza o título do site anterior para New Test Site2 e a descrição dele para Newer description.

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

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

Como adicionar categorias

Observação: esse recurso só está disponível nos domínios do G Suite.

Os sites do G Suite para seu domínio incluem metadados de categoria úteis para categorizar sites no seu domínio. Para adicionar ou atualizar metadados de categoria, envie um PUT HTTP para o link edit da entrada do seu site que inclua uma tag category. Veja a linha em negrito no exemplo a seguir:

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

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

Este exemplo edita um site existente e adiciona a categoria "Site da equipe".

Você também pode adicionar várias categorias adicionando outras tags <category>. Veja as linhas em negrito no exemplo a seguir:

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

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

Este exemplo adiciona duas categorias: "Site da equipe" e "Departamento jurídico"

Mapeamentos de endereços da Web

Com os mapeamentos de endereços da Web, os usuários do Sites podem mapear os próprios domínios para um site Google. Por exemplo, http://www.mydomainsite.com pode ser usado em vez de http://sites.google.com/a/domain.com/mysite. Dependendo do local em que seu site está hospedado, é possível modificar manualmente os mapeamentos de endereços da Web de um site. Consulte nosso artigo da Central de Ajuda para mais informações.

Buscando mapeamentos de endereços da Web de um site

Para retornar os mapeamentos de endereços da Web de um site, busque o feed/a entrada do site com o parâmetro with-mappings=true:

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

HTTP/1.1 200 OK

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

Os mapeamentos existentes serão exibidos como links com rel='webAddressMapping'. Por exemplo, no exemplo acima, há três webAddressMappings que apontam para o site http://sites.google.com/site/myOtherTestSite.

Como modificar mapeamentos de endereços da web

Observação: todas as operações GET/POST/PUT precisam especificar o parâmetro with-mappings=true ao trabalhar com mapeamentos de endereços da Web. Se o parâmetro estiver ausente, webAddressMappings não serão retornados nas entradas do site (GET) ou considerados ao atualizar/remover mapeamentos (PUT) de uma entrada.

Para adicionar, atualizar ou excluir um mapeamento, basta especificar, alterar ou remover esse link ao criar novos sites ou atualizar os metadados de um site. O parâmetro with-mappings=true precisa ser incluído no URI do feed do site. Observação: para atualizar os mapeamentos de endereço, você precisa ser um administrador do site ou do domínio no caso de um site hospedado no G Suite.

Por exemplo, a solicitação abaixo atualiza o mapeamento http://www.mysitemapping.com para http://www.my-new-sitemapping.com e remove o http://www.mysitemapping2.com deixando o link fora da entrada:

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

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

Os mapeamentos de endereços da Web também podem ser especificados no momento da criação/cópia de um site.

Voltar ao início

Feed de atividades

Você pode buscar a atividade recente (alterações) de um site buscando o feed de atividades. Cada entrada no feed de atividades contém informações sobre uma mudança feita no site.

Para consultar o feed de atividades, envie um GET HTTP ao URL do feed:

https://sites.google.com/feeds/activity/domainName/siteName
Parâmetro do feedDescrição
domainName"site" ou o domínio do seu domínio hospedado do G Suite (por exemplo, example.com).
siteNameO nome do espaço do site, encontrado no URL do site (por exemplo, myCoolSite).

Exemplo de solicitação e resposta:

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

HTTP/1.1 200 OK

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

Observação: para acessar esse feed, você precisa ser colaborador ou proprietário do site. Seu cliente precisa enviar o cabeçalho Authorization correto e referenciar o token em Como autorizar solicitações.

Voltar ao início

Feed de revisão

Para buscar o histórico de revisões de qualquer entrada de conteúdo, envie um GET HTTP para o link de revisão da entrada:

https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID
Parâmetro do feedDescrição
domainName"site" ou o domínio do seu domínio hospedado do G Suite (por exemplo, example.com).
siteNameO nome do espaço do site, encontrado no URL do site (por exemplo, myCoolSite).

Para encontrar o link de revisões de uma determinada página/comentário/anexo/listadeitens, primeiro recupere a entrada do feed de conteúdo usando o respectivo CONTENT_ENTRY_ID. A entrada recuperada conterá um <atom:link> para o feed de revisão. Exemplo:

<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"/>

Exemplo de solicitação e resposta:

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

HTTP/1.1 200 OK

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

Observação: para acessar esse feed, você precisa ser colaborador ou proprietário do site. Seu cliente precisa enviar o cabeçalho Authorization correto e referenciar o token em Como autorizar solicitações.

Voltar ao início

Feed de conteúdo

Como recuperar conteúdo

O feed de conteúdo lista o conteúdo atual de um site. Envie uma solicitação GET autenticada para o seguinte URL:

https://sites.google.com/feeds/content/domainName/siteName
Parâmetro do feedDescrição
domainName"site" ou o domínio do seu domínio hospedado do G Suite (por exemplo, example.com).
siteNameO nome do espaço do site, encontrado no URL do site (por exemplo, myCoolSite).

O resultado é um feed que lista a primeira página das entradas de conteúdo do site. Cada entrada no feed representará um tipo diferente de entrada de conteúdo, como webpage, filecabinet, attachment, comment etc. O elemento <category scheme="http://schemas.google.com/g/2005#kind"> determina o tipo de entrada. Consulte o guia de referência para ver uma lista de valores compatíveis de kind.

Observação: este feed pode ou não exigir autenticação, dependendo das permissões de compartilhamento do site. Se o site não for público, seu cliente precisará enviar o cabeçalho Authorization correto (como mostrado no exemplo acima) e referenciar o token em Como autorizar solicitações.

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

HTTP/1.1 200 OK

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

Observação: esses são apenas os primeiros resultados. Para paginar todo o feed de conteúdo, siga o link "próximo" do feed:

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

Para ver uma explicação dos elementos comuns para o Atom, consulte a Referência do protocolo de dados do Google. Os elementos que contêm uma refeição específica para a API Sites clássica são descritos abaixo. Algumas entradas de tipo terão propriedades adicionais (não listadas abaixo), enquanto outras não. Por exemplo, uma entrada listitem pode ter elementos <gs:field>, enquanto uma entrada webpage não.

ElementoDescrição
<content ...>O texto interno é o corpo HTML da página. Para algumas entradas (por exemplo, anexos), esse elemento contém um atributo src apontando para o arquivo.
<link rel="alternate" ...>Link para a página ou o item no Google Sites.
<link rel="http://schemas.google.com/sites/2008#revision" ...>O atributo href aponta para o feed de revisão da entrada.
<link rel="http://schemas.google.com/sites/2008#parent" ...>O atributo href aponta para a entrada pai da entrada.
<link rel="http://schemas.google.com/sites/2008#template" ...>O atributo href aponta para a página de modelo da entrada.
<category scheme="http://schemas.google.com/g/2005#kind" ...>label é o tipo de entrada.
<category term="http://schemas.google.com/g/2005#template" ...>label=template, que indica a entrada é um modelo.
<gd:feedLink>O atributo href aponta para os filhos do pai da entrada.
<sites:pageName>Nome do espaço da Web da página. Corresponde ao nome no URL da página.
<sites:revision>Número da revisão atual.

Exemplos de consulta de feed de conteúdo

É possível pesquisar o feed de conteúdo usando alguns dos parâmetros de consulta padrão da API Google Data e outros específicos da API Sites clássica. Para informações mais detalhadas e uma lista completa de parâmetros compatíveis, consulte o Guia de referência.

Como recuperar tipos de entrada específicos

Para buscar apenas um tipo específico de entrada, use o parâmetro kind. Este exemplo retorna apenas entradas webpage:

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

Para retornar mais de um tipo de entrada, separe cada kind com um ','. Este exemplo retorna entradas filecabinet e listpage:

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

Como alternativa, é possível usar o formato padrão para uma consulta /-/category de dados do Google em vez do parâmetro kind:

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

Recuperar modelos de página

Este exemplo retorna somente template páginas:

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

Para retornar todos os tipos de entrada e incluir páginas template, use:

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

Como recuperar uma página por caminho

Se você sabe o caminho relativo de uma página no site Google, pode usar o parâmetro path para buscar essa página específica. Este exemplo retornaria a página localizada em http://sites.google.com/site/siteName/path/to/the/page:

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

Como recuperar todas as entradas em uma página pai

Se você souber o ID de uma página, poderá usar o parâmetro parent para buscar todas as entradas filhas (se houver):

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

Incluir rascunhos ou entradas excluídas

Para incluir entradas de rascunho ou excluídas, use os parâmetros include-drafts ou include-deleted, respectivamente. Este exemplo inclui entradas de rascunho no feed de conteúdo:

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

Pesquisa de texto completo

Para pesquisar todo o conteúdo de um site, use o parâmetro q e faça uma pesquisa de texto completo:

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

Voltar ao início



Criação de conteúdo

Novos conteúdos (páginas da Web, páginas de listas, páginas de arquivos, páginas de avisos etc.) podem ser criados enviando um POST HTTP ao feed de conteúdo:

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

Para ver uma lista de tipos de entrada compatíveis, consulte o parâmetro kind no Guia de referência.

Como criar novos itens / páginas

Este exemplo cria um novo webpage no nível superior do Site, inclui um XHTML para o corpo da página e define o título do cabeçalho como "New WebPage Title":

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>

Se for bem-sucedido, o servidor vai responder com um 201 Created e uma cópia da entrada.

Como criar itens/páginas em caminhos de URL personalizados

Por padrão, o exemplo anterior seria criado no URL http://sites.google.com/domainName/siteName/new-webpage-title e teria um título de página "Novo título da página da Web". Ou seja, a <atom:title> é normalizada para new-webpage-title no URL. Para personalizar o caminho do URL de uma página, defina o elemento <sites:pageName>.

Este exemplo cria um novo filecabinet com um cabeçalho de página de "File Storage", mas cria a página no URL http://sites.google.com/domainName/siteName/files especificando o elemento <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>

O servidor usa as seguintes regras de precedência para nomear o caminho do URL de uma página:

  1. <sites:pageName>, se houver. Precisa atender a a-z, A-Z, 0-9, -, _.
  2. <atom:title>, não pode ser nulo se pageName não estiver presente. A normalização é cortar + recolher o espaço em branco para "-" e remover caracteres que não correspondem a a-z, A-Z, 0-9, -, _.

Por exemplo, "Custom_Page2" seria aceito pelo servidor.

Como criar subpáginas

Para criar subpáginas (filhas) em uma página mãe, inclua um <link rel="http://schemas.google.com/sites/2008#parent"> na nova entrada Atom. Defina o atributo href do link como a self link da entrada pai.

Este exemplo cria um novo announcement com o título "aviso", em uma página de aviso pai com código de entrada PARENT_ENTRY_ID. O conteúdo XHTML para o corpo da página também é incluído:

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>

Modelos de página

Como criar modelos de página

O processo para criar um modelo de página é o mesmo que criar novos itens/páginas e criar subpáginas. A diferença é a adição de category com os termos e rótulos definidos como "http://schemas.google.com/g/2005#template" e "modelo", respectivamente.

Este exemplo cria um novo modelo 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>

Como criar páginas usando um modelo

Assim como na criação de modelos de página, é possível instanciar uma nova página a partir de um modelo, incluindo um <link> com rel='http://schemas.google.com/sites/2008#template' apontando para o link próprio de um modelo de página.

Este exemplo cria uma nova página filecabinet com base em um modelo de página atual que define um gabinete.

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>

Observação: mesmo que seja necessário definir um modelo na <category>, incluindo um na sua entrada ainda é necessário. Além disso, se você incluir um elemento <content>, ele será rejeitado pelo servidor.

Como fazer upload de arquivos

Assim como no Google Sites, a API permite que você faça upload de anexos para páginas de arquivo e páginas mãe.

Para fazer upload de um anexo para o pai, envie uma solicitação POST HTTP ao URL do feed de conteúdo:

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

O corpo da POST precisa ser uma solicitação MIME de várias partes para combinar o conteúdo do arquivo com um <atom:entry> que contenha os metadados do anexo. O <atom:entry> precisa fazer referência ao link automático da entrada pai para especificar onde o anexo será criado. Consulte Como criar subpáginas para ver mais informações.

Fazendo upload dos anexos

Veja um exemplo de upload de um arquivo PDF para um arquivo com ID PARENT_ENTRY_ID. O anexo será criado com o título "Arquivo PDF" e uma descrição (opcional) "Pacote de RH".

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--

Se o upload for concluído, o servidor vai responder com uma 201 Created e uma cópia da entrada de anexo recém-criada.

Como fazer upload de um anexo para uma pasta

Para fazer upload de um anexo para uma pasta existente de um filecabinet, inclua uma categoria com o atributo "term" definido como o nome da pasta:

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

Anexos da Web

Anexos da Web são tipos especiais de anexos. Basicamente, elas são links para outros arquivos na Web que podem ser adicionados às suas fichas de arquivos. Esse recurso é semelhante ao método de upload "Adicionar arquivo por URL" na IU do Google Sites.

Observação: os anexos da Web só podem ser criados em um arquivo. Elas não podem ser enviadas para outros tipos de página.

Este exemplo cria um webattachment no arquivo referenciado pelo ID FILECABINET_ENTRY_ID. O título e a descrição (opcional) estão definidos como "GoogleLogo" e "cores bonitas", respectivamente.

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>

O POST cria um link no arquivo que aponta para a imagem em "http://www.google.com/images/logo.gif".

Voltar ao início



Atualizando conteúdo

Os metadados (título, nome da página etc.) e o conteúdo de qualquer página podem ser editados com uma única solicitação PUT para o link edit. O corpo da solicitação precisa conter uma entrada Atom descrevendo a página atualizada. A exceção a essa regra é uma entrada de anexo, em que a entrada só pode ser usada para atualizar os metadados do anexo. Para alterar o conteúdo do arquivo anexado, basta incluir os dados brutos como o corpo de uma solicitação PUT ao link edit-media do anexo. Também é possível atualizar os metadados e o conteúdo do arquivo anexado de uma só vez usando uma solicitação MIME multipartes.

Para declarar que a atualização não substitui as alterações de outro cliente, inclua o valor da ETag da entrada original. Para fazer isso, forneça o valor da ETag em um cabeçalho If-Match HTTP ou inclua o atributo gd:etag da entrada original na entrada atualizada. Para determinar o valor da ETag da entrada original, examine o atributo gd:etag do elemento <entry>. Para entradas de mídia, a ETag da mídia pode estar disponível no atributo gd:etag do link edit-media.

Se você quiser atualizar a entrada independentemente de alguém tê-la atualizado desde a recuperação, use If-Match: * e não inclua a ETag. Para mais informações sobre ETags, consulte o Guia de referência de APIs de dados do Google.

Como atualizar metadados ou conteúdo HTML de um item

Para atualizar os metadados ou o conteúdo HTML de uma entrada, envie um PUT HTTP para o link edit dela.

Veja a seguir um exemplo de atualização de uma entrada listpage (representada pelo ID ENTRY_ID) com as seguintes mudanças:

  • O título foi modificado para "Conteúdo atualizado"
  • Conteúdo HTML atualizado
  • O primeiro título da coluna na lista foi atualizado para "Proprietário".
  • O caminho do URL da página é modificado pelo elemento <sites:pageName>.
PUT /feeds/content/domainName/siteName/ENTRY_ID
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 816
Content-Type: application/atom+xml

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

Observação: a entrada (conforme retornado pelo servidor) terá mais elementos do que o exemplo acima.

Substituir o conteúdo de um anexo

Veja abaixo um exemplo para substituir o conteúdo de um anexo, mas sem alterar os metadados dele. Como a solicitação contém novo conteúdo, o link edit-media da entrada de anexo é usado.

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 ...

Atualizar metadados e conteúdo do anexo

Veja abaixo um exemplo de atualização dos metadados e do conteúdo de um anexo ao mesmo tempo. O nome dos anexos será atualizado para "Novo título", e o conteúdo dele será substituído pelo conteúdo de um arquivo ZIP. Como a solicitação contém um novo conteúdo do arquivo, é usado o link edit-media da entrada de anexo.

A inclusão da ETag para os metadados fornece uma If-Match implícita para o conteúdo de mídia, já que qualquer atualização no conteúdo de mídia faz com que a ETag dos metadados mude.

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

Voltar ao início



Exclusão de conteúdo

Para remover um item de um site Google, primeiro recupere a entrada e envie uma solicitação DELETE ao URL edit da entrada. Esse é o mesmo URL usado ao atualizar os metadados ou o conteúdo HTML de um item.

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>

Se a entrada for excluída, o servidor vai responder com um 200 OK HTTP.

Se você quiser garantir que não vai excluir uma entrada que foi alterada por outro cliente desde que a recuperou, inclua um cabeçalho HTTP If-Match que contenha o valor de ETag da entrada original. Para determinar o valor da ETag da entrada original, examine o atributo gd:etag do elemento <entry>.

Se você quiser excluir a entrada independentemente de alguém tê-la atualizado desde a recuperação, use If-Match: * e não inclua a ETag. Nesse caso, não é preciso recuperar a entrada antes de excluí-la.

Para mais informações sobre ETags, consulte o Guia de referência de APIs de dados do Google.

Voltar ao início



Como fazer o download de anexos

Depois de criar uma entrada de anexo, é possível fazer o download do arquivo enviando um GET HTTP autenticado ao link src <content> da entrada. Um exemplo de link de conteúdo de PDF:

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

Voltar ao início

Feed da ACL

Visão geral das permissões de compartilhamento (ACLs)

Cada entrada de ACL no feed de ACL representa um papel de acesso de uma entidade específica: um usuário, um grupo de usuários, um domínio ou o acesso padrão (que é um site público). As entradas serão mostradas somente para entidades com acesso explícito. Uma entrada será mostrada para cada endereço de e-mail no painel "Pessoas com acesso" na tela de compartilhamento da IU do Google Sites. Assim, os administradores do domínio não serão exibidos, mesmo que tenham acesso implícito a um site.

Papéis

O elemento de papel representa um nível de acesso que uma entidade pode ter. Há quatro valores possíveis para o elemento gAcl:role:

  • reader: um leitor (equivalente ao acesso somente leitura).
  • writer: um colaborador (equivalente ao acesso de leitura/gravação).
  • owner: normalmente o administrador do site (equivalente ao acesso de leitura/gravação).

Escopos

O elemento de escopo representa a entidade que tem esse nível de acesso. Há cinco tipos possíveis do elemento gAcl:scope:

  • user: um valor de endereço de e-mail, por exemplo, "usuario@gmail.com".
  • group: um endereço de e-mail do Grupo do Google, como "grupo@dominio.com".
  • domain: um nome de domínio do G Suite, por exemplo, "dominio.com".
  • convite: um usuário que foi convidado para o site, mas ainda não foi adicionado à ACL do site. Esse valor não estará disponível se o gdata 1.3 ou inferior estiver especificado.
  • default: há apenas um escopo possível do tipo "padrão", que não tem valor (por exemplo, <gAcl:scope type="default">). Esse escopo específico controla o acesso que qualquer usuário tem por padrão em um site público.

Observação: os domínios não podem ter um valor gAcl:role definido como acesso de "proprietário". Eles só podem ser leitores ou gravadores.

Sobre o escopo "convite".

A API retorna o escopo do convite quando você adiciona um ou mais usuários à ACL que ainda não têm uma Conta do Google. A API retorna um URL com um token incorporado que você precisa fornecer aos usuários convidados para que eles aceitem o convite.

Esse método permite convidar usuários que não são do Google sem precisar saber qual endereço de e-mail eles querem usar. Desde que os usuários cliquem no URL do convite com o token incorporado, poderão se inscrever para acessar usando o endereço de e-mail que quiserem. Além disso, vários usuários podem usar esse URL para aceitar o convite. Isso pode ser útil ao convidar um usuário ou um grupo de usuários.

Observação: o escopo "invite" está disponível apenas na versão 1.4 ou posterior do gdata. Isso não funcionará se você especificar a versão 1.3 ou inferior explicitamente.

Como recuperar o feed de ACL

O feed da ACL pode ser usado para controlar as permissões de compartilhamento de um site e é acessado pelo seguinte URI:

https://sites.google.com/feeds/acl/site/domainName/siteName
Parâmetro do feedDescrição
domainName"site" ou o domínio do seu domínio hospedado do G Suite (por exemplo, example.com).
siteNameO nome do espaço do site, encontrado no URL do site (por exemplo, myCoolSite).

É importante ressaltar que cada entrada no feed do site contém um link para ele:

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

Para recuperar as permissões de compartilhamento de um site, envie GET HTTP para o URI do feed da ACL:

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

O servidor vai responder com um 200 OK e um feed de entradas de 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>

Voltar ao início

Compartilhar um site

O feed da ACL aceita solicitações GET, POST e PUT. Para inserir uma nova função no feed de ACL, envie uma solicitação POST ao feed de ACL do site.

Observação: algumas ACLs de compartilhamento só podem ser possíveis se o domínio estiver configurado para permitir essas permissões (por exemplo, se o compartilhamento fora do domínio para domínios do G Suite estiver ativado etc.).

Este exemplo adiciona um novo colaborador (gravador) ao site:

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>

Uma 201 Created e a nova entrada são retornadas em uma inserção bem-sucedida:

<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>

Convidar usuários por meio do escopo "convite"

Se você adicionar usuários que não têm uma Conta do Google, a API retornará um URL que você precisará fornecer aos usuários que quer convidar. Após clicar no URL, o usuário poderá acessar o site fazendo login com uma conta existente ou criando uma nova.

Um convite bem-sucedido retorna um 201 Created e uma nova entrada que inclui o URL que você precisa transmitir ao usuário:

<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>

Compartilhamento nos níveis do grupo e do domínio

Assim como no compartilhamento de um site com um único usuário, você pode compartilhar um site com um grupo do Google ou um domínio do G Suite. Os valores scope necessários estão listados abaixo.

Compartilhar com um endereço de e-mail de grupo:

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

Compartilhar com um domínio inteiro:

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

O compartilhamento no nível do domínio só é compatível com domínios do G Suite e apenas com o domínio em que o site está hospedado. Por exemplo, o domínio http://sites.google.com/a/domain1.com/siteA só pode compartilhar o site inteiro com o domínio1.com, não o domínio2.com. Os sites que não são hospedados em um domínio do G Suite (por exemplo, http://sites.google.com/site/siteB) não podem convidar domínios.

Modificando as permissões de compartilhamento

Para atualizar uma entrada da ACL, modifique a entrada conforme necessário e emita uma solicitação PUT HTTP para o link edit da entrada, que é simplesmente um elemento <link> com o atributo "rel" definido como "edit". No exemplo anterior, o link é:

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

O snippet abaixo muda o papel de new_writer@gmail.com para "leitor":

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>

Removendo permissões de compartilhamento

Para remover as permissões desse usuário, emita uma solicitação DELETE para o mesmo link edit usado na solicitação 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>

O servidor vai responder com 200 OK.

Voltar ao início

Tópicos especiais

Como recuperar um feed ou uma entrada novamente

Se você quer recuperar um feed ou entrada recuperado anteriormente, é possível melhorar a eficiência informando ao servidor para enviar a lista ou entrada somente se ela tiver sido alterada desde a última vez que você a recuperou.

Para fazer esse tipo de recuperação condicional, envie uma solicitação GET HTTP que inclui um cabeçalho If-None-Match HTTP. No cabeçalho, especifique a ETag da lista ou da entrada, que pode ser encontrada nos atributos gd:etag ou <entry> do elemento <feed>.

Um exemplo usando o feed de site:

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

Quando o servidor recebe essa solicitação, ele verifica se o item solicitado tem a mesma ETag que a especificada. Se as ETags coincidirem, o item não mudou e o servidor retorna um código de status HTTP 304 Not Modified ou um código de status HTTP 412 Precodition Failed. Ambos os códigos de status indicam que o item que você já recuperou está atualizado.

Se as ETags não corresponderem, o item foi modificado desde a última solicitação, e o servidor retornará o item.

Para mais informações sobre ETags, consulte o Guia de referência de APIs de dados do Google.

Processamento em lote

As solicitações em lote oferecem ao cliente a capacidade de executar várias operações em uma solicitação, em vez de enviar cada operação individualmente.

O servidor vai executar o maior número possível de alterações solicitadas e retornar informações de status que podem ser usadas para avaliar o sucesso ou a falha de cada operação. Para mais detalhes sobre o processamento em lote na API Google Data, consulte Processamento em lote com as APIs Google Data.

Cada operação em um feed em lote tem um elemento <id>, exceto operações de inserção. Esse elemento é o mesmo que o URL de solicitação que você usaria normalmente ao atualizar, excluir ou consultar o feed de conteúdo. Por exemplo, se você estiver atualizando uma edição, defina <id> como o link edit da entrada em questão. É usado para identificar a entrada de destino. Novas entradas não têm elementos <id> porque ainda não foram criados. Em vez disso, é possível definir um valor de string em <batch:id>, que será retornado na resposta do servidor e usado para pesquisar a entrada correspondente.

Para fazer uma solicitação em lote, crie um feed em lote e envie um POST HTTP para o link de lote do feed:

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

O exemplo abaixo mostra como consultar, inserir, atualizar e excluir uma entrada de página da Web:

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

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

O feed retornado conterá uma entrada de resultado para cada operação:

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

Voltar ao início