{"id":223,"date":"2022-05-14T14:00:00","date_gmt":"2022-05-14T14:00:00","guid":{"rendered":""},"modified":"2023-07-02T22:56:01","modified_gmt":"2023-07-02T17:26:01","slug":"dml-data-manipulation-language-in-apex","status":"publish","type":"post","link":"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/","title":{"rendered":"DML &#8211; Data Manipulation Language in Apex"},"content":{"rendered":"<h1 style=\"text-align: left;\">What is DML in Apex ?<\/h1>\n<p><b><span style=\"font-size: medium;\">Data Manipulation Language (DML)<\/span><\/b><\/p>\n<p>Create and modify records in Salesforce by using the Data Manipulation Language, abbreviated as DML. DML provides a straightforward way to manage records by providing simple statements to insert, update, merge, delete, and restore records.<\/p>\n<h3 style=\"text-align: left;\"># <u>DML Statements:<br \/>\n<\/u><span style=\"font-weight: normal;\">The following DML statements are available.<\/span><\/h3>\n<ul style=\"text-align: left;\">\n<li>insert<\/li>\n<li>update<\/li>\n<li>upsert<\/li>\n<li>delete<\/li>\n<li>undelete<\/li>\n<li>merge<\/li>\n<\/ul>\n<p>Each DML statement accepts either a single sObject or a list (or array) of sObjects. Operating on a list of sObjects is a more efficient way for processing records.<br \/>\nAll those statements, except a couple, are familiar database operations. The upsert and merge statements are particular to Salesforce and can be quite handy.<br \/>\nThe upsert DML operation creates new records and updates sObject records within a single statement, using a specified field to determine the presence of existing objects, or the ID field if no field is specified.<br \/>\nThe merge statement merges up to three records of the same sObject type into one of the records, deleting the others, and re-parenting any related records.<\/p>\n<h3 style=\"text-align: left;\"># <u>Apex DML Statements<\/u> :<\/h3>\n<p><b>Insert Statement : <\/b><br \/>\nThe insert DML operation adds one or more sObjects, such as individual accounts or contacts, to your organization\u2019s data. insert is analogous to the INSERT statement in SQL.<\/p>\n<pre><code>Account newAcct = new Account(name = 'Acme');\ntry {\n   insert newAcct;\n} catch (DmlException e) {\n\/\/ Process exception here\n}<\/code><\/pre>\n<p><b>Update Statement :<\/b><br \/>\nThe update DML operation modifies one or more existing sObject records, such as individual accounts or contacts, in your organization\u2019s data. update is analogous to the UPDATE statement in SQL.<\/p>\n<pre><code>Account a = new Account(Name='Acme2');\ninsert(a);\n\nAccount myAcct = [SELECT Id, Name, BillingCity FROM Account WHERE Id = :a.Id];\nmyAcct.BillingCity = 'San Francisco'; \n\ntry {\n    update myAcct;\n} catch (DmlException e) {\n    \/\/ Process exception here\n}<\/code><\/pre>\n<p><b>Upsert Statement :<br \/>\n<\/b>If you have a list containing a mix of new and existing records, you can process insertions and updates to all records in the list by using the upsert statement. Upsert helps avoid the creation of duplicate records and can save you time as you don\u2019t have to determine which records exist first.<br \/>\nThe upsert statement matches the sObjects with existing records by comparing values of one field. If you don\u2019t specify a field when calling this statement, the upsert statement uses the sObject\u2019s ID to match the sObject with existing records in Salesforce. Alternatively, you can specify a field to use for matching. For custom objects, specify a custom field marked as external ID. For standard objects, you can specify any field that has the idLookup property set to true. For example, the Email field of Contact or User has the idLookup property set.<\/p>\n<pre><code>List&lt;Account&gt; acctList = new List&lt;Account&gt;();\n\/\/ Fill the accounts list with some accounts\n\ntry {\n    upsert acctList;\n} catch (DmlException e) {\n   \n}<\/code><\/pre>\n<p>Upsert uses the sObject record&#8217;s primary key (the ID), an idLookup field, or an external ID field to determine whether it should create a new record or update an existing one:<\/p>\n<ul style=\"text-align: left;\">\n<li>If the key is not matched, a new object record is created.<\/li>\n<li>If the key is matched once, the existing object record is updated.<\/li>\n<li>If the key is matched multiple times, an error is generated and the object record is neither inserted or updated.<\/li>\n<\/ul>\n<p><b>Delete Statement : <\/b><br \/>\nThe delete DML operation deletes one or more existing sObject records, such as individual accounts or contacts, from your organization\u2019s data. delete is analogous to the delete() statement in the SOAP API.<\/p>\n<pre><code>Account[] doomedAccts = [SELECT Id, Name FROM Account WHERE Name = 'DotCom']; \ntry {\n    delete doomedAccts;\n} catch (DmlException e) {\n    \/\/ Process exception here\n}<\/code><\/pre>\n<p><b>Undelete Statement :<\/b><br \/>\nThe undelete DML operation restores one or more existing sObject records, such as individual accounts or contacts, from your organization\u2019s Recycle Bin. undelete is analogous to the UNDELETE statement in SQL.<\/p>\n<pre><code>Account[] savedAccts = [SELECT Id, Name FROM Account WHERE Name = 'Universal Containers' ALL ROWS]; \ntry {\n    undelete savedAccts;\n} catch (DmlException e) {\n    \/\/ Process exception here\n}<\/code><\/pre>\n<p><b>Merge Statement :<\/b><br \/>\nThe merge statement merges up to three records of the same sObject type into one of the records, deleting the others, and re-parenting any related records.<\/p>\n<pre><code>List&lt;Account&gt; ls = new List&lt;Account&gt;{new Account(name='Acme Inc.'),new Account(name='Acme')};\ninsert ls;\nAccount masterAcct = [SELECT Id, Name FROM Account WHERE Name = 'Acme Inc.' LIMIT 1];\nAccount mergeAcct = [SELECT Id, Name FROM Account WHERE Name = 'Acme' LIMIT 1];\ntry {\n    merge masterAcct mergeAcct;\n} catch (DmlException e) {\n    \/\/ Process exception here\n}<\/code><\/pre>\n<h3 style=\"text-align: left;\"># Bulk DML :<\/h3>\n<p>You can perform DML operations either on a single sObject, or in bulk on a list of sObjects. Performing bulk DML operations is the recommended way because it helps avoid hitting governor limits, such as the DML limit of 150 statements per Apex transaction. This limit is in place to ensure fair access to shared resources in the Lightning Platform. Performing a DML operation on a list of sObjects counts as one DML statement, not as one statement for each sObject.<\/p>\n<p>This example inserts contacts in bulk by inserting a list of contacts in one call. The sample then updates those contacts in bulk too.<\/p>\n<p>1. Execute this snippet in the Developer Console using Anonymous Apex.<\/p>\n<pre><code>\/\/ Create a list of contacts\nList&lt;Contact&gt; conList = new List&lt;Contact&gt; {\n    new Contact(FirstName='Joe',LastName='Smith',Department='Finance'),\n        new Contact(FirstName='Kathy',LastName='Smith',Department='Technology'),\n        new Contact(FirstName='Caroline',LastName='Roth',Department='Finance'),\n        new Contact(FirstName='Kim',LastName='Shain',Department='Education')};\n\/\/ Bulk insert all contacts with one DML call\ninsert conList;\n\/\/ List to hold the new contacts to update\nList&lt;Contact&gt; listToUpdate = new List&lt;Contact&gt;();\n\/\/ Iterate through the list and add a title only\n\/\/   if the department is Finance\nfor(Contact con : conList) {\n    if (con.Department == 'Finance') {\n        con.Title = 'Financial analyst';\n        \/\/ Add updated contact sObject to the list.\n        listToUpdate.add(con);\n    }\n}\n\/\/ Bulk update all contacts with one DML call\nupdate listToUpdate;<\/code><\/pre>\n<p>2.\u00a0Inspect the contacts recently created in your org.<\/p>\n<h3 style=\"text-align: left;\"># DML Statement Exceptions :<\/h3>\n<p>If a DML operation fails, it returns an exception of type DmlException. You can catch exceptions in your code to handle error conditions.<br \/>\nThis example produces a DmlException because it attempts to insert an account without the required Name field. The exception is caught in the catch block.<\/p>\n<pre><code>try {\n    \/\/ This causes an exception because \n    \/\/   the required Name field is not provided.\n    Account acct = new Account();\n    \/\/ Insert the account \n    insert acct;\n} catch (DmlException e) {\n    System.debug('A DML exception has occurred: ' +\n                e.getMessage());\n}<\/code><\/pre>\n<h3 style=\"text-align: left;\"># Database Methods:<\/h3>\n<p>Apex contains the built-in Database class, which provides methods that perform DML operations and mirror the DML statement counterparts.<br \/>\nThese Database methods are static and are called on the class name.<\/p>\n<ul style=\"text-align: left;\">\n<li>Database.insert()<\/li>\n<li>Database.update()<\/li>\n<li>Database.upsert()<\/li>\n<li>Database.delete()<\/li>\n<li>Database.undelete()<\/li>\n<li>Database.merge()<\/li>\n<\/ul>\n<p>Unlike DML statements, Database methods have an optional allOrNone parameter that allows you to specify whether the operation should partially succeed. When this parameter is set to false, if errors occur on a partial set of records, the successful records will be committed and errors will be returned for the failed records. Also, no exceptions are thrown with the partial success option.<\/p>\n<p>The Database methods return result objects containing success or failure information for each record. For example, insert and update operations each return an array of Database.SaveResult objects.<\/p>\n<pre><code>Database.SaveResult[] results = Database.insert(recordList, false);<\/code><\/pre>\n<h3 style=\"text-align: left;\">Differences between Database Methods and DML Statements :<\/h3>\n<table style=\"width: 100%;\">\n<tbody>\n<tr>\n<th>DML Statements<\/th>\n<th>Database Methods<\/th>\n<\/tr>\n<tr>\n<td>You cannot get the list of success and failed records.<\/td>\n<td>You can get the list of success and failed records as we have seen in the example.<\/td>\n<\/tr>\n<tr>\n<td>Partial Update is not allowed. For example, if you have 100 records in list, then either all the records will be updated or none.<\/td>\n<td>Partial update is allowed. You can specify the Parameter in Database method as true or false, true to allow the partial update and false for not allowing the same.<\/td>\n<\/tr>\n<tr>\n<td>Example \u2212 insert accounts;<\/td>\n<td>Example \u2212 Database.insert(listName, False), where false indicate that partial update is not allowed.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4 style=\"text-align: left;\">Resources:<\/h4>\n<p>#\u00a0<a href=\"https:\/\/trailhead.salesforce.com\/content\/learn\/modules\/apex_database\/apex_database_dml\" target=\"_blank\" rel=\"nofollow noopener\">Manipulate Records with DML &#8211; Trailhead Module<\/a><\/p>\n<p>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is DML in Apex ? Data Manipulation Language (DML) Create and modify records in Salesforce by using the Data Manipulation Language, abbreviated as DML. DML provides a straightforward way to manage records by providing simple statements to insert, update, merge, delete, and restore records. # DML Statements: The following DML statements are available. insert&#8230;<\/p>\n","protected":false},"author":2,"featured_media":108,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,27],"tags":[],"class_list":["post-223","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apex","category-dml"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>DML - Data Manipulation Language in Apex - Swapnil SFDC | Salesforce 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:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DML - Data Manipulation Language in Apex - Swapnil SFDC | Salesforce Blog\" \/>\n<meta property=\"og:description\" content=\"What is DML in Apex ? Data Manipulation Language (DML) Create and modify records in Salesforce by using the Data Manipulation Language, abbreviated as DML. DML provides a straightforward way to manage records by providing simple statements to insert, update, merge, delete, and restore records. # DML Statements: The following DML statements are available. insert...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/\" \/>\n<meta property=\"og:site_name\" content=\"Swapnil SFDC | Salesforce Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-14T14:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-02T17:26:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2022\/05\/DML-20in-20Salesforce.png\" \/>\n\t<meta property=\"og:image:width\" content=\"728\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Swapnil\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SwapnilZambare7\" \/>\n<meta name=\"twitter:site\" content=\"@SwapnilZambare7\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Swapnil\" \/>\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\":\"WebPage\",\"@id\":\"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/\",\"url\":\"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/\",\"name\":\"DML - Data Manipulation Language in Apex - Swapnil SFDC | Salesforce Blog\",\"isPartOf\":{\"@id\":\"https:\/\/swapnilzambare.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2022\/05\/DML-20in-20Salesforce.png\",\"datePublished\":\"2022-05-14T14:00:00+00:00\",\"dateModified\":\"2023-07-02T17:26:01+00:00\",\"author\":{\"@id\":\"https:\/\/swapnilzambare.com\/blog\/#\/schema\/person\/8ababd34e5d3bc24fa10df2a87c5ac45\"},\"breadcrumb\":{\"@id\":\"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/#primaryimage\",\"url\":\"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2022\/05\/DML-20in-20Salesforce.png\",\"contentUrl\":\"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2022\/05\/DML-20in-20Salesforce.png\",\"width\":728,\"height\":512},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/swapnilzambare.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DML &#8211; Data Manipulation Language in Apex\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/swapnilzambare.com\/blog\/#website\",\"url\":\"https:\/\/swapnilzambare.com\/blog\/\",\"name\":\"Swapnil SFDC | Salesforce Blog\",\"description\":\"Hey trailblazers, Welcome to Swapnil SFDC world.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/swapnilzambare.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/swapnilzambare.com\/blog\/#\/schema\/person\/8ababd34e5d3bc24fa10df2a87c5ac45\",\"name\":\"Swapnil\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/swapnilzambare.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/50610dedda801c6c795bfc5b650f7f4ed5f7c34b3b5c9c7148d702eb351c003b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/50610dedda801c6c795bfc5b650f7f4ed5f7c34b3b5c9c7148d702eb351c003b?s=96&d=mm&r=g\",\"caption\":\"Swapnil\"},\"url\":\"https:\/\/swapnilzambare.com\/blog\/author\/swapnil-zambare\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"DML - Data Manipulation Language in Apex - Swapnil SFDC | Salesforce 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:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/","og_locale":"en_US","og_type":"article","og_title":"DML - Data Manipulation Language in Apex - Swapnil SFDC | Salesforce Blog","og_description":"What is DML in Apex ? Data Manipulation Language (DML) Create and modify records in Salesforce by using the Data Manipulation Language, abbreviated as DML. DML provides a straightforward way to manage records by providing simple statements to insert, update, merge, delete, and restore records. # DML Statements: The following DML statements are available. insert...","og_url":"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/","og_site_name":"Swapnil SFDC | Salesforce Blog","article_published_time":"2022-05-14T14:00:00+00:00","article_modified_time":"2023-07-02T17:26:01+00:00","og_image":[{"width":728,"height":512,"url":"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2022\/05\/DML-20in-20Salesforce.png","type":"image\/png"}],"author":"Swapnil","twitter_card":"summary_large_image","twitter_creator":"@SwapnilZambare7","twitter_site":"@SwapnilZambare7","twitter_misc":{"Written by":"Swapnil","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/","url":"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/","name":"DML - Data Manipulation Language in Apex - Swapnil SFDC | Salesforce Blog","isPartOf":{"@id":"https:\/\/swapnilzambare.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/#primaryimage"},"image":{"@id":"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/#primaryimage"},"thumbnailUrl":"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2022\/05\/DML-20in-20Salesforce.png","datePublished":"2022-05-14T14:00:00+00:00","dateModified":"2023-07-02T17:26:01+00:00","author":{"@id":"https:\/\/swapnilzambare.com\/blog\/#\/schema\/person\/8ababd34e5d3bc24fa10df2a87c5ac45"},"breadcrumb":{"@id":"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/#primaryimage","url":"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2022\/05\/DML-20in-20Salesforce.png","contentUrl":"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2022\/05\/DML-20in-20Salesforce.png","width":728,"height":512},{"@type":"BreadcrumbList","@id":"https:\/\/swapnilzambare.com\/blog\/dml-data-manipulation-language-in-apex\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/swapnilzambare.com\/blog\/"},{"@type":"ListItem","position":2,"name":"DML &#8211; Data Manipulation Language in Apex"}]},{"@type":"WebSite","@id":"https:\/\/swapnilzambare.com\/blog\/#website","url":"https:\/\/swapnilzambare.com\/blog\/","name":"Swapnil SFDC | Salesforce Blog","description":"Hey trailblazers, Welcome to Swapnil SFDC world.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/swapnilzambare.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/swapnilzambare.com\/blog\/#\/schema\/person\/8ababd34e5d3bc24fa10df2a87c5ac45","name":"Swapnil","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/swapnilzambare.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/50610dedda801c6c795bfc5b650f7f4ed5f7c34b3b5c9c7148d702eb351c003b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/50610dedda801c6c795bfc5b650f7f4ed5f7c34b3b5c9c7148d702eb351c003b?s=96&d=mm&r=g","caption":"Swapnil"},"url":"https:\/\/swapnilzambare.com\/blog\/author\/swapnil-zambare\/"}]}},"_links":{"self":[{"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/posts\/223","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/comments?post=223"}],"version-history":[{"count":2,"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/posts\/223\/revisions"}],"predecessor-version":[{"id":319,"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/posts\/223\/revisions\/319"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/media\/108"}],"wp:attachment":[{"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/media?parent=223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/categories?post=223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/tags?post=223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}