{"id":5304,"date":"2018-11-05T17:17:42","date_gmt":"2018-11-05T17:17:42","guid":{"rendered":"https:\/\/zappysys.com\/blog\/?p=5304"},"modified":"2018-11-07T17:20:29","modified_gmt":"2018-11-07T17:20:29","slug":"create-csv-list-sql-server-table-columns-datatypes","status":"publish","type":"post","link":"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/","title":{"rendered":"Tableau Parameters &#8211; Fix Metadata \/ Dynamic SQL Columns Issue"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/tableau-integration-logo.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-4374 alignleft\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/tableau-integration-logo.png\" alt=\"\" width=\"97\" height=\"97\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/tableau-integration-logo.png 376w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/tableau-integration-logo-150x150.png 150w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/tableau-integration-logo-300x300.png 300w\" sizes=\"(max-width: 97px) 100vw, 97px\" \/><\/a>Many time you have to use Dynamic SQL in your Stored Procedure but some tools (e.g. <a href=\"https:\/\/zappysys.com\/blog\/tag\/tableau\/\" target=\"_blank\" rel=\"noopener\">Tableau<\/a>) may reject it because metadata is not returned when sp_describe_first_result_set is called in SQL Prepare phase. You may see error like below in that case.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Metadata Prepare Call<\/strong><\/p>\n<pre class=\"\">exec sp_describe_first_result_set N'EXEC [dbo].[usp_GetInvoicesByCountry] @country=''Germany'''\r\n<\/pre>\n<p><strong>Error due to Dynamic SQL<\/strong><\/p>\n<p><span style=\"color: #ff0000;\"><code>Msg 11514, Level 16, State 1, Procedure sp_describe_first_result_set, Line 1 [Batch Start Line 29]<\/code><\/span><br \/>\n<code><span style=\"color: #ff0000;\">The metadata could not be determined because statement 'EXECUTE (@sqlFull)' in procedure 'usp_GetInvoicesByCountry' contains dynamic SQL. Consider using the WITH RESULT SETS clause to explicitly describe the result set.<\/span><\/code><\/p>\n<p>Here is example Stored Procedure which may throw above error. We will re-write same stored proc in later section.<\/p>\n<h2><strong>Example of Dynamic SQL in Stored Procedure<\/strong><\/h2>\n<pre class=\"lang:tsql decode:true\">--DROP PROC dbo.usp_GetInvoicesByCountry\r\n--GO\r\n\/*\r\nPurpose: Parameterize REST API call via SQL. Call ZappySys Drivers inside SQL Server.\r\n*\/\r\nCREATE PROC dbo.usp_GetInvoicesByCountry\r\n\t@country varchar(100) \r\nAS \r\n\r\nDECLARE @sql varchar(max)\r\n--\/\/Escape single ticks carefully\r\nSET @sql =  'SELECT OrderID,CustomerID,Country,Quantity FROM $\r\nWITH (Src=''https:\/\/services.odata.org\/V3\/Northwind\/Northwind.svc\/Invoices?$format=json&amp;filter=Country eq '+ @country +'''\r\n\t ,Filter=''$.value[*]''\r\n\t ,DataFormat=''OData''\r\n)'\r\n\r\nDECLARE @sqlFull varchar(max)\r\nSET @sqlFull='SELECT * FROM OPENQUERY( LS , ''' + REPLACE( @sql, '''', '''''' ) + ''' )'\r\nPRINT @sqlFull --\/\/For DEBUG purpose\r\nEXECUTE (@sqlFull)\r\n\r\nGO\r\n-- Example call\r\nEXEC dbo.usp_GetInvoicesByCountry @country='Germany'<\/pre>\n<p>&nbsp;<\/p>\n<h2><strong>How to Fix Metadata error for Dynamic SQL<\/strong><\/h2>\n<p>To fix metadata error due to dynamic SQL you have add\u00a0<a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/t-sql\/language-elements\/execute-transact-sql?view=sql-server-2017\" target=\"_blank\" rel=\"noopener\">WITH RESULT SETS<\/a> statement after EXECUTE call. This feature was added in SQL 2012 and later. There are two ways to describe Stored Procedure \/ using Dynamic SQL<\/p>\n<h3>Method-1<\/h3>\n<p>Add\u00a0 <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/t-sql\/language-elements\/execute-transact-sql?view=sql-server-2017\" target=\"_blank\" rel=\"noopener\">WITH RESULT SETS<\/a>\u00a0clause inside Stored Proc if you are using EXECUTE or sp_Executesql like below.<\/p>\n<pre class=\"lang:tsql decode:true\">--DROP PROC dbo.usp_GetInvoicesByCountry\r\n--GO\r\n\/*\r\nPurpose: Parameterize REST API call via SQL. Call ZappySys Drivers inside SQL Server.\r\n*\/\r\nALTER PROC dbo.usp_GetInvoicesByCountry\r\n\t@country varchar(100) \r\nAS \r\n\r\nDECLARE @sql varchar(max)\r\n--\/\/Escape single ticks carefully\r\nSET @sql =  'SELECT OrderID,CustomerID,Country,Quantity FROM $\r\nWITH (Src=''https:\/\/services.odata.org\/V3\/Northwind\/Northwind.svc\/Invoices?$format=json&amp;filter=Country eq '+ @country +'''\r\n\t ,Filter=''$.value[*]''\r\n\t ,DataFormat=''OData''\r\n)'\r\n\r\nDECLARE @sqlFull varchar(max)\r\nSET @sqlFull='SELECT * FROM OPENQUERY( LS , ''' + REPLACE( @sql, '''', '''''' ) + ''' )'\r\nPRINT @sqlFull --\/\/For DEBUG purpose\r\n\r\nEXECUTE (@sqlFull)\r\nWITH RESULT SETS\r\n(\r\n\t(OrderID int,CustomerID varchar(100),Country varchar(100),Quantity int) --\/\/describe first result\r\n)\r\nGO<\/pre>\n<p>&nbsp;<\/p>\n<h3>Method-2<\/h3>\n<p>Another way to describe resultset is add WITH RESULT SETS statement right after you call Stored proc each time from any client tool (see below). This way you don&#8217;t have to touch Source stored Proc. First method is still preferred way.<\/p>\n<pre class=\"\">EXEC [dbo].[usp_GetInvoicesByCountry] @country='Germany' WITH RESULT SETS ( (OrderID int,CustomerID varchar(100),Country varchar(100),Quantity int))<\/pre>\n<h2>How to generate column names and field datatypes for\u00a0WITH RESULT SETS<\/h2>\n<p>If you have many columns to describe then it becomes tedious to type 200 columns by hand. Lets see how to make it simple.<\/p>\n<ol>\n<li>First step is you need to load your result into some static table.\n<pre class=\"\">SELECT * INTO _tmp FROM ( some sub query ) t<\/pre>\n<\/li>\n<li>Once you have data we can use it few ways to get datatypes. Lets create a view to query metadata\n<pre class=\"lang:tsql decode:true\">CREATE VIEW dbo.vwDataTypes\r\nAS\r\nSELECT \r\n   c.name as ColumnName,\r\n   t.name +\r\n   CASE WHEN t.name IN ('char', 'varchar','nchar','nvarchar') THEN '('+\r\n             CASE WHEN c.max_length=-1 THEN 'MAX'\r\n                  ELSE CONVERT(VARCHAR(4),\r\n                               CASE WHEN t.name IN ('nchar','nvarchar')\r\n                               THEN  c.max_length\/2 ELSE c.max_length END )\r\n                  END +')'\r\n          WHEN t.name IN ('decimal','numeric')\r\n                  THEN '('+ CONVERT(VARCHAR(4),c.precision)+','\r\n                          + CONVERT(VARCHAR(4),c.Scale)+')'\r\n                  ELSE '' END\r\n\t      as FriendlyDataType,\r\n   t.name as DataType,\r\n   c.[object_id] as [TblObjectId],\r\n   c.max_length MaxLengthBytes,\r\n   c.precision as [Precision],\r\n   c.scale  as [Scale],\r\n   c.is_nullable as IsNullable,\r\n   ISNULL(i.is_primary_key, 0) as IsPrimaryKey\r\nFROM    \r\n   sys.columns c\r\nINNER JOIN \r\n   sys.types t ON c.user_type_id = t.user_type_id\r\nLEFT OUTER JOIN \r\n   sys.index_columns ic ON ic.object_id = c.object_id AND ic.column_id = c.column_id\r\nLEFT OUTER JOIN \r\n   sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id\r\n--WHERE    c.object_id = OBJECT_ID('_tmp')\r\ngo<\/pre>\n<\/li>\n<li>Now you can write below query to generate Comma separated list of columns names and datatypes\n<pre class=\"\">DECLARE @csv VARCHAR(MAX)\r\nSELECT @csv = COALESCE(@csv+', ' ,'') + '[' + ColumnName + '] ' + FriendlyDataType\r\nFROM vwDataTypes WHERE [TblObjectId]= OBJECT_ID('_tmp')\r\nSELECT @csv<\/pre>\n<p><strong>Example :\u00a0<\/strong><\/p>\n<pre class=\"\">[CustomerID] nvarchar(10), [CustomerName] nvarchar(68), .........\u00a0[Freight] nvarchar(16)<\/pre>\n<\/li>\n<li>Use result of above query and paste in WITH RESULT SETS as below\n<pre class=\"\">EXECUTE( @sqlFull )\r\nWITH RESULT SETS\r\n(\r\n\u00a0 (\u00a0 your-comma-separated-list-goes-here )\r\n)<\/pre>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Many time you have to use Dynamic SQL in your Stored Procedure but some tools (e.g. Tableau) may reject it because metadata is not returned when sp_describe_first_result_set is called in SQL Prepare phase. You may see error like below in that case. &nbsp; &nbsp; Metadata Prepare Call exec sp_describe_first_result_set N&#8217;EXEC [dbo].[usp_GetInvoicesByCountry] @country=&#8221;Germany&#8221;&#8217; Error due [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4374,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[337],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>Tableau Parameters - Fix Metadata \/ Dynamic SQL Columns Issue | ZappySys Blog<\/title>\r\n<meta name=\"description\" content=\"Tableau Parameters - Fix Metadata \/ Dynamic SQL Columns Issue - ZappySys Blog\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Tableau Parameters - Fix Metadata \/ Dynamic SQL Columns Issue | ZappySys Blog\" \/>\r\n<meta property=\"og:description\" content=\"Tableau Parameters - Fix Metadata \/ Dynamic SQL Columns Issue - ZappySys Blog\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/\" \/>\r\n<meta property=\"og:site_name\" content=\"ZappySys Blog\" \/>\r\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ZappySys\/\" \/>\r\n<meta property=\"article:published_time\" content=\"2018-11-05T17:17:42+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2018-11-07T17:20:29+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/tableau-integration-logo.png\" \/>\r\n\t<meta property=\"og:image:width\" content=\"376\" \/>\r\n\t<meta property=\"og:image:height\" content=\"376\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\r\n<meta name=\"author\" content=\"ZappySys\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/zappysys\/\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"ZappySys\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/\",\"url\":\"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/\",\"name\":\"Tableau Parameters - Fix Metadata \/ Dynamic SQL Columns Issue | ZappySys Blog\",\"isPartOf\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/tableau-integration-logo.png\",\"datePublished\":\"2018-11-05T17:17:42+00:00\",\"dateModified\":\"2018-11-07T17:20:29+00:00\",\"author\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82\"},\"description\":\"Tableau Parameters - Fix Metadata \/ Dynamic SQL Columns Issue - ZappySys Blog\",\"breadcrumb\":{\"@id\":\"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/#primaryimage\",\"url\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/tableau-integration-logo.png\",\"contentUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/tableau-integration-logo.png\",\"width\":376,\"height\":376},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/zappysys.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tableau Parameters &#8211; Fix Metadata \/ Dynamic SQL Columns Issue\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/zappysys.com\/blog\/#website\",\"url\":\"https:\/\/zappysys.com\/blog\/\",\"name\":\"ZappySys Blog\",\"description\":\"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/zappysys.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82\",\"name\":\"ZappySys\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g\",\"caption\":\"ZappySys\"},\"sameAs\":[\"http:\/\/www.zappysys.com\/\",\"https:\/\/www.facebook.com\/ZappySys\/\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/zappysys\/\"],\"url\":\"https:\/\/zappysys.com\/blog\/author\/admin\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tableau Parameters - Fix Metadata \/ Dynamic SQL Columns Issue | ZappySys Blog","description":"Tableau Parameters - Fix Metadata \/ Dynamic SQL Columns Issue - ZappySys 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:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/","og_locale":"en_US","og_type":"article","og_title":"Tableau Parameters - Fix Metadata \/ Dynamic SQL Columns Issue | ZappySys Blog","og_description":"Tableau Parameters - Fix Metadata \/ Dynamic SQL Columns Issue - ZappySys Blog","og_url":"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/","og_site_name":"ZappySys Blog","article_author":"https:\/\/www.facebook.com\/ZappySys\/","article_published_time":"2018-11-05T17:17:42+00:00","article_modified_time":"2018-11-07T17:20:29+00:00","og_image":[{"width":376,"height":376,"url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/tableau-integration-logo.png","type":"image\/png"}],"author":"ZappySys","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/zappysys\/","twitter_misc":{"Written by":"ZappySys","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/","url":"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/","name":"Tableau Parameters - Fix Metadata \/ Dynamic SQL Columns Issue | ZappySys Blog","isPartOf":{"@id":"https:\/\/zappysys.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/#primaryimage"},"image":{"@id":"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/#primaryimage"},"thumbnailUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/tableau-integration-logo.png","datePublished":"2018-11-05T17:17:42+00:00","dateModified":"2018-11-07T17:20:29+00:00","author":{"@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82"},"description":"Tableau Parameters - Fix Metadata \/ Dynamic SQL Columns Issue - ZappySys Blog","breadcrumb":{"@id":"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/#primaryimage","url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/tableau-integration-logo.png","contentUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/tableau-integration-logo.png","width":376,"height":376},{"@type":"BreadcrumbList","@id":"https:\/\/zappysys.com\/blog\/create-csv-list-sql-server-table-columns-datatypes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zappysys.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tableau Parameters &#8211; Fix Metadata \/ Dynamic SQL Columns Issue"}]},{"@type":"WebSite","@id":"https:\/\/zappysys.com\/blog\/#website","url":"https:\/\/zappysys.com\/blog\/","name":"ZappySys Blog","description":"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zappysys.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82","name":"ZappySys","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g","caption":"ZappySys"},"sameAs":["http:\/\/www.zappysys.com\/","https:\/\/www.facebook.com\/ZappySys\/","https:\/\/twitter.com\/https:\/\/twitter.com\/zappysys\/"],"url":"https:\/\/zappysys.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/5304"}],"collection":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/comments?post=5304"}],"version-history":[{"count":5,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/5304\/revisions"}],"predecessor-version":[{"id":5352,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/5304\/revisions\/5352"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media\/4374"}],"wp:attachment":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media?parent=5304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/categories?post=5304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/tags?post=5304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}