{"id":762,"date":"2012-02-11T01:22:00","date_gmt":"2012-02-11T01:22:00","guid":{"rendered":"http:\/\/web03.partners.extranet.chrisse.com\/wordpress\/?p=762"},"modified":"2023-06-06T17:06:31","modified_gmt":"2023-06-06T15:06:31","slug":"how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1","status":"publish","type":"post","link":"https:\/\/blog.chrisse.se\/?p=762","title":{"rendered":"How the Active Directory \u2013 Data Store Really Works (Inside NTDS.dit) \u2013 Part 1"},"content":{"rendered":"\n<p>You might as I have asked yourself many times \u2013 What is inside NTDS.dit? (Most experienced Active Directory admins knows that NTDS.dit is the database and the physical on disk store that Active Directory uses to store information \u2013 most of you have probably got in touch with NTDS.dit during backup and restore scenarios)<\/p>\n\n\n\n<p>Long story in a short version \u2013 I wasn&#8217;t satisfy not knowing \u2013 neither was I after being reading the following article:<br>(That I actually think isn&#8217;t that bad \u2013 but is also probably the most detailed public available information on the subject)<br>[1] <a href=\"http:\/\/technet.microsoft.com\/en-us\/library\/cc772829(WS.10).aspx\">http:\/\/technet.microsoft.com\/en-us\/library\/cc772829(WS.10).aspx<\/a><\/p>\n\n\n\n<p>So I decided with a very good friend of mine <a href=\"http:\/\/stoyanoff.info\/\">Stanimir Stoyanov<\/a> (Microsoft Visual C# MVP) to go ahead and build a tool that could read NTDS.dit and decode its internals, and then we started a journey that has given us invaluable knowledge at this part of Active Directory, this is the first article in a series of articles that will describe what&#8217;s really inside NTDS.dit and how Active Directory works on the database layer.<\/p>\n\n\n\n<p>The illustration below has been presented in various documentations since Active Directory was initially released over 10 years ago; a similar illustration is also available in (However after this research project it&#8217;s actually turning out to be inaccurate in some aspects \u2013 in the way the DRA\/REPL communicates with the DBLayer) [1]<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"415\" src=\"https:\/\/blog.chrisse.se\/wp-content\/uploads\/2023\/06\/image-41-1024x415.png\" alt=\"\" class=\"wp-image-1069\" srcset=\"https:\/\/blog.chrisse.se\/wp-content\/uploads\/2023\/06\/image-41-1024x415.png 1024w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2023\/06\/image-41-300x121.png 300w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2023\/06\/image-41-768x311.png 768w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2023\/06\/image-41.png 1356w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p><span style=\"font-family: Franklin Gothic Demi; font-size: 10pt;\">Table&nbsp;1: DSA Components (Simplified for the DBLayer)<br><\/span><\/p>\n\n\n\n<div style=\"margin-left: 77pt;\">\n<table style=\"border-collapse: collapse;\" border=\"0\"><colgroup> <col style=\"width: 228px;\"> <col style=\"width: 410px;\"><\/colgroup>\n<tbody valign=\"top\">\n<tr style=\"background: #d9d9d9;\">\n<td style=\"border-width: 1.5pt 0.5pt 0.5pt 1.5pt; border-style: solid; border-color: gray; padding-right: 7px; padding-left: 7px;\" valign=\"middle\">\n<p style=\"text-align: center;\"><span style=\"font-family: Franklin Gothic Demi Cond; font-size: 9pt;\">Component<\/span><\/p>\n<\/td>\n<td style=\"border-width: 1.5pt 1.5pt 0.5pt medium; border-style: solid solid solid none; border-color: gray gray gray currentColor; padding-right: 7px; padding-left: 7px;\">\n<p style=\"text-align: center;\"><span style=\"font-family: Franklin Gothic Demi Cond; font-size: 9pt;\">Description<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: medium 0.5pt 0.5pt 1.5pt; border-style: none solid solid; border-color: currentColor gray gray; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Ntdsa.dll \u2013 Directory System Agent<\/span><\/td>\n<td style=\"border-width: medium 1.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">The DSA, which runs as Ntdsa.dll on each domain controller, provides the interfaces through which directory clients and other directory servers gain access to the directory database (the DBLayer). In addition, the DSA enforces directory semantics, maintains the schema, guarantees object identity, and enforces data types on attributes.<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: medium 0.5pt 0.5pt 1.5pt; border-style: none solid solid; border-color: currentColor gray gray; padding-right: 7px; padding-left: 7px;\"><span style=\"color: black; font-family: Arial; font-size: 9pt;\">Esent.dll \u2013 Extensible Storage Engine (ESE) APIs<\/span><\/td>\n<td style=\"border-width: medium 1.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">The Extensible Storage Engine (ESE) is an advanced indexed and sequential access method (ISAM) storage technology. ESE enables applications to store and retrieve data from tables using indexed or sequential cursor navigation. It supports denormalized schemas including wide tables with numerous sparse columns, multi-valued columns, and sparse and rich indexes. It enables applications to enjoy a consistent data state using transacted data update and retrieval.<br><\/span>\n<p>&nbsp;<\/p>\n<p><span style=\"font-family: Arial; font-size: 9pt;\">ESE was formerly known as Joint Engine Technology (JET) Blue, The DBLayer uses the ESE APIs documented here: <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/desktop\/gg269259(v=exchg.10).aspx\">http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/desktop\/gg269259(v=exchg.10).aspx<\/a><br><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: medium 0.5pt 1.5pt 1.5pt; border-style: none solid solid; border-color: currentColor gray gray; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">NTDS.dit<\/span><\/td>\n<td style=\"border-width: medium 1.5pt 1.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">The on physical-disk file that represent the ESE\/JetBlue database that holds the information store for the given DSA\/Active Directory Domain Controller.<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n\n\n<p><strong>Data Store Physical Structure \/ Inside NTDS.dit &#8211; Tables<br><\/strong><\/p>\n\n\n\n<p>Finally we can start looking into the content\/internal structure of NTDS.dit \u2013 but first let&#8217;s take a look on what has been reveled before, the illustration below is from [1] and is accurate as far as outside the white box that represent the tables within the database, the tables do exist (Except for * &#8220;sd_table&#8221; on Windows 2000 DSAs) \u2013 but there is more tables that isn&#8217;t mentioned in this example.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"316\" src=\"https:\/\/blog.chrisse.se\/wp-content\/uploads\/2023\/06\/image-42-1024x316.png\" alt=\"\" class=\"wp-image-1071\" srcset=\"https:\/\/blog.chrisse.se\/wp-content\/uploads\/2023\/06\/image-42-1024x316.png 1024w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2023\/06\/image-42-300x93.png 300w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2023\/06\/image-42-768x237.png 768w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2023\/06\/image-42.png 1198w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>So it&#8217;s about time to reveal the real table structure of an NTDS.dit database file \u2013 It&#8217;s time to use the tool we produced to first discover this:<\/p>\n\n\n\n<p><span style=\"font-family: Franklin Gothic Demi; font-size: 10pt;\">Table&nbsp;2: NTDS.DIT &#8211; Tables<br><\/span><\/p>\n\n\n\n<div style=\"margin-left: 77pt;\">\n<table style=\"border-collapse: collapse;\" border=\"0\"><colgroup> <col style=\"width: 231px;\"> <col style=\"width: 407px;\"> <col style=\"width: 407px;\"><\/colgroup>\n<tbody valign=\"top\">\n<tr style=\"background: #d9d9d9;\">\n<td style=\"border-width: 1.5pt 0.5pt 0.5pt 1.5pt; border-style: solid; border-color: gray; padding-right: 7px; padding-left: 7px;\" valign=\"middle\"><span style=\"font-family: Franklin Gothic Demi Cond; font-size: 9pt;\">Table<\/span><\/td>\n<td style=\"border-width: 1.5pt 0.5pt 0.5pt medium; border-style: solid solid solid none; border-color: gray gray gray currentColor; padding-right: 7px; padding-left: 7px;\">\n<p style=\"text-align: center;\"><span style=\"font-family: Franklin Gothic Demi Cond; font-size: 9pt;\">Description<\/span><\/p>\n<\/td>\n<td style=\"border-width: 1.5pt 1.5pt 0.5pt medium; border-style: solid solid solid none; border-color: gray gray gray currentColor; padding-right: 7px; padding-left: 7px;\">\n<p style=\"text-align: center;\"><span style=\"font-family: Franklin Gothic Demi Cond; font-size: 9pt;\">Minimum DSA Version<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: medium 0.5pt 0.5pt 1.5pt; border-style: none solid solid; border-color: currentColor gray gray; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Datatable<\/span><\/td>\n<td style=\"border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Contains all objects and phantoms [2.1] represented as rows (1 object\/phantom = 1 row in the table) from any instanced naming context (NC) held as either writable or read-only by the Directory System Agent (DSA) hosting the database and where columns represent every [2:3] attribute present in the schema except linked attributes [2:2]<\/span>\n<p>&nbsp;<\/p>\n<p>[2.1]: phantoms are references to object&#8217;s hosted outside the given database (NTDS.DIT) and the given Directory System Agent (DSA)<\/p>\n<p>[2:2] Post-Windows Server 2003 the attribute &#8220;ntSecurityDescriptor&#8221; is stored in the &#8220;sd_table&#8221; rather than in the &#8220;datatable&#8221;<\/p>\n<p>[2:3] Some columns doesn&#8217;t reflect attributes and are columns pre-defined in the NTDS.dit template database generated by Microsoft (those are needed for internal states to the DSA)<\/p>\n<\/td>\n<td style=\"border-width: medium 1.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Windows 2000 Server<br><\/span>\n<p>&nbsp;<\/p>\n<p><span style=\"font-family: Arial; font-size: 9pt;\">Note: Windows Server 2008 R2 added a column to support the &#8220;is-Recycled&#8221; state<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: medium 0.5pt 0.5pt 1.5pt; border-style: none solid solid; border-color: currentColor gray gray; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Hiddentable<\/span><\/td>\n<td style=\"border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Contains one row but several columns that defines the state of the database as well the [2:2] DNT (reference) of the NTDSA-Settings object that represents this DSA (used for finding config information specific to this domain controller.)<\/span>\n<p>&nbsp;<\/p>\n<p>[2:4] The concept of DNTs (Distinguished Name Tags)<\/p>\n<\/td>\n<td style=\"border-width: medium 1.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Windows 2000 Server<br>Note: Windows Server 2003 Introduced additional state columns such as backupexpiration_col<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: medium 0.5pt 0.5pt 1.5pt; border-style: none solid solid; border-color: currentColor gray gray; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Link_table<\/span><\/td>\n<td style=\"border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Contains link-pair references (DNT, DNT), the link base (link id &gt;&gt; 1) and possibly a binary blob (In case of DN-binary, DN-string syntax)<\/span><\/td>\n<td style=\"border-width: medium 1.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Windows 2000 Server<\/span>\n<p>&nbsp;<\/p>\n<p>Note: Windows Server 2008 R2 added a column to support deactivated links for recycle-bin<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: medium 0.5pt 0.5pt 1.5pt; border-style: none solid solid; border-color: currentColor gray gray; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Sd_table<\/span><\/td>\n<td style=\"border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Contains single-instance-stored SDs (Security Descriptors) that pre-Windows Server 2003 was stored in the ntSecurityDescriptor attribute in the &#8220;datatable&#8221; \u2013 those are now instead referenced to the SDs in the &#8220;sd_table&#8221; that is, if more than one object has exactly the same security defined (Security Descriptor) both objects are referenced to the same row in the &#8220;sd_table&#8221;, hence the single-instance-storage and reducing the size needed to store Security Descriptors.<\/span><\/td>\n<td style=\"border-width: medium 1.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Windows Server 2003.<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: medium 0.5pt 0.5pt 1.5pt; border-style: none solid solid; border-color: currentColor gray gray; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Sdpropcounttable<\/span><\/td>\n<td style=\"border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Used by the Security Descriptor Propagation Demon (SDProp) responsible for Security Descriptor inheritance down the tree, within the local database<\/span><\/td>\n<td style=\"border-width: medium 1.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\">&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: medium 0.5pt 0.5pt 1.5pt; border-style: none solid solid; border-color: currentColor gray gray; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Sdproptable<\/span><\/td>\n<td style=\"border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Used by the Security Descriptor Propagation Demon (SDProp) responsible for Security Descriptor inheritance down the tree, within the local database<\/span><\/td>\n<td style=\"border-width: medium 1.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Windows 2000 Server<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: medium 0.5pt 0.5pt 1.5pt; border-style: none solid solid; border-color: currentColor gray gray; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Quota_rebuild_progress_table<\/span><\/td>\n<td style=\"border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Contains temporary information during quota tracking rebuild, for the Active Directory quota feature introduced in Windows Server 2003 \u2013 this allows the demon to keep track of processed objects.<\/span><\/td>\n<td style=\"border-width: medium 1.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Windows Server 2003<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: medium 0.5pt 0.5pt 1.5pt; border-style: none solid solid; border-color: currentColor gray gray; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Quota_table<\/span><\/td>\n<td style=\"border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Contains quota tracking information, for the Active Directory quota feature introduced in Windows Server 2003, quota tracking is peer naming context (NC) and for a given security principal identified by its SID.<\/span><\/td>\n<td style=\"border-width: medium 1.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">Windows Server 2003<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: medium 0.5pt 0.5pt 1.5pt; border-style: none solid solid; border-color: currentColor gray gray; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">MSysObjects<\/span><\/td>\n<td style=\"border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">ESE Internals \u2013 out of scope for this article<\/span><\/td>\n<td style=\"border-width: medium 1.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">N\/A<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: medium 0.5pt 0.5pt 1.5pt; border-style: none solid solid; border-color: currentColor gray gray; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">MSysObjectsShadow<\/span><\/td>\n<td style=\"border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">ESE Internals \u2013 out of scope for this article<\/span><\/td>\n<td style=\"border-width: medium 1.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">N\/A<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: medium 0.5pt 1.5pt 1.5pt; border-style: none solid solid; border-color: currentColor gray gray; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">MSysUnicodeFixupVer2<\/span><\/td>\n<td style=\"border-width: medium 0.5pt 1.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">ESE Internals \u2013 out of scope for this article<\/span><\/td>\n<td style=\"border-width: medium 1.5pt 1.5pt medium; border-style: none solid solid none; border-color: currentColor gray gray currentColor; padding-right: 7px; padding-left: 7px;\"><span style=\"font-family: Arial; font-size: 9pt;\">N\/A<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n\n\n<p>In the next article \u2013 we will take a deep-dive into the content and the structure of the &#8220;datatable&#8221; also known as the object-store.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You might as I have asked yourself many times \u2013 What is inside NTDS.dit? (Most experienced Active Directory admins knows that NTDS.dit is the database and the physical on disk store that Active Directory uses to store information \u2013 most of you have probably got in touch with NTDS.dit during backup and restore scenarios) Long &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.chrisse.se\/?p=762\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;How the Active Directory \u2013 Data Store Really Works (Inside NTDS.dit) \u2013 Part 1&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[6,14,16],"class_list":["post-762","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-active-directory","tag-extensible-storage-engine-ese","tag-ntds-dit"],"_links":{"self":[{"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=\/wp\/v2\/posts\/762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=762"}],"version-history":[{"count":2,"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=\/wp\/v2\/posts\/762\/revisions"}],"predecessor-version":[{"id":1072,"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=\/wp\/v2\/posts\/762\/revisions\/1072"}],"wp:attachment":[{"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}