{"id":396,"date":"2022-12-14T21:28:06","date_gmt":"2022-12-14T19:28:06","guid":{"rendered":"https:\/\/www.kogero.hu\/?p=396"},"modified":"2022-12-31T16:28:25","modified_gmt":"2022-12-31T14:28:25","slug":"custom-api-letrehozasa-dataverse-ben","status":"publish","type":"post","link":"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/","title":{"rendered":"How to create a custom API in Dataverse"},"content":{"rendered":"<p>In this post I will show you how you can create a custom API in Dataverse. I showed you in <a href=\"https:\/\/www.kogero.hu\/2022\/12\/13\/egyedi-muvelet-letrehozasa-custom-action-a-dataverse-ben\/\" target=\"_blank\" rel=\"noreferrer noopener\">this previous post<\/a> how to create a custom action and trigger custom business logic with custom message. Microsoft introduced a new way to that with a bit more funcionality, which can subsitute the old way how we created custom messages with actions in Dataverse.<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:luckywp\/tableofcontents \/-->\r\n\r\n<!-- wp:heading --><\/p>\r\n<h2>Main Differences<\/h2>\r\n<p><!-- \/wp:heading -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>Since the purpuse of custom API is very similar to the old custom action, they can be compared easily. See what is new or different in custom API:<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:list --><\/p>\r\n<ul><!-- wp:list-item -->\r\n<li>A custom API can be set to private or public,<\/li>\r\n<!-- \/wp:list-item -->\r\n\r\n<!-- wp:list-item -->\r\n<li>Type of API can be &#8220;Function&#8221; or&#8221;Action&#8221; (&#8220;Is Function&#8221; switch),<\/li>\r\n<!-- \/wp:list-item -->\r\n\r\n<!-- wp:list-item -->\r\n<li>Can be used or not in workflows,<\/li>\r\n<!-- \/wp:list-item -->\r\n\r\n<!-- wp:list-item -->\r\n<li>Bounding custom logic is simple by selecting a registered plugin, no steps needed, so we can easily create custom API with existing plugin to open it more widely,<\/li>\r\n<!-- \/wp:list-item -->\r\n\r\n<!-- wp:list-item -->\r\n<li>Creating a &#8220;process&#8221; is not required, because it is stored on a new table &#8220;Custom API&#8221;.<\/li>\r\n<!-- \/wp:list-item --><\/ul>\r\n<p><!-- \/wp:list -->\r\n\r\n<!-- wp:heading --><\/p>\r\n<h2>Creating Custom API<\/h2>\r\n<p><!-- \/wp:heading -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>Now let&#8217;s see how we can call an already registered plugin in a new custom API.<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:heading {\"level\":3} --><\/p>\r\n<h3>Plugin<\/h3>\r\n<p><!-- \/wp:heading -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>The existing logic receives a text and coverts it to upper case, then returns it:<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:code {\"lineNumbers\":true} --><\/p>\r\n<pre title=\"Action to convert input text to upper case\" class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp line-numbers\">using Microsoft.Xrm.Sdk;\r\nusing System;\r\n\r\nnamespace kogerohu.Actions\r\n{\r\n    public class TextToUpperCase : IPlugin\r\n    {\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ Action to convert an input text to upper case and return\r\n        \/\/\/ &lt;\/summary&gt;\r\n        public void Execute(IServiceProvider serviceProvider)\r\n        {\r\n            IPluginExecutionContext executionContext = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));\r\n\r\n            var inputText = (string)executionContext.InputParameters[\"inputText\"];\r\n\r\n            if (string.IsNullOrWhiteSpace(inputText)) return;\r\n\r\n            var outputText = inputText.ToUpper();\r\n\r\n            executionContext.OutputParameters[\"outputText\"] = outputText;\r\n        }\r\n    }\r\n}\r\n<\/code><\/pre>\r\n<p><!-- \/wp:code -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>The whole project is available on my <a href=\"https:\/\/github.com\/koger23\/PluginExample\/tree\/master\/Actions\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub repo.<\/a><\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:simple-note\/info --><\/p>\r\n<div class=\"wp-block-simple-note-info\">The process of plugin registration was presented with Plugin Registration Tool in <a href=\"https:\/\/www.kogero.hu\/2022\/12\/09\/plugin-irasa-dataverse-hez\/\" target=\"_blank\" rel=\"noreferrer noopener\">this post<\/a>.<\/div>\r\n<p><!-- \/wp:simple-note\/info -->\r\n\r\n<!-- wp:heading {\"level\":3} --><\/p>\r\n<h3>Creating new Custom API record<\/h3>\r\n<p><!-- \/wp:heading -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>Let&#8217;s opne the <a href=\"https:\/\/make.powerapps.com\" target=\"_blank\" rel=\"noreferrer noopener\">maker portal<\/a>, then create or select a solution. After that navigate through New &gt; More &gt; Other &gt; select Custom API:<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:image {\"align\":\"center\",\"id\":399,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} --><\/p>\r\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"688\" src=\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-19-1024x688.png\" alt=\"Creating custom API on maker portal\" class=\"wp-image-399\" srcset=\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-19-1024x688.png 1024w, https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-19-300x202.png 300w, https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-19-768x516.png 768w, https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-19-1139x765.png 1139w, https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-19.png 1143w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\r\n<figcaption class=\"wp-element-caption\">Creating Custom API on maker portal<\/figcaption>\r\n<\/figure>\r\n<p><!-- \/wp:image -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>After clicking on it a new tab will be opened with a form that must be filled in carefully:<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:list {\"ordered\":true} --><\/p>\r\n<ol><!-- wp:list-item -->\r\n<li>The field &#8220;Unique Name&#8221; is a simple text field at the moment and it must contain a valid publisher prefix, too!<\/li>\r\n<!-- \/wp:list-item -->\r\n\r\n<!-- wp:list-item -->\r\n<li>In this case the field &#8220;Bindig Type&#8221; must be&#8221;Global&#8221; (similarly to custom action example).<\/li>\r\n<!-- \/wp:list-item -->\r\n\r\n<!-- wp:list-item -->\r\n<li>The lookup field &#8220;Plugin Type&#8221; is to be the plugin whith the custom logic to be called.<\/li>\r\n<!-- \/wp:list-item --><\/ol>\r\n<p><!-- \/wp:list -->\r\n\r\n<!-- wp:paragraph --><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:image {\"align\":\"center\",\"id\":401,\"sizeSlug\":\"full\",\"linkDestination\":\"none\",\"style\":{\"border\":{\"width\":\"1px\"}}} --><\/p>\r\n<figure class=\"wp-block-image aligncenter size-full has-custom-border\"><img decoding=\"async\" loading=\"lazy\" width=\"530\" height=\"932\" src=\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-20.png\" alt=\"New Custom API\" class=\"wp-image-401\" style=\"border-width: 1px;\" srcset=\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-20.png 530w, https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-20-171x300.png 171w, https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-20-435x765.png 435w\" sizes=\"(max-width: 530px) 100vw, 530px\" \/>\r\n<figcaption class=\"wp-element-caption\">New Custom API form<\/figcaption>\r\n<\/figure>\r\n<p><!-- \/wp:image -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>The field &#8220;PluginType&#8221; references to a plugin assembly and automatically creates the necessary plugin step for us:<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:image {\"id\":418,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} --><\/p>\r\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"569\" height=\"74\" src=\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-23.png\" alt=\"Custom API Plugin Step\" class=\"wp-image-418\" srcset=\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-23.png 569w, https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-23-300x39.png 300w\" sizes=\"(max-width: 569px) 100vw, 569px\" \/>\r\n<figcaption class=\"wp-element-caption\">Custom API Plugin Step<\/figcaption>\r\n<\/figure>\r\n<p><!-- \/wp:image -->\r\n\r\n<!-- wp:heading {\"level\":3} --><\/p>\r\n<h3>Properties and limitations<\/h3>\r\n<p><!-- \/wp:heading -->\r\n\r\n<!-- wp:paragraph --><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:table {\"hasFixedLayout\":true,\"className\":\"is-style-regular\"} --><\/p>\r\n<figure class=\"wp-block-table is-style-regular\">\r\n<table class=\"has-fixed-layout\">\r\n<tbody>\r\n<tr>\r\n<td>Unique Name<\/td>\r\n<td>Schema name with publisher prefix<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Binding type<\/td>\r\n<td><em>Global \/ Entity \/ Entity collection<\/em><br \/>Similarly to custom action process we can bound it to a table or can be global.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Bound entity Logical Name<\/td>\r\n<td>If &#8220;Bindig type&#8221; is not &#8220;Global&#8221;, then the table schema name.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Is Function<\/td>\r\n<td><em>Yes \/ No<\/em><br \/><strong>Function:<\/strong> callable with HTTP GET method, no data change, input parameters can be passed with query parameters in the URL if there is any. <br \/><em>Limitations:<\/em> <br \/>&#8211; URL can be up to 2000 character long. Over that choose Action instead.<br \/>&#8211; Cannot use for workflows<br \/>&#8211; Cannot use in Power Automate cloud flows (unbound \/ bound action)<br \/>&#8211; Output paramter required<br \/><strong>Action:<\/strong> callable with HTTP POST method, input parameters can be passed in the request body.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Is Private<\/td>\r\n<td><em>Yes \/ No<\/em><br \/>If yes, then it will be available only for its owner, which is useful for testing and development, later you can switch any time.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Enabled for Workflow<\/td>\r\n<td><em>Yes \/ No<\/em><br \/>You can use it in workflows as step. If it is enabled, then it cannot be a function.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Allowed Custom Processing step Type<\/td>\r\n<td><em>None \/ Async Only \/ Sync and Async<\/em><br \/>You can limit how it can be run.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Execute Privilege Name<\/td>\r\n<td>\r\n<p>You can limit execution to a privlege.<br \/>There are some existing privileges but you can create custom one by creating a custom table and use its privilege. (Same privileges which are set for security roles)<\/p>\r\n<p>For example if\u00a0 there is a table &#8220;koger_license&#8221;, we want to bind execution to its read privilege then the privilege name is &#8220;prvReadkogero_license&#8221;.<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Plugin Type<\/td>\r\n<td>Lookup for plugin logic to run.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<figcaption class=\"wp-element-caption\">Custom API properties<\/figcaption>\r\n<\/figure>\r\n<p><!-- \/wp:table -->\r\n\r\n<!-- wp:heading {\"level\":3} --><\/p>\r\n<h3>Creating Parameters<\/h3>\r\n<p><!-- \/wp:heading -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>You can create input and output parameter as records seperately for custom APIs.<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:heading {\"level\":4} --><\/p>\r\n<h4>Input Parameter<\/h4>\r\n<p><!-- \/wp:heading -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>There is a talbe for input parameters called &#8220;Custom API Request Parameter&#8221;, which has to be named as\u00a0 &#8220;inputText&#8221; for our logic. Keep always in mind\u00a0 that &#8220;Unique Name&#8221; must be the same that you use in your plugin getting from &#8220;InputParameters&#8221;.<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:image {\"align\":\"center\",\"id\":410,\"sizeSlug\":\"full\",\"linkDestination\":\"none\",\"style\":{\"border\":{\"width\":\"1px\"}}} --><\/p>\r\n<figure class=\"wp-block-image aligncenter size-full has-custom-border\"><img decoding=\"async\" loading=\"lazy\" width=\"497\" height=\"581\" src=\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-21.png\" alt=\"New custom API Request Parameter\" class=\"wp-image-410\" style=\"border-width: 1px;\" srcset=\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-21.png 497w, https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-21-257x300.png 257w\" sizes=\"(max-width: 497px) 100vw, 497px\" \/>\r\n<figcaption class=\"wp-element-caption\">A new custom API request parameter<\/figcaption>\r\n<\/figure>\r\n<p><!-- \/wp:image -->\r\n\r\n<!-- wp:heading {\"level\":4} --><\/p>\r\n<h4>Output Parameter<\/h4>\r\n<p><!-- \/wp:heading -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>There is a table for output parameters: &#8220;Custom API Response Property&#8221;. This case this will be the &#8220;outputText&#8221;. Take care of the field &#8220;Unique Name&#8221; which must be the same which you use in the code to pass to &#8220;OutputParameters&#8221;.<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:image {\"align\":\"center\",\"id\":411,\"sizeSlug\":\"full\",\"linkDestination\":\"none\",\"style\":{\"border\":{\"width\":\"1px\"}}} --><\/p>\r\n<figure class=\"wp-block-image aligncenter size-full has-custom-border\"><img decoding=\"async\" loading=\"lazy\" width=\"463\" height=\"531\" src=\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-22.png\" alt=\"New Custom API Response Property\" class=\"wp-image-411\" style=\"border-width: 1px;\" srcset=\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-22.png 463w, https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/image-22-262x300.png 262w\" sizes=\"(max-width: 463px) 100vw, 463px\" \/>\r\n<figcaption class=\"wp-element-caption\">A new custom API response property<\/figcaption>\r\n<\/figure>\r\n<p><!-- \/wp:image -->\r\n\r\n<!-- wp:heading {\"level\":3} --><\/p>\r\n<h3>Testing from browser<\/h3>\r\n<p><!-- \/wp:heading -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>Since our custom API is a function, we can use simply an HTTP GET request with query parameter in the URL. This can be done with a web broswer, too. The URL with my environment:<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:shortcode --><\/p>\r\n<p>https:\/\/org2b160094.crm4.dynamics.com\/api\/data\/v9.2\/koger_convert_to_uppercase(inputText=&#8217;PowerApps&#8217;)<\/p>\r\n<p><!-- \/wp:shortcode -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p><strong>Note:<\/strong> see carefully how I passed the input parameter. In case of more parameters you can specify them one-by-one seperated by commas.<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>Response:<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:code {\"lineNumbers\":true} --><\/p>\r\n<pre title=\"outputText\" class=\"wp-block-code\"><code lang=\"json\" class=\"language-json line-numbers\">{\r\n\"@odata.context\": \"https:\/\/org2b160094.crm4.dynamics.com\/api\/data\/v9.2\/$metadata#Microsoft.Dynamics.CRM.koger_convert_to_uppercaseResponse\",\r\n\"outputText\": \"POWERAPPS\"\r\n}<\/code><\/pre>\r\n<p><!-- \/wp:code -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>We successfully received the upper case text in the body in the property &#8220;outputText&#8221;.<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:heading --><\/p>\r\n<h2>Conclusion<\/h2>\r\n<p><!-- \/wp:heading -->\r\n\r\n<!-- wp:paragraph --><\/p>\r\n<p>We have successfully created a Custom API that calls an existing plugin logic. We reviewed the possible configurations and ha a look at how to call a function-type custom API from the browser. So now we can have a reusable API that we can make available for all developers!<\/p>\r\n<p><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:heading --><\/p>\r\n<h2>Sources<\/h2>\r\n<p><!-- \/wp:heading -->\r\n\r\n<!-- wp:list {\"ordered\":true} --><\/p>\r\n<ol><!-- wp:list-item -->\r\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/power-apps\/developer\/data-platform\/custom-api\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/learn.microsoft.com\/en-us\/power-apps\/developer\/data-platform\/custom-api<\/a><\/li>\r\n<\/ol>","protected":false},"excerpt":{"rendered":"<p>In this post I will show you how you can create a custom API in Dataverse. I showed you in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":360,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62],"tags":[63,65,7],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to create a custom API in Dataverse - KOGERO<\/title>\n<meta name=\"description\" content=\"Custom API l\u00e9trehoz\u00e1sa Dataverse-ben step-by-step \u00fczleti alkalmaz\u00e1sok fejleszt\u00e9s\u00e9hez vagy Dynamics 365 tov\u00e1bb fejleszt\u00e9s\u00e9re.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to create a custom API in Dataverse - KOGERO\" \/>\n<meta property=\"og:description\" content=\"Custom API l\u00e9trehoz\u00e1sa Dataverse-ben step-by-step \u00fczleti alkalmaz\u00e1sok fejleszt\u00e9s\u00e9hez vagy Dynamics 365 tov\u00e1bb fejleszt\u00e9s\u00e9re.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/\" \/>\n<meta property=\"og:site_name\" content=\"KOGERO\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=100087142779981\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/profile.php?id=100087142779981\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-14T19:28:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-31T14:28:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/Dataverse_1600x1600.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"680\" \/>\n\t<meta property=\"og:image:height\" content=\"680\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"koger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"koger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.kogero.hu\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.kogero.hu\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/\"},\"author\":{\"name\":\"koger\",\"@id\":\"https:\/\/www.kogero.hu\/#\/schema\/person\/6c15ee4d93ffb9cabfde83439041c202\"},\"headline\":\"How to create a custom API in Dataverse\",\"datePublished\":\"2022-12-14T19:28:06+00:00\",\"dateModified\":\"2022-12-31T14:28:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.kogero.hu\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/\"},\"wordCount\":1911,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.kogero.hu\/#\/schema\/person\/6c15ee4d93ffb9cabfde83439041c202\"},\"image\":{\"@id\":\"https:\/\/www.kogero.hu\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/Dataverse_1600x1600.webp\",\"keywords\":[\"Action\",\"custom-API\",\"Plugin\"],\"articleSection\":[\"Dataverse\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.kogero.hu\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/\",\"url\":\"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/\",\"name\":\"How to create a custom API in Dataverse - KOGERO\",\"isPartOf\":{\"@id\":\"https:\/\/www.kogero.hu\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.kogero.hu\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/Dataverse_1600x1600.webp\",\"datePublished\":\"2022-12-14T19:28:06+00:00\",\"dateModified\":\"2022-12-31T14:28:25+00:00\",\"description\":\"Custom API l\u00e9trehoz\u00e1sa Dataverse-ben step-by-step \u00fczleti alkalmaz\u00e1sok fejleszt\u00e9s\u00e9hez vagy Dynamics 365 tov\u00e1bb fejleszt\u00e9s\u00e9re.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[[\"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/\"]]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#primaryimage\",\"url\":\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/Dataverse_1600x1600.webp\",\"contentUrl\":\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/Dataverse_1600x1600.webp\",\"width\":680,\"height\":680,\"caption\":\"dataverse_logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Kezd\u0151lap\",\"item\":\"https:\/\/www.kogero.hu\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Custom API l\u00e9trehoz\u00e1sa Dataverse-ben\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.kogero.hu\/en\/#website\",\"url\":\"https:\/\/www.kogero.hu\/en\/\",\"name\":\"KOGERO\",\"description\":\"A Power Platform &amp; CRM Developer&#039;s blog\",\"publisher\":{\"@id\":\"https:\/\/www.kogero.hu\/en\/#\/schema\/person\/6c15ee4d93ffb9cabfde83439041c202\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.kogero.hu\/en\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.kogero.hu\/en\/#\/schema\/person\/6c15ee4d93ffb9cabfde83439041c202\",\"name\":\"koger\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.kogero.hu\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/10\/logo_kogero.hu_.png\",\"contentUrl\":\"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/10\/logo_kogero.hu_.png\",\"width\":298,\"height\":90,\"caption\":\"koger\"},\"logo\":{\"@id\":\"https:\/\/www.kogero.hu\/en\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/www.kogero.hu\",\"https:\/\/www.facebook.com\/profile.php?id=100087142779981\"],\"url\":\"https:\/\/www.kogero.hu\/en\/author\/koger\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to create a custom API in Dataverse - KOGERO","description":"Custom API l\u00e9trehoz\u00e1sa Dataverse-ben step-by-step \u00fczleti alkalmaz\u00e1sok fejleszt\u00e9s\u00e9hez vagy Dynamics 365 tov\u00e1bb fejleszt\u00e9s\u00e9re.","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:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/","og_locale":"en_US","og_type":"article","og_title":"How to create a custom API in Dataverse - KOGERO","og_description":"Custom API l\u00e9trehoz\u00e1sa Dataverse-ben step-by-step \u00fczleti alkalmaz\u00e1sok fejleszt\u00e9s\u00e9hez vagy Dynamics 365 tov\u00e1bb fejleszt\u00e9s\u00e9re.","og_url":"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/","og_site_name":"KOGERO","article_publisher":"https:\/\/www.facebook.com\/profile.php?id=100087142779981","article_author":"https:\/\/www.facebook.com\/profile.php?id=100087142779981","article_published_time":"2022-12-14T19:28:06+00:00","article_modified_time":"2022-12-31T14:28:25+00:00","og_image":[{"width":680,"height":680,"url":"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/Dataverse_1600x1600.webp","type":"image\/webp"}],"author":"koger","twitter_card":"summary_large_image","twitter_misc":{"Written by":"koger","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.kogero.hu\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#article","isPartOf":{"@id":"https:\/\/www.kogero.hu\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/"},"author":{"name":"koger","@id":"https:\/\/www.kogero.hu\/#\/schema\/person\/6c15ee4d93ffb9cabfde83439041c202"},"headline":"How to create a custom API in Dataverse","datePublished":"2022-12-14T19:28:06+00:00","dateModified":"2022-12-31T14:28:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.kogero.hu\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/"},"wordCount":1911,"commentCount":0,"publisher":{"@id":"https:\/\/www.kogero.hu\/#\/schema\/person\/6c15ee4d93ffb9cabfde83439041c202"},"image":{"@id":"https:\/\/www.kogero.hu\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#primaryimage"},"thumbnailUrl":"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/Dataverse_1600x1600.webp","keywords":["Action","custom-API","Plugin"],"articleSection":["Dataverse"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.kogero.hu\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/","url":"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/","name":"How to create a custom API in Dataverse - KOGERO","isPartOf":{"@id":"https:\/\/www.kogero.hu\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#primaryimage"},"image":{"@id":"https:\/\/www.kogero.hu\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#primaryimage"},"thumbnailUrl":"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/Dataverse_1600x1600.webp","datePublished":"2022-12-14T19:28:06+00:00","dateModified":"2022-12-31T14:28:25+00:00","description":"Custom API l\u00e9trehoz\u00e1sa Dataverse-ben step-by-step \u00fczleti alkalmaz\u00e1sok fejleszt\u00e9s\u00e9hez vagy Dynamics 365 tov\u00e1bb fejleszt\u00e9s\u00e9re.","breadcrumb":{"@id":"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":[["https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/"]]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#primaryimage","url":"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/Dataverse_1600x1600.webp","contentUrl":"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/12\/Dataverse_1600x1600.webp","width":680,"height":680,"caption":"dataverse_logo"},{"@type":"BreadcrumbList","@id":"https:\/\/www.kogero.hu\/en\/2022\/12\/14\/custom-api-letrehozasa-dataverse-ben\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Kezd\u0151lap","item":"https:\/\/www.kogero.hu\/en\/"},{"@type":"ListItem","position":2,"name":"Custom API l\u00e9trehoz\u00e1sa Dataverse-ben"}]},{"@type":"WebSite","@id":"https:\/\/www.kogero.hu\/en\/#website","url":"https:\/\/www.kogero.hu\/en\/","name":"KOGERO","description":"A Power Platform &amp; CRM Developer&#039;s blog","publisher":{"@id":"https:\/\/www.kogero.hu\/en\/#\/schema\/person\/6c15ee4d93ffb9cabfde83439041c202"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.kogero.hu\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.kogero.hu\/en\/#\/schema\/person\/6c15ee4d93ffb9cabfde83439041c202","name":"koger","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.kogero.hu\/en\/#\/schema\/person\/image\/","url":"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/10\/logo_kogero.hu_.png","contentUrl":"https:\/\/www.kogero.hu\/wp-content\/uploads\/2022\/10\/logo_kogero.hu_.png","width":298,"height":90,"caption":"koger"},"logo":{"@id":"https:\/\/www.kogero.hu\/en\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/www.kogero.hu","https:\/\/www.facebook.com\/profile.php?id=100087142779981"],"url":"https:\/\/www.kogero.hu\/en\/author\/koger\/"}]}},"_links":{"self":[{"href":"https:\/\/www.kogero.hu\/en\/wp-json\/wp\/v2\/posts\/396"}],"collection":[{"href":"https:\/\/www.kogero.hu\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kogero.hu\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kogero.hu\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kogero.hu\/en\/wp-json\/wp\/v2\/comments?post=396"}],"version-history":[{"count":19,"href":"https:\/\/www.kogero.hu\/en\/wp-json\/wp\/v2\/posts\/396\/revisions"}],"predecessor-version":[{"id":635,"href":"https:\/\/www.kogero.hu\/en\/wp-json\/wp\/v2\/posts\/396\/revisions\/635"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kogero.hu\/en\/wp-json\/wp\/v2\/media\/360"}],"wp:attachment":[{"href":"https:\/\/www.kogero.hu\/en\/wp-json\/wp\/v2\/media?parent=396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kogero.hu\/en\/wp-json\/wp\/v2\/categories?post=396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kogero.hu\/en\/wp-json\/wp\/v2\/tags?post=396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}