{"id":761,"date":"2008-10-26T20:28:45","date_gmt":"2008-10-27T01:28:45","guid":{"rendered":"http:\/\/blogs.devhorizon.com\/reza\/?p=761"},"modified":"2008-10-29T14:44:32","modified_gmt":"2008-10-29T19:44:32","slug":"ssrsdata-driven-subscriptions-in-integrated-mode-part-1","status":"publish","type":"post","link":"https:\/\/blogs.devhorizon.com\/reza\/2008\/10\/26\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\/","title":{"rendered":"SSRS:Data Driven Subscriptions in Integrated mode (Part 1)"},"content":{"rendered":"<p>The thing is, if you read SQL Server 2008 books online (For example <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms159150.aspx\">here<\/a> or <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb326364.aspx\">here<\/a>) , it is explicitly mentioned that Data-driven subscriptions are not supported when the report server is configured for SharePoint integrated mode!\u00a0 I could have sworn that I heard several times from SSRS top subject matters that they have added this new functionality to the SSRS 2008. Plus looking at the proxy endpoint tells me that the functionality is there, but &lt;rant&gt;like a lot of other things in the Integrated mode (and I&#8217;m talking about SSRS 2008 not 2005 SP2), there are a few non-MS people who have gone ahead and partially demonstrated how to implement stuff! All I see is a marketing *LIST* of all the new goodies ,but\u00a0 not even a single Web cast or How-To with the focus on the integration&lt;\/rant&gt; lovely! eh?<\/p>\n<p>So one million dollar question is : Is Data Driven Subscriptions part of SSRS 2008 when it is configured in integrated mode? Answer is Yes! It is fully supported.<\/p>\n<p>Before I walk you through how to set this up in SharePoint (mostly covered in <a href=\"https:\/\/blogs.devhorizon.com\/reza\/?p=762\">Part 2<\/a>) , I would like to give you\u00a0 a brief tour of what the data driven subscription concept is and show you some preparatory steps that you need to take before you touch the SharePoint equivalent feature sets. Okay, let&#8217;s get the ball rolling here:<\/p>\n<p>Generally speaking in SSRS , subscriptions are an alternative way of delivering reports to people in a very dynamic and automated manner.The objective is minimizing On-demand access to the report server; therefore reducing the traffic and boosting the performance.\u00a0 It is all about targeting different information at different audiences , all done in a data driven fashion and asynchronously (can&#8217;t u tell that I am a developer?! \ud83d\ude09 )\u00a0 delivered to them. Subscriptions are processed on the report server and are distributed through delivery extensions (another important concept in SSRS) that are deployed on the server. Two very important delivery extensions in SharePoint are:<\/p>\n<ul>\n<li>Email<\/li>\n<li>SharePoint Document Library.See <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb326364.aspx\">this<\/a>.<\/li>\n<\/ul>\n<p>Let me quickly walk you through setting up a data driven subscription (using Email delivery extension) on a sample report deployed\u00a0 to a Report Library in a SharePoint site. I am sure you will see the value! All right, the plan is to distribute our sample report to a fluctuating list of subscribers kept in a role (in my role provider) called SSRSSubs<strong>. <\/strong>Let&#8217;s see , for a data driven subscription based on the email delivery extension , what you would need to put together:<\/p>\n<p>1) <strong>Membership and Role provider: <\/strong>I am using the out of the box AspnetSqlMembership and role provider for this demonstration; therefor I don&#8217;t spend any time digging into what roles and memberships are. Having a membership and role provider to benefit from data driven subscriptions is absolutely NOT necessary, but making the parameters of a subscription dynamic and keep their values somewhere (such as a SQL db) and retrieving them at run time is what data driven subscriptions is all about. Are we square on this? GREAT! I heard the yes answer loud and clear (I have ear over IP kind of organ!) .Let&#8217;s move on then.<\/p>\n<p>For this demonstration purpose I am just making the list of emails dynamic , but feel free to make everything dynamic such as the report&#8217;s parameter(s) , email&#8217;s subject, report&#8217;s format and etc. Just think about how powerful this could be!<\/p>\n<p>I have added three users (user1, user2 and user3) to my membership provider and added them to SSRSSubs role. Each user has a respective email with the extension of techdays.ca (i.e user1@techdays.ca). All three emails are also defined in my mail server.<\/p>\n<p>2) <strong>Data Driven Query<\/strong>: Each data driven subscription requires a query that retieves its paramters value at runtime. For this demonstration, I have written an stored proc called aspnet_GetEmailsInRoles that would return the emails of all the users in a given role stored in my role provider. This stored proc is not part of the out of the box AspnetSqlMembership database schema . As you will see in <a href=\"https:\/\/blogs.devhorizon.com\/reza\/?p=762\">Part 2<\/a> , I will call into this stored procedure to retrieve the list of emails at run time.<\/p>\n<p>[Sql]<br \/>\nUSE [aspnetdb]<br \/>\nGO<br \/>\nSET ANSI_NULLS ON<br \/>\nGO<br \/>\nSET QUOTED_IDENTIFIER OFF<br \/>\nGO<br \/>\nCREATE PROCEDURE [dbo].[aspnet_GetEmailsInRoles]<br \/>\n@ApplicationName  nvarchar(256),<br \/>\n@RoleName         nvarchar(256)<br \/>\nAS<br \/>\nBEGIN<br \/>\nDECLARE @ApplicationId uniqueidentifier<br \/>\nSELECT  @ApplicationId = NULL<br \/>\nSELECT  @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName<br \/>\nIF (@ApplicationId IS NULL)<br \/>\nRETURN(1)<br \/>\nDECLARE @RoleId uniqueidentifier<br \/>\nSELECT  @RoleId = NULL<\/p>\n<p>SELECT  @RoleId = RoleId<br \/>\nFROM    dbo.aspnet_Roles<br \/>\nWHERE   LOWER(@RoleName) = LoweredRoleName AND ApplicationId = @ApplicationId<\/p>\n<p>IF (@RoleId IS NULL)<br \/>\nRETURN(1)<\/p>\n<p>SELECT m.Email<br \/>\nFROM   dbo.aspnet_Users u, dbo.aspnet_UsersInRoles ur, dbo.aspnet_Membership m<br \/>\nWHERE  u.UserId = ur.UserId AND u.UserId = m.UserId AND @RoleId = ur.RoleId AND u.ApplicationId = @ApplicationId<br \/>\nORDER BY m.Email<br \/>\nRETURN(0)<\/p>\n<p>END<\/p>\n<p>[\/Sql]<\/p>\n<p>Here is the store proc execution screenshot:<\/p>\n<p><a href=\"http:\/\/farm4.static.flickr.com\/3017\/2976285788_7054107328_o.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/farm4.static.flickr.com\/3017\/2976285788_a9041cb13c_m.jpg\" alt=\"DDStoreprocExecution\" width=\"240\" height=\"180\" \/><\/a><\/p>\n<p>3) <strong>Payload<\/strong>: Below is the report that I am trying to attach to a data driven subscription ( nice and sexy)<\/p>\n<p><a href=\"http:\/\/farm4.static.flickr.com\/3179\/2975431255_b91b99fd30_o.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/farm4.static.flickr.com\/3179\/2975431255_6ed9f4749e_m.jpg\" alt=\"SalesOrderDetailReportExecution\" width=\"240\" height=\"174\" \/><\/a><\/p>\n<p>Clarification: As much as I&#8217;d love to take the credit for authoring the report shown above, this report is part of the AdventureWorks report pack that coms out of the box with default installation of SSRS 2008.<\/p>\n<p>4) <strong>Email Settings:<\/strong> No matter how you&#8217;ve configured the outgoing email settings in SharePoint (Central Admin -&gt; Operation -&gt; Outgoing Email Settings) , you have to setup email settings in Reporting Service Configuration manager for the email delivery extension to show up in static and data driven subscriptions you set up in SharePoint.<\/p>\n<p>Email delivery extension is not available:<\/p>\n<p><a href=\"http:\/\/farm4.static.flickr.com\/3009\/2975427675_092aa79183_b.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/farm4.static.flickr.com\/3009\/2975427675_092aa79183_m.jpg\" alt=\"EmailExtensionDeliveryIsnotAvaialble\" width=\"240\" height=\"150\" \/><\/a><\/p>\n<p>You configure the email settings in Reporting Service Configuration tool :<\/p>\n<p><a href=\"http:\/\/farm4.static.flickr.com\/3184\/2975432947_7f5921da02_o.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/farm4.static.flickr.com\/3184\/2975432947_9ebbe4e3e4_m.jpg\" alt=\"RSSConfigManager-EmailSettings\" width=\"240\" height=\"128\" \/><\/a><\/p>\n<p>Here is the &#8220;Email delivery extension&#8221; all of a sudden showing up:<\/p>\n<p><a href=\"http:\/\/farm4.static.flickr.com\/3165\/2975430657_e7f01efe9a_b.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/farm4.static.flickr.com\/3165\/2975430657_e7f01efe9a_m.jpg\" alt=\"EmailExtensionDeliveryNowAvaialble\" width=\"240\" height=\"150\" \/><\/a><\/p>\n<p>5) <strong>SQL Agent Service<\/strong>: Obviously SSRS automated background services are handled by SQL Server Agent , so get the bad boy started if you haven&#8217;t already.<\/p>\n<p><a href=\"http:\/\/farm4.static.flickr.com\/3200\/2976272680_92208b3036_o.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/farm4.static.flickr.com\/3200\/2976272680_6dbb98b848_m.jpg\" alt=\"SQLServerAgentIsREquired\" width=\"240\" height=\"119\" \/><\/a><\/p>\n<p>Okay, now that we have all of our non-SharePoint parts in place, so let&#8217;s just move on with making SharePoint aware of what we are planning to set up. Please proceed to <a href=\"https:\/\/blogs.devhorizon.com\/reza\/?p=762\">part 2<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The thing is, if you read SQL Server 2008 books online (For example here or here) , it is explicitly mentioned that Data-driven subscriptions are not supported when the report server is configured for SharePoint integrated mode!\u00a0 I could have sworn that I heard several times from SSRS top subject matters that they have added [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43,47],"tags":[18,3,17],"class_list":["post-761","post","type-post","status-publish","format-standard","hentry","category-moss-2007","category-ssrs","tag-integration","tag-moss-2007","tag-ssrs"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SSRS:Data Driven Subscriptions in Integrated mode (Part 1) - Reza Alirezaei&#039;s Blog %<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.devhorizon.com\/reza\/2008\/10\/26\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Reza Alirezaei\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/10\\\/26\\\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/10\\\/26\\\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\\\/\"},\"author\":{\"name\":\"Reza Alirezaei\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#\\\/schema\\\/person\\\/cdbb24d283697a65951cb4a14e474938\"},\"headline\":\"SSRS:Data Driven Subscriptions in Integrated mode (Part 1)\",\"datePublished\":\"2008-10-27T01:28:45+00:00\",\"dateModified\":\"2008-10-29T19:44:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/10\\\/26\\\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\\\/\"},\"wordCount\":1027,\"commentCount\":7,\"image\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/10\\\/26\\\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/farm4.static.flickr.com\\\/3017\\\/2976285788_a9041cb13c_m.jpg\",\"keywords\":[\"Integration\",\"MOSS 2007\",\"SSRS\"],\"articleSection\":[\"MOSS 2007\",\"SSRS\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/10\\\/26\\\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/10\\\/26\\\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\\\/\",\"url\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/10\\\/26\\\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\\\/\",\"name\":\"SSRS:Data Driven Subscriptions in Integrated mode (Part 1) - Reza Alirezaei's Blog %\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/10\\\/26\\\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/10\\\/26\\\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/farm4.static.flickr.com\\\/3017\\\/2976285788_a9041cb13c_m.jpg\",\"datePublished\":\"2008-10-27T01:28:45+00:00\",\"dateModified\":\"2008-10-29T19:44:32+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#\\\/schema\\\/person\\\/cdbb24d283697a65951cb4a14e474938\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/10\\\/26\\\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/10\\\/26\\\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\\\/#primaryimage\",\"url\":\"http:\\\/\\\/farm4.static.flickr.com\\\/3017\\\/2976285788_a9041cb13c_m.jpg\",\"contentUrl\":\"http:\\\/\\\/farm4.static.flickr.com\\\/3017\\\/2976285788_a9041cb13c_m.jpg\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#website\",\"url\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/\",\"name\":\"Reza Alirezaei's Blog\",\"description\":\"Blogging from the field!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#\\\/schema\\\/person\\\/cdbb24d283697a65951cb4a14e474938\",\"name\":\"Reza Alirezaei\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g\",\"caption\":\"Reza Alirezaei\"},\"url\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/author\\\/rezaa\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SSRS:Data Driven Subscriptions in Integrated mode (Part 1) - Reza Alirezaei's Blog %","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.devhorizon.com\/reza\/2008\/10\/26\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\/","twitter_misc":{"Written by":"Reza Alirezaei","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/10\/26\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\/#article","isPartOf":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/10\/26\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\/"},"author":{"name":"Reza Alirezaei","@id":"https:\/\/blogs.devhorizon.com\/reza\/#\/schema\/person\/cdbb24d283697a65951cb4a14e474938"},"headline":"SSRS:Data Driven Subscriptions in Integrated mode (Part 1)","datePublished":"2008-10-27T01:28:45+00:00","dateModified":"2008-10-29T19:44:32+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/10\/26\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\/"},"wordCount":1027,"commentCount":7,"image":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/10\/26\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\/#primaryimage"},"thumbnailUrl":"http:\/\/farm4.static.flickr.com\/3017\/2976285788_a9041cb13c_m.jpg","keywords":["Integration","MOSS 2007","SSRS"],"articleSection":["MOSS 2007","SSRS"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.devhorizon.com\/reza\/2008\/10\/26\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/10\/26\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\/","url":"https:\/\/blogs.devhorizon.com\/reza\/2008\/10\/26\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\/","name":"SSRS:Data Driven Subscriptions in Integrated mode (Part 1) - Reza Alirezaei's Blog %","isPartOf":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/10\/26\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\/#primaryimage"},"image":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/10\/26\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\/#primaryimage"},"thumbnailUrl":"http:\/\/farm4.static.flickr.com\/3017\/2976285788_a9041cb13c_m.jpg","datePublished":"2008-10-27T01:28:45+00:00","dateModified":"2008-10-29T19:44:32+00:00","author":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/#\/schema\/person\/cdbb24d283697a65951cb4a14e474938"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.devhorizon.com\/reza\/2008\/10\/26\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/10\/26\/ssrsdata-driven-subscriptions-in-integrated-mode-part-1\/#primaryimage","url":"http:\/\/farm4.static.flickr.com\/3017\/2976285788_a9041cb13c_m.jpg","contentUrl":"http:\/\/farm4.static.flickr.com\/3017\/2976285788_a9041cb13c_m.jpg"},{"@type":"WebSite","@id":"https:\/\/blogs.devhorizon.com\/reza\/#website","url":"https:\/\/blogs.devhorizon.com\/reza\/","name":"Reza Alirezaei's Blog","description":"Blogging from the field!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.devhorizon.com\/reza\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blogs.devhorizon.com\/reza\/#\/schema\/person\/cdbb24d283697a65951cb4a14e474938","name":"Reza Alirezaei","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g","caption":"Reza Alirezaei"},"url":"https:\/\/blogs.devhorizon.com\/reza\/author\/rezaa\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/posts\/761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/comments?post=761"}],"version-history":[{"count":0,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/posts\/761\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/media?parent=761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/categories?post=761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/tags?post=761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}