{"id":13105,"date":"2019-11-27T17:56:28","date_gmt":"2019-11-27T16:56:28","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/a-schema-and-a-user-are-not-the-same-in-postgresql\/"},"modified":"2019-11-27T17:56:28","modified_gmt":"2019-11-27T16:56:28","slug":"a-schema-and-a-user-are-not-the-same-in-postgresql","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/a-schema-and-a-user-are-not-the-same-in-postgresql\/","title":{"rendered":"A schema and a user are not the same in PostgreSQL"},"content":{"rendered":"<p>When people with an Oracle background attend our <a href=\"https:\/\/www.dbi-services.com\/trainings\/postgresql-dba-essentials-workshop\/\" target=\"_blank\" rel=\"noopener noreferrer\">PostgreSQL DBA Essentials<\/a> training there is always a bit of confusion about <a href=\"https:\/\/www.postgresql.org\/docs\/current\/sql-createschema.html\" target=\"_blank\" rel=\"noopener noreferrer\">schemas<\/a> and <a href=\"https:\/\/www.postgresql.org\/docs\/current\/sql-createuser.html\" target=\"_blank\" rel=\"noopener noreferrer\">users<\/a>. In Oracle a schema and a user is a one to one relationship and there is no real distinction between a user and a schema. In PostgreSQL the situation is different: All the objects a user is creating are created in a specific schema (or namespace). Other users may or may not have permissions to work with this objects or even to create new objects in a specific schema. Compared to Oracle there is one layer more.<\/p>\n<p><!--more--><\/p>\n<p>The hierarchy in PostgreSQL is this: <\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\n|-------------------------------------------|---|\n| PostgreSQL instance                       |   |\n|-------------------------------------------| U |\n|     Database 1      |     Database 2      | S |\n|---------------------|---------------------| E |\n| Schema 1 | Schema 2 | Schema 1 | Schema 2 | R |\n|----------|----------|----------|----------| S |\n| t1,t2,t3 | t1,t2,t3 | t1,t2,t3 | t1,t2,t3 |   |\n-------------------------------------------------\n<\/pre>\n<p>What this little ASCII image shall tell you: Users (and roles) in PostgreSQL are global objects and are not defined in a database but on the instance level. Schemas are created by users in a specific database and contain database objects. Where a lot of people get confused with is this:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres@centos8pg:\/home\/postgres\/ [pgdev] psql -X postgres\npsql (13devel)\nType \"help\" for help.\n\npostgres=# create table t1 ( a int );\nCREATE TABLE\npostgres=# \n<\/pre>\n<p>Nothing in this create table statement references a schema but according to what I just said above all objects must go to a schema. Where did this table go then? Each PostgreSQL database comes with a public schema by default and if you do not explicitly specify a schema the new object will go there. There are several ways of asking PostgreSQL for the schema of a given table but probably the two most used ones are these (the first one is asking a <a href=\"https:\/\/www.postgresql.org\/docs\/current\/view-pg-tables.html\" target=\"_blank\" rel=\"noopener noreferrer\">catalog view<\/a> and the second one is using a <a href=\"https:\/\/www.postgresql.org\/docs\/current\/app-psql.html\" target=\"_blank\" rel=\"noopener noreferrer\">psql<\/a> shortcut)<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# select schemaname from pg_tables where tablename = 't1';\n schemaname \n------------\n public\n(1 row)\n\npostgres=# d t1\n                 Table \"public.t1\"\n Column |  Type   | Collation | Nullable | Default \n--------+---------+-----------+----------+---------\n a      | integer |           |          | \n<\/pre>\n<p>Btw: The <a href=\"https:\/\/www.postgresql.org\/docs\/current\/ddl-schemas.html#DDL-SCHEMAS-PUBLIC\" target=\"_blank\" rel=\"noopener noreferrer\">public schema<\/a> is a special schema in PostgreSQL and you should either remove it or at least revoke permission from public on the public schema. <a href=\"https:\/\/www.dbi-services.com\/blog\/avoiding-access-to-the-public-schema-in-postgresql\/\" target=\"_blank\" rel=\"noopener noreferrer\">Check here<\/a> for more information on that.<\/p>\n<p>So what happens when you drop the public schema and try to create a table afterwards?<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# drop schema public cascade;\nNOTICE:  drop cascades to table t1\nDROP SCHEMA\npostgres=# create table t1 ( a int );\nERROR:  no schema has been selected to create in\nLINE 1: create table t1 ( a int );\n                     ^\npostgres=# \n<\/pre>\n<p>As we do not have a single schema anymore:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# dn\nList of schemas\n Name | Owner \n------+-------\n(0 rows)\n<\/pre>\n<p>&#8230; PostgreSQL has no idea where to put the table. At this point it should already be clear that a schema in PostgreSQL is not the same as a user. We are connected as the &#8220;postgres&#8221; user, but we do not have a schema to create our objects in. Lets create the first schema and right afterwards the same table as above:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create schema my_schema;\nCREATE SCHEMA\npostgres=# create table t1 ( a int );\nERROR:  no schema has been selected to create in\nLINE 1: create table t1 ( a int );\n                     ^\npostgres=# \n<\/pre>\n<p>&#8230; again PostgreSQL is not able to create the table. The question is: Why did it work when then public schema was there? We did not specify the public schema above but it worked. This is where the <a href=\"https:\/\/www.postgresql.org\/docs\/current\/ddl-schemas.html#DDL-SCHEMAS-PATH\" target=\"_blank\" rel=\"noopener noreferrer\">search_path<\/a> comes into the game:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# show search_path;\n   search_path   \n-----------------\n \"$user\", public\n(1 row)\n\npostgres=# \n<\/pre>\n<p>By default the search_path contains you current username and public. As none of these schemas exist right now the create table statement will fail. There are two options to fix that. Either use the fully qualified name:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create table my_schema.t1 ( a int );\nCREATE TABLE\npostgres=# d my_schema.t1\n               Table \"my_schema.t1\"\n Column |  Type   | Collation | Nullable | Default \n--------+---------+-----------+----------+---------\n a      | integer |           |          | \n<\/pre>\n<p>&#8230; or adjust the search_path so that your preferred schema comes first:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# set search_path = 'my_schema',\"$user\",public;\nSET\npostgres=# show search_path ;\n        search_path         \n----------------------------\n my_schema, \"$user\", public\n(1 row)\n\npostgres=# create table t2 ( a int );\nCREATE TABLE\npostgres=# d t2\n               Table \"my_schema.t2\"\n Column |  Type   | Collation | Nullable | Default \n--------+---------+-----------+----------+---------\n a      | integer |           |          | \n\npostgres=# \n<\/pre>\n<p>That all might look a bit strange at the beginning, especially when you are used to Oracle, but it also provides great flexibility:<\/p>\n<ul>\n<li>A user can create many different schemas, no need to create separate users<\/li>\n<li>A user can grant permission to create objects in one of his schemas to someone else<\/li>\n<li>You can logically divide your application<\/li>\n<li>(no, there are no synonyms in PostgreSQL)<\/li>\n<li>The are <a href=\"https:\/\/www.dbi-services.com\/blog\/a-wonderful-postgresql-feature-default-privileges\/\" target=\"_blank\" rel=\"noopener noreferrer\">default privileges<\/a> you can use<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>When people with an Oracle background attend our PostgreSQL DBA Essentials training there is always a bit of confusion about schemas and users. In Oracle a schema and a user is a one to one relationship and there is no real distinction between a user and a schema. In PostgreSQL the situation is different: All [&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-13105","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.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>A schema and a user are not the same in PostgreSQL - 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\/a-schema-and-a-user-are-not-the-same-in-postgresql\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A schema and a user are not the same in PostgreSQL\" \/>\n<meta property=\"og:description\" content=\"When people with an Oracle background attend our PostgreSQL DBA Essentials training there is always a bit of confusion about schemas and users. In Oracle a schema and a user is a one to one relationship and there is no real distinction between a user and a schema. In PostgreSQL the situation is different: All [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/a-schema-and-a-user-are-not-the-same-in-postgresql\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-11-27T16:56:28+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\\\/a-schema-and-a-user-are-not-the-same-in-postgresql\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/a-schema-and-a-user-are-not-the-same-in-postgresql\\\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"A schema and a user are not the same in PostgreSQL\",\"datePublished\":\"2019-11-27T16:56:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/a-schema-and-a-user-are-not-the-same-in-postgresql\\\/\"},\"wordCount\":548,\"commentCount\":1,\"keywords\":[\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/a-schema-and-a-user-are-not-the-same-in-postgresql\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/a-schema-and-a-user-are-not-the-same-in-postgresql\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/a-schema-and-a-user-are-not-the-same-in-postgresql\\\/\",\"name\":\"A schema and a user are not the same in PostgreSQL - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2019-11-27T16:56:28+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/a-schema-and-a-user-are-not-the-same-in-postgresql\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/a-schema-and-a-user-are-not-the-same-in-postgresql\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/a-schema-and-a-user-are-not-the-same-in-postgresql\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A schema and a user are not the same in PostgreSQL\"}]},{\"@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":"A schema and a user are not the same in PostgreSQL - 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\/a-schema-and-a-user-are-not-the-same-in-postgresql\/","og_locale":"en_US","og_type":"article","og_title":"A schema and a user are not the same in PostgreSQL","og_description":"When people with an Oracle background attend our PostgreSQL DBA Essentials training there is always a bit of confusion about schemas and users. In Oracle a schema and a user is a one to one relationship and there is no real distinction between a user and a schema. In PostgreSQL the situation is different: All [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/a-schema-and-a-user-are-not-the-same-in-postgresql\/","og_site_name":"dbi Blog","article_published_time":"2019-11-27T16:56:28+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\/a-schema-and-a-user-are-not-the-same-in-postgresql\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/a-schema-and-a-user-are-not-the-same-in-postgresql\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"A schema and a user are not the same in PostgreSQL","datePublished":"2019-11-27T16:56:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/a-schema-and-a-user-are-not-the-same-in-postgresql\/"},"wordCount":548,"commentCount":1,"keywords":["PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/a-schema-and-a-user-are-not-the-same-in-postgresql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/a-schema-and-a-user-are-not-the-same-in-postgresql\/","url":"https:\/\/www.dbi-services.com\/blog\/a-schema-and-a-user-are-not-the-same-in-postgresql\/","name":"A schema and a user are not the same in PostgreSQL - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2019-11-27T16:56:28+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/a-schema-and-a-user-are-not-the-same-in-postgresql\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/a-schema-and-a-user-are-not-the-same-in-postgresql\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/a-schema-and-a-user-are-not-the-same-in-postgresql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"A schema and a user are not the same in PostgreSQL"}]},{"@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\/13105","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=13105"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13105\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=13105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=13105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=13105"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=13105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}