رابط برنامهنویسی کاربردی کلاسیک سایتهای گوگل به برنامههای شما اجازه میدهد تا به محتوای درون یک سایت گوگل دسترسی داشته باشند، آن را منتشر کنند و تغییر دهند. علاوه بر این، برنامه شما میتواند لیستی از فعالیتهای اخیر را درخواست کند، تاریخچه تغییرات را دریافت کند و پیوستها و فایلها را آپلود/دانلود کند.
مخاطب
این سند فرض میکند که شما ایدههای کلی پشت پروتکل APIهای داده گوگل را درک میکنید.
این سند برای برنامهنویسانی در نظر گرفته شده است که میخواهند برنامههای کلاینتی بنویسند که بتوانند با سایتهای گوگل تعامل داشته باشند. این سند مجموعهای از مثالها از تعاملات API دادههای پایه با استفاده از XML/HTTP خام را به همراه توضیحات ارائه میدهد. پس از خواندن این سند، میتوانید با خواندن مثالهای خاص زبان که در سایر راهنماهای نوار ناوبری سمت چپ یافت میشوند، درباره تعامل با API با استفاده از کتابخانههای کلاینت ما اطلاعات بیشتری کسب کنید.
برای مشاهدهی منابع موجود در این راهنما، به راهنمای مرجع مراجعه کنید.
تأیید درخواستها
وقتی برنامه شما دادههای کاربر غیرعمومی را درخواست میکند، باید یک توکن مجوز (authorization token) داشته باشد. این توکن همچنین برنامه شما را به گوگل معرفی میکند.
درباره پروتکلهای مجوزدهی
برنامه شما باید از OAuth 2.0 برای تأیید درخواستها استفاده کند. هیچ پروتکل تأیید دیگری پشتیبانی نمیشود. اگر برنامه شما از ورود با گوگل استفاده میکند، برخی از جنبههای تأیید برای شما انجام میشود.
تأیید درخواستها با OAuth 2.0
درخواستها به API دادههای سایتهای گوگل برای دادههای غیرعمومی کاربر باید توسط یک کاربر احراز هویت شده تأیید شوند.
جزئیات فرآیند مجوزدهی یا «جریان» برای OAuth 2.0 بسته به نوع برنامهای که مینویسید تا حدودی متفاوت است. فرآیند کلی زیر برای همه انواع برنامه اعمال میشود:
- وقتی برنامه خود را ایجاد میکنید، آن را با استفاده از کنسول API گوگل ثبت میکنید. سپس گوگل اطلاعاتی را که بعداً به آنها نیاز خواهید داشت، مانند شناسه کلاینت و رمز کلاینت، در اختیار شما قرار میدهد.
- API دادههای سایتهای گوگل را در کنسول API گوگل فعال کنید. (اگر API در کنسول API فهرست نشده است، از این مرحله صرف نظر کنید.)
- وقتی برنامه شما نیاز به دسترسی به دادههای کاربر دارد، از گوگل درخواست محدوده خاصی از دسترسی را میکند.
- گوگل یک صفحه رضایتنامه به کاربر نمایش میدهد و از او میخواهد که به برنامه شما اجازه دهد تا برخی از دادههایش را درخواست کند.
- اگر کاربر تأیید کند، گوگل یک توکن دسترسی کوتاهمدت به برنامه شما میدهد.
- برنامه شما دادههای کاربر را درخواست میکند و توکن دسترسی را به درخواست پیوست میکند.
- اگر گوگل تشخیص دهد که درخواست شما و توکن معتبر هستند، دادههای درخواستی را برمیگرداند.
برخی از جریانها شامل مراحل اضافی مانند استفاده از توکنهای تازهسازی برای به دست آوردن توکنهای دسترسی جدید هستند. برای اطلاعات دقیق در مورد جریانها برای انواع مختلف برنامهها، به مستندات OAuth 2.0 گوگل مراجعه کنید.
اطلاعات مربوط به محدودهی OAuth 2.0 برای Google Sites Data API به شرح زیر است:
https://sites.google.com/feeds/
برای درخواست دسترسی با استفاده از OAuth 2.0، برنامه شما به اطلاعات دامنه و همچنین اطلاعاتی که گوگل هنگام ثبت برنامه شما ارائه میدهد (مانند شناسه کلاینت و رمز کلاینت) نیاز دارد.
مشخص کردن یک نسخه
هر درخواستی که به Google Sites Data API ارسال میکنید باید نسخه ۱.۴ را مشخص کند. برای مشخص کردن شماره نسخه، از هدر GData-Version HTTP استفاده کنید:
GData-Version: 1.4
از طرف دیگر، اگر نمیتوانید هدرهای HTTP را تنظیم کنید، میتوانید v=1.4 را به عنوان پارامتر پرس و جو در URL مشخص کنید. اما در صورت امکان، هدر HTTP ترجیح داده میشود.
نکته : کتابخانههای کلاینت به طور خودکار هدرهای نسخه مناسب را ارائه میدهند، بنابراین هنگام استفاده از یک کتابخانه کلاینت از پارامتر کوئری v=1.4 استفاده نکنید.
فید سایت
فید سایت میتواند برای فهرست کردن سایتهای گوگل متعلق به یک کاربر یا دارای مجوزهای مشاهده و همچنین تغییر عنوان یک سایت موجود استفاده شود. برای دامنههای 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>
درخواست فوق یک سایت گوگل جدید با تم 'slate' تحت دامنه G Suite example.com ایجاد میکند. آدرس اینترنتی سایت 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/ کپی میکند.
نکات مهم:
- فقط سایتها و قالبهای سایتی که کاربر احراز هویت شده دارد، قابل کپی هستند.
- یک قالب سایت را میتوان کپی کرد. یک سایت در صورتی یک قالب است که گزینه «انتشار این سایت به عنوان یک قالب» در صفحه تنظیمات سایتهای گوگل علامت زده شده باشد.
- شما میتوانید یک سایت را از دامنه دیگری کپی کنید، البته تا زمانی که به عنوان مالک در سایت منبع ذکر شده باشید.
بهروزرسانی متادیتای یک سایت
برای بهروزرسانی عنوان یا خلاصه یک سایت، یک 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>
این مثال دو دسته اضافه میکند: «محل تیم» و «دپارتمان حقوقی»
نگاشت آدرسهای وب
نگاشت آدرسهای وب به کاربران سایتها این امکان را میدهد که دامنههای خود را به یک سایت گوگل نگاشت کنند. برای مثال، میتوان از http://www.mydomainsite.com به جای http://sites.google.com/a/domain.com/mysite استفاده کرد. بسته به محل میزبانی سایت شما، میتوانید نگاشت آدرسهای وب یک سایت را به صورت دستی تغییر دهید. برای اطلاعات بیشتر به مقاله مرکز راهنمای ما مراجعه کنید.
دریافت نگاشتهای آدرس وب یک سایت
برای برگرداندن نگاشتهای آدرس وب برای یک سایت، ورودی/فید سایت را با پارامتر 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 باید در URL فید سایت گنجانده شود. توجه: برای بهروزرسانی نگاشتهای آدرس، باید مدیر سایت یا در صورت میزبانی سایت با 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 احراز هویت شده به آدرس اینترنتی زیر ارسال کنید:
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، به مرجع پروتکل داده گوگل مراجعه کنید. عناصری که معنای خاصی برای API کلاسیک Sites دارند، در زیر توضیح داده شدهاند. ورودیهای نوع خاصی دارای ویژگیهای اضافی هستند (که در زیر ذکر نشدهاند)، در حالی که برخی دیگر این ویژگیها را ندارند. به عنوان مثال، یک ورودی listitem ممکن است دارای عناصر <gs:field> باشد، در حالی که یک ورودی webpage این ویژگی را ندارد.
| عنصر | توضیحات |
|---|---|
<content ...> | متن داخلی، بدنه HTML صفحه است. برای برخی از ورودیها (مثلاً پیوستها)، این عنصر حاوی یک ویژگی src است که به فایل اشاره میکند. |
<link rel="alternate" ...> | به صفحه یا مورد در سایتهای گوگل لینک دهید. |
<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
بازیابی صفحه از طریق مسیر
اگر مسیر نسبی یک صفحه را در سایت گوگل میدانید، میتوانید از پارامتر 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 ایجاد میشود و عنوان صفحه آن 'New Webpage Title' است. یعنی <atom:title> برای آدرس اینترنتی به new-webpage-title نرمالسازی شده است. برای سفارشیسازی مسیر آدرس اینترنتی یک صفحه، میتوانید عنصر <sites:pageName> را تنظیم کنید.
این مثال یک filecabinet جدید با عنوان صفحه «ذخیرهسازی فایل» ایجاد میکند، اما با مشخص کردن عنصر <sites:pageName> صفحه را تحت آدرس اینترنتی http://sites.google.com/ domainName / siteName /files ایجاد میکند.
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' توسط سرور پذیرفته میشود.
ایجاد زیرصفحهها
برای ایجاد زیرصفحهها (فرزندان) در زیر صفحه والد، یک <link rel="http://schemas.google.com/sites/2008#parent"> در ورودی جدید Atom خود قرار دهید. ویژگی href لینک را روی self link ورودی والد تنظیم کنید.
این مثال یک announcement جدید با عنوان «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> را اضافه کنید، سرور آن را رد خواهد کرد.
آپلود فایلها
درست مانند سایتهای گوگل، API به شما امکان میدهد پیوستها را در صفحات کابینت فایل و صفحات اصلی بارگذاری کنید.
برای آپلود یک پیوست به والد، یک درخواست HTTP POST به آدرس فید محتوا ارسال کنید:
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» در رابط کاربری سایتهای گوگل است.
توجه : پیوستهای وب فقط میتوانند در یک فایل کابینت ایجاد شوند. آنها را نمیتوان در انواع دیگر صفحات بارگذاری کرد.
این مثال یک 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، فراداده و محتوای فایل پیوست را بهطور همزمان بهروزرسانی کنید.
برای اطمینان از اینکه بهروزرسانی شما تغییرات کلاینت دیگری را رونویسی نمیکند، مقدار ETag ورودی اصلی را اضافه کنید. میتوانید این کار را با ارائه مقدار ETag در یک هدر HTTP If-Match یا با اضافه کردن ویژگی gd:etag ورودی اصلی در ورودی بهروزرسانی شده انجام دهید. برای تعیین مقدار ETag ورودی اصلی، ویژگی gd:etag عنصر <entry> را بررسی کنید. برای ورودیهای رسانه، ETag رسانه ممکن است در ویژگی gd:etag لینک edit-media موجود باشد.
اگر میخواهید ورودی را صرف نظر از اینکه شخص دیگری از زمان بازیابی آن را بهروزرسانی کرده است یا خیر، بهروزرسانی کنید، از If-Match: * استفاده کنید و ETag را وارد نکنید. برای اطلاعات بیشتر در مورد ETag ها، به راهنمای مرجع Google Data APIs مراجعه کنید.
بهروزرسانی فراداده یا محتوای 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
حذف محتوا
برای حذف یک آیتم از سایت گوگل، ابتدا ورودی را بازیابی کنید، سپس یک درخواست DELETE به آدرس edit ورودی ارسال کنید. این همان آدرسی است که هنگام بهروزرسانی فراداده یا محتوای 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 ورودی اصلی است را وارد کنید. میتوانید با بررسی ویژگی gd:etag عنصر <entry> ، مقدار ETag ورودی اصلی را تعیین کنید.
اگر میخواهید ورودی را صرف نظر از اینکه شخص دیگری از زمان بازیابی آن، آن را بهروزرسانی کرده است یا خیر، حذف کنید، از If-Match: * استفاده کنید و ETag را وارد نکنید. (در این حالت، نیازی به بازیابی ورودی قبل از حذف آن ندارید.)
برای اطلاعات بیشتر در مورد ETag ها، به راهنمای مرجع Google Data APIs مراجعه کنید.
دانلود پیوستها
وقتی یک ورودی پیوست دارید، میتوانید با ارسال یک HTTP GET احراز هویت شده به لینک <content> src ورودی، فایل را دانلود کنید. نمونهای از لینک محتوای یک PDF:
<content type="application/pdf" src="http://502377765-a-google-com-s-sites.googlegroups.com/feeds/media/content/domainName/siteName/678942036"/>
فید ACL
مروری بر مجوزهای اشتراکگذاری (ACL)
هر ورودی ACL در فید ACL نشان دهنده یک نقش دسترسی از یک نهاد خاص، چه یک کاربر، چه گروهی از کاربران، چه یک دامنه یا دسترسی پیشفرض (که یک سایت عمومی است) است. ورودیها فقط برای نهادهایی با دسترسی صریح نشان داده میشوند - برای هر آدرس ایمیل در پنل "افراد دارای دسترسی" در صفحه اشتراکگذاری رابط کاربری Google Sites، یک ورودی نشان داده میشود. بنابراین، مدیران دامنه نشان داده نمیشوند، حتی اگر دسترسی ضمنی به یک سایت داشته باشند.
نقشها
عنصر role نشان دهنده سطح دسترسی است که یک موجودیت میتواند داشته باشد. چهار مقدار ممکن برای عنصر gAcl:role وجود دارد:
- خواننده — یک بیننده (معادل دسترسی فقط خواندنی).
- نویسنده — یک همکار (معادل دسترسی خواندن/نوشتن).
- مالک — معمولاً مدیر سایت (معادل دسترسی خواندن/نوشتن).
محدودهها
عنصر scope نشاندهنده موجودیتی است که این سطح دسترسی را دارد. پنج نوع ممکن از عنصر gAcl:scope وجود دارد:
- کاربر — مقدار یک آدرس ایمیل، مثلاً "user@gmail.com".
- گروه — آدرس ایمیل گروه گوگل، مثلاً "group@domain.com".
- دامنه — نام دامنه G Suite، مثلاً "domain.com".
- دعوت — کاربری که به سایت دعوت شده است، اما هنوز به ACL سایت اضافه نشده است. (در صورت مشخص بودن gdata 1.3 یا پایینتر، در دسترس نیست.)
- پیشفرض — فقط یک دامنه ممکن از نوع "پیشفرض" وجود دارد که هیچ مقداری ندارد (مثلاً
<gAcl:scope type="default">). این دامنه خاص، دسترسی پیشفرض هر کاربر را در یک سایت عمومی کنترل میکند.
نکته : دامنهها نمیتوانند مقدار gAcl:role را روی دسترسی "owner" تنظیم کنند، آنها فقط میتوانند خواننده یا نویسنده باشند.
درباره دامنه «دعوت».
وقتی یک یا چند کاربر را که از قبل حساب گوگل ندارند به ACL اضافه میکنید، API محدوده دعوت را برمیگرداند. این API یک URL به همراه یک توکن جاسازیشده برمیگرداند که باید آن را در اختیار کاربران دعوتشده قرار دهید تا بتوانند دعوت را بپذیرند.
این روش دعوت به شما امکان میدهد کاربران غیر گوگل را بدون اطلاع قبلی از آدرس ایمیلی که میخواهند استفاده کنند، دعوت کنید. تا زمانی که کاربران روی URL دعوتنامه که توکن در آن تعبیه شده است کلیک کنند، میتوانند با استفاده از هر آدرس ایمیلی که میخواهند، برای دسترسی ثبتنام کنند. علاوه بر این، چندین کاربر میتوانند به طور بالقوه از این URL برای پذیرش دعوتنامه استفاده کنند، بنابراین این روش میتواند در صورت دعوت از یک کاربر یا گروهی از کاربران مفید باشد.
نکته: محدودهی «دعوت» فقط در gdata نسخه ۱.۴ و بالاتر موجود است. اگر صراحتاً نسخه ۱.۳ یا پایینتر را مشخص کنید، این گزینه کار نخواهد کرد.
بازیابی فید 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 به آدرس فید 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>
دعوت از کاربران از طریق محدوده "دعوت"
اگر کاربرانی را اضافه کنید که حساب گوگل ندارند، 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>
اشتراکگذاری در سطح گروه و دامنه
مشابه اشتراکگذاری سایت با یک کاربر ، میتوانید یک سایت را در یک گروه گوگل یا دامنه 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 را برمیگرداند. هر دوی این کدهای وضعیت نشان میدهند که آیتمی که قبلاً بازیابی کردهاید، بهروز است.
اگر ETag ها مطابقت نداشته باشند، یعنی آیتم از آخرین باری که درخواست کردهاید تغییر کرده است و سرور آیتم را برمیگرداند.
برای اطلاعات بیشتر در مورد ETag ها، به راهنمای مرجع Google Data APIs مراجعه کنید.
پردازش دستهای
درخواستهای دستهای به کلاینت شما این امکان را میدهد که چندین عملیات را در یک درخواست اجرا کند، به جای اینکه هر عملیات را به صورت جداگانه ارسال کند.
سرور تا حد امکان تغییرات درخواستی را انجام میدهد و اطلاعات وضعیت را برمیگرداند که میتوانید برای ارزیابی موفقیت یا شکست هر عملیات از آنها استفاده کنید. برای جزئیات بیشتر در مورد پردازش دستهای در Google Data API، به پردازش دستهای با Google Data APIs مراجعه کنید.
هر عملیاتی در یک فید دستهای، به جز عملیات درج، دارای یک عنصر <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>