{"id":13916,"date":"2020-04-05T10:08:54","date_gmt":"2020-04-05T08:08:54","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/"},"modified":"2020-04-05T10:08:54","modified_gmt":"2020-04-05T08:08:54","slug":"postgresql-13-backup-validation-and-backup-manifests","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/","title":{"rendered":"PostgreSQL 13: Backup validation and backup manifests"},"content":{"rendered":"<p>Currently a lot of stuff is being committed for PostgreSQL and what we will look at in this post is a feature, I am sure, a lot of PostgreSQL users have been waiting for for a long time: Finally there is a native way to validate your base backups: <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/app-pgvalidatebackup.html\" target=\"_blank\" rel=\"noopener noreferrer\">pg_validatebackup<\/a>. This is a new binary that can be used to validate base backups against a backup manifest, that is written automatically when you do backup using <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/app-pgbasebackup.html\" target=\"_blank\" rel=\"noopener noreferrer\">pg_basebackup<\/a>. Lets see how that works.<\/p>\n<p><!--more--><\/p>\n<p>When you do a base backup without any specific flags in PostgreSQL 13 there will be a new file in the directory that holds the backup:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@centos8pg:\/home\/postgres\/ [pgdev] mkdir \/var\/tmp\/backup\npostgres@centos8pg:\/home\/postgres\/ [pgdev] pg_basebackup -D \/var\/tmp\/backup\/\npostgres@centos8pg:\/home\/postgres\/ [pgdev] ls \/var\/tmp\/backup\/backup_manifest \n\/var\/tmp\/backup\/backup_manifest\n<\/pre>\n<p>This is the so called backup manifest and when you have a look at it, you&#8217;ll notice that it is a simple json file:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@centos8pg:\/home\/postgres\/ [pgdev] head -n 10 \/var\/tmp\/backup\/backup_manifest\n{ \"PostgreSQL-Backup-Manifest-Version\": 1,\n\"Files\": [\n{ \"Path\": \"backup_label\", \"Size\": 225, \"Last-Modified\": \"2020-04-03 19:51:48 GMT\", \"Checksum-Algorithm\": \"CRC32C\", \"Checksum\": \"3cbc1336\" },\n{ \"Path\": \"global\/1262\", \"Size\": 8192, \"Last-Modified\": \"2020-04-03 18:52:13 GMT\", \"Checksum-Algorithm\": \"CRC32C\", \"Checksum\": \"f98856b1\" },\n{ \"Path\": \"global\/2964\", \"Size\": 0, \"Last-Modified\": \"2020-04-03 18:52:12 GMT\", \"Checksum-Algorithm\": \"CRC32C\", \"Checksum\": \"00000000\" },\n{ \"Path\": \"global\/1213\", \"Size\": 8192, \"Last-Modified\": \"2020-04-03 18:52:12 GMT\", \"Checksum-Algorithm\": \"CRC32C\", \"Checksum\": \"860d02d5\" },\n{ \"Path\": \"global\/1260\", \"Size\": 8192, \"Last-Modified\": \"2020-04-03 18:52:12 GMT\", \"Checksum-Algorithm\": \"CRC32C\", \"Checksum\": \"3b8ad06a\" },\n{ \"Path\": \"global\/1261\", \"Size\": 8192, \"Last-Modified\": \"2020-04-03 18:52:12 GMT\", \"Checksum-Algorithm\": \"CRC32C\", \"Checksum\": \"968c06d9\" },\n{ \"Path\": \"global\/1214\", \"Size\": 8192, \"Last-Modified\": \"2020-04-03 18:52:12 GMT\", \"Checksum-Algorithm\": \"CRC32C\", \"Checksum\": \"2f187a01\" },\n{ \"Path\": \"global\/2396\", \"Size\": 8192, \"Last-Modified\": \"2020-04-03 18:52:13 GMT\", \"Checksum-Algorithm\": \"CRC32C\", \"Checksum\": \"d3229ead\" },\n<\/pre>\n<p>It contains a list of all the files in the backup with the size, the last modified timestamp and a check sum that was generated with <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cyclic_redundancy_check\" target=\"_blank\" rel=\"noopener noreferrer\">CRC32C<\/a>. This is the default but pg_basebackup comes with new options you can use to change the algorithm that is used to created the checksums:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [37,38,39,40,41]\">\npostgres@centos8pg:\/home\/postgres\/ [pgdev] pg_basebackup --help \npg_basebackup takes a base backup of a running PostgreSQL server.\n\nUsage:\n  pg_basebackup [OPTION]...\n\nOptions controlling the output:\n  -D, --pgdata=DIRECTORY receive base backup into directory\n  -F, --format=p|t       output format (plain (default), tar)\n  -r, --max-rate=RATE    maximum transfer rate to transfer data directory\n                         (in kB\/s, or use suffix \"k\" or \"M\")\n  -R, --write-recovery-conf\n                         write configuration for replication\n  -T, --tablespace-mapping=OLDDIR=NEWDIR\n                         relocate tablespace in OLDDIR to NEWDIR\n      --waldir=WALDIR    location for the write-ahead log directory\n  -X, --wal-method=none|fetch|stream\n                         include required WAL files with specified method\n  -z, --gzip             compress tar output\n  -Z, --compress=0-9     compress tar output with given compression level\n\nGeneral options:\n  -c, --checkpoint=fast|spread\n                         set fast or spread checkpointing\n  -C, --create-slot      create replication slot\n  -l, --label=LABEL      set backup label\n  -n, --no-clean         do not clean up after errors\n  -N, --no-sync          do not wait for changes to be written safely to disk\n  -P, --progress         show progress information\n  -S, --slot=SLOTNAME    replication slot to use\n  -v, --verbose          output verbose messages\n  -V, --version          output version information, then exit\n      --no-slot          prevent creation of temporary replication slot\n      --no-verify-checksums\n                         do not verify checksums\n      --no-estimate-size do not estimate backup size in server side\n      --no-manifest      suppress generation of backup manifest\n      --manifest-force-encode\n                         hex encode all filenames in manifest\n      --manifest-checksums=SHA{224,256,384,512}|CRC32C|NONE\n                         use algorithm for manifest checksums\n  -?, --help             show this help, then exit\n<\/pre>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [10]\">\n<\/pre>\n<p>You can also go back to the previous behavior and disable the generation of the backup manifest altogether. Once the backup is there and the manifest is generated you can use pg_validatebackup to check integrity of what was written by pg_basebackup:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@centos8pg:\/home\/postgres\/ [pgdev] pg_validatebackup --help\npg_validatebackup validates a backup against the backup manifest.\n\nUsage:\n  pg_validatebackup [OPTION]... BACKUPDIR\n\nOptions:\n  -e, --exit-on-error         exit immediately on error\n  -i, --ignore=RELATIVE_PATH  ignore indicated path\n  -m, --manifest=PATH         use specified path for manifest\n  -n, --no-parse-wal          do not try to parse WAL files\n  -s, --skip-checksums        skip checksum verification\n  -w, --wal-directory=PATH    use specified path for WAL files\n  -V, --version               output version information, then exit\n  -?, --help                  show this help, then exit\n<\/pre>\n<p>In the most simple form this is just:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@centos8pg:\/home\/postgres\/ [pgdev] pg_validatebackup \/var\/tmp\/backup\/\nbackup successfully verified\n<\/pre>\n<p>That is a really cool feature.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Currently a lot of stuff is being committed for PostgreSQL and what we will look at in this post is a feature, I am sure, a lot of PostgreSQL users have been waiting for for a long time: Finally there is a native way to validate your base backups: pg_validatebackup. This is a new binary [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[77],"type_dbi":[],"class_list":["post-13916","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","tag-postgresql"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PostgreSQL 13: Backup validation and backup manifests - dbi 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:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL 13: Backup validation and backup manifests\" \/>\n<meta property=\"og:description\" content=\"Currently a lot of stuff is being committed for PostgreSQL and what we will look at in this post is a feature, I am sure, a lot of PostgreSQL users have been waiting for for a long time: Finally there is a native way to validate your base backups: pg_validatebackup. This is a new binary [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-05T08:08:54+00:00\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"PostgreSQL 13: Backup validation and backup manifests\",\"datePublished\":\"2020-04-05T08:08:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/\"},\"wordCount\":250,\"commentCount\":0,\"keywords\":[\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/\",\"name\":\"PostgreSQL 13: Backup validation and backup manifests - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2020-04-05T08:08:54+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL 13: Backup validation and backup manifests\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL 13: Backup validation and backup manifests - dbi 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:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL 13: Backup validation and backup manifests","og_description":"Currently a lot of stuff is being committed for PostgreSQL and what we will look at in this post is a feature, I am sure, a lot of PostgreSQL users have been waiting for for a long time: Finally there is a native way to validate your base backups: pg_validatebackup. This is a new binary [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/","og_site_name":"dbi Blog","article_published_time":"2020-04-05T08:08:54+00:00","author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"PostgreSQL 13: Backup validation and backup manifests","datePublished":"2020-04-05T08:08:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/"},"wordCount":250,"commentCount":0,"keywords":["PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/","url":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/","name":"PostgreSQL 13: Backup validation and backup manifests - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2020-04-05T08:08:54+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-backup-validation-and-backup-manifests\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL 13: Backup validation and backup manifests"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=13916"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13916\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=13916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=13916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=13916"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=13916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}