{"id":3383,"date":"2017-05-01T14:15:58","date_gmt":"2017-05-01T21:15:58","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=3383"},"modified":"2025-06-13T21:28:58","modified_gmt":"2025-06-14T04:28:58","slug":"new-sdk-authentication","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/","title":{"rendered":"Improved SDK Authentication Methods &#8211; Couchbase 5.0"},"content":{"rendered":"<p><strong>Couchbase Server 5.0<\/strong> delivers some great\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac\/\">new authentication features<\/a>\u00a0that require some minor changes to your client connection code. \u00a0The specific\u00a0changes to the SDK are outlined in this post and also refer to changes made in the pre-release <a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-5-0-april-2017-developer-build\/\"><strong>April Developer Build <\/strong><\/a>as well as upcoming Beta releases.<\/p>\n<p style=\"text-align: center;\"><em>See\u00a0Matthew&#8217;s Introduction to Role-Based Access\u00a0Control: <a href=\"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac\/\">Part 1<\/a>\u00a0&amp;\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-part-2\/\">Part 2<\/a><\/em><\/p>\n<p>In a nutshell, bucket-based passwords (and passwordless buckets) are now a thing of the past. \u00a0Instead, we&#8217;ve provided fine-grained\u00a0role level access control to buckets, data and all services. \u00a0You are now able to create a user with specific roles and access rights,\u00a0then\u00a0connect as that user (with password) in your client.<\/p>\n<p>There are three specific patterns to using these new features, I review each option in this post.<\/p>\n<p>As\u00a0this is based on pre-production server code, examples may change. \u00a0Please also note that you need to have the <strong>latest SDK libraries<\/strong> for your language, supported at the time of writing are\u00a0<strong>Java, .NET, Node.js, PHP, Python, Go<\/strong> and <strong>C<\/strong>.<\/p>\n<h2>User Named Buckets<\/h2>\n<p>If you continue to use the basic URI connection string for a bucket\u00a0without\u00a0a username, there are some assumptions that the client now makes.<\/p>\n<p>First, it will assume you have <strong>a user with the same name as your bucket<\/strong>. \u00a0Migrating users from\u00a0earlier versions will appreciate this as\u00a0all they have to do is <strong>provide\u00a0a password<\/strong>\u00a0with\u00a0the connection string as shown in this Python example:<\/p>\n<pre class=\"lang:python decode:true\">&gt;&gt;&gt; db = Bucket(\"couchbase:\/\/localhost\/tyler\",password=\"tyler123\")<\/pre>\n<p>(This simplified usage is limited to Python, PHP and C libraries)<\/p>\n<p>The above assumes not only that there is a <strong>bucket<\/strong> named\u00a0<em>tyler<\/em> but also<strong> a user<\/strong> named\u00a0<em>tyler<\/em> who has a bucket\u00a0access role enabled.<\/p>\n<p><strong>Passwordless buckets<\/strong> are no longer allowed, but with one exception: migrated buckets. \u00a0It is impossible to create a new user without a password but the migration process will create users, without passwords, for\u00a0buckets that formerly did not have one.<\/p>\n<p>As above, the user will have the same name as the bucket and no password. \u00a0In that case you can pass an empty\u00a0password string with the connection string.<\/p>\n<p>After the migration, new buckets and users will all require passwords, so this is a good time to change your approach going forward.<\/p>\n<h2>Passing Username and Password With\u00a0Bucket Name<\/h2>\n<p>The\u00a0new authentication paradigm going forward has two ways of managing authenticated connections. \u00a0The simplest approach is to adjust the connection parameters to include both username and password, this is easily done in Python, :<\/p>\n<pre class=\"lang:python decode:true\">&gt;&gt;&gt; db = Bucket(\"couchbase:\/\/localhost\/travel-sample\", username=\"tyler\", password=\"tyler123\")<\/pre>\n<p>However, this is a very simplistic approach. \u00a0There is a more powerful option that uses the <strong>new Authenticator class<\/strong> to manage authentication against, potentially, multiple buckets.<\/p>\n<h2>Authenticator Class \u00a0for Handling Users and Buckets<\/h2>\n<p>The &#8220;proper&#8221; way to handle authentication is to de-couple it from the Bucket URI altogether and pass it to the Cluster connection when needed.<\/p>\n<p>Here the Authenticator\u00a0initialization takes a given Cluster and authenticates against it. \u00a0In\u00a0these examples, you see that the pattern across languages is the same. \u00a0The\u00a0Authenticator can then be passed to\u00a0other Clusters as desired.<\/p>\n<h4>Python<\/h4>\n<pre class=\"lang:python decode:true \" title=\"Authenticator with Python\">from couchbase.cluster import Cluster\r\nfrom couchbase.cluster import PasswordAuthenticator\r\n\r\ncluster = Cluster('couchbase:\/\/localhost')\r\n  \r\nauthenticator = PasswordAuthenticator('username', 'password')\r\ncluster.authenticate(authenticator)\r\nbucket = cluster.open_bucket('bucket-name')\r\n<\/pre>\n<h4>Java<\/h4>\n<pre class=\"lang:java decode:true\" title=\"Authenticator with Java\">Cluster cluster = CouchbaseCluster.create();\r\ncluster.authenticate(\"username\", \"password\");\r\nBucket bucket = cluster.openBucket(\"bucket-name\");<\/pre>\n<h4>.NET<\/h4>\n<pre class=\"lang:c# decode:true\" title=\"Authenticator with .NET\">var cluster = new Cluster(new ClientConfiguration \r\n  { Servers = new List&lt;Uri&gt; { new Uri(\"https:\/\/localhost\") }});\r\nvar authenticator = new PasswordAuthenticator(\"username\", \"password\");\r\ncluster.Authenticate(authenticator);\r\nvar bucket = cluster.OpenBucket(\"bucket-name\");\r\n<\/pre>\n<h4>PHP<\/h4>\n<pre class=\"lang:php decode:true\">$authenticator = new \\Couchbase\\PasswordAuthenticator();\r\n$authenticator-&gt;username('username')-&gt;password('password');\r\n\r\n$cluster = new \\Couchbase\\Cluster('couchbase:\/\/localhost');\r\n$cluster-&gt;authenticate($authenticator);<\/pre>\n<h4>Node.js<\/h4>\n<pre class=\"lang:js decode:true \">var couchbase = require('couchbase');\r\nvar cluster = new couchbase.Cluster('couchbase:\/\/localhost\/');\r\ncluster.authenticate('username', 'password');\r\nvar bucket = cluster.openBucket('bucket-name');<\/pre>\n<p>&nbsp;<\/p>\n<h3>Next Steps<\/h3>\n<p>Notice that the main\u00a0design change in your applications is to not use a bucket specific password. \u00a0Instead, you need to have a user with an adequate role that has access to particular buckets.<\/p>\n<p>With only a couple lines of code change you easily take advantage of the role-based\u00a0access control features of Couchbase Server 5.0.<\/p>\n<p>Upgrade to the <a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-5-0-april-2017-developer-build\/\">latest developer build<\/a> and upgrade your client libraries to start trying it out.<\/p>\n<p>Join us in <a href=\"https:\/\/www.couchbase.com\/forums\/\">the forums<\/a> with any questions!<\/p>\n<p>&nbsp;<\/p>\n<div class=\"line number26 index25 alt1\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Couchbase Server 5.0 delivers some great\u00a0new authentication features\u00a0that require some minor changes to your client connection code. \u00a0The specific\u00a0changes to the SDK are outlined in this post and also refer to changes made in the pre-release April Developer Build as [&hellip;]<\/p>\n","protected":false},"author":75185,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,1816,1818,1822,9408,9139,1813],"tags":[1455,1903,1962],"ppma_author":[9163],"class_list":["post-3383","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-couchbase-server","category-java","category-node-js","category-php","category-python","category-security","tag-authentication","tag-rbac","tag-role-based-access-control"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Improved SDK Authentication Methods - Couchbase 5.0<\/title>\n<meta name=\"description\" content=\"Couchbase 5.0 delivers new authentication security features that require minor changes to your client connection code. This post tells you how to do it!\" \/>\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.couchbase.com\/blog\/new-sdk-authentication\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Improved SDK Authentication Methods - Couchbase 5.0\" \/>\n<meta property=\"og:description\" content=\"Couchbase 5.0 delivers new authentication security features that require minor changes to your client connection code. This post tells you how to do it!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-01T21:15:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:28:58+00:00\" \/>\n<meta name=\"author\" content=\"Tyler Mitchell - Senior Product Marketing Manager\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@1tylermitchell\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tyler Mitchell - Senior Product Marketing Manager\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/\"},\"author\":{\"name\":\"Tyler Mitchell - Senior Product Marketing Manager\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/684cc0e5c60cd2e4b591db9621494ed0\"},\"headline\":\"Improved SDK Authentication Methods &#8211; Couchbase 5.0\",\"datePublished\":\"2017-05-01T21:15:58+00:00\",\"dateModified\":\"2025-06-14T04:28:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/\"},\"wordCount\":599,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"authentication\",\"RBAC\",\"Role Based Access Control (RBAC)\"],\"articleSection\":[\".NET\",\"Couchbase Server\",\"Java\",\"Node.js\",\"PHP\",\"Python\",\"Security\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/\",\"name\":\"Improved SDK Authentication Methods - Couchbase 5.0\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-05-01T21:15:58+00:00\",\"dateModified\":\"2025-06-14T04:28:58+00:00\",\"description\":\"Couchbase 5.0 delivers new authentication security features that require minor changes to your client connection code. This post tells you how to do it!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Improved SDK Authentication Methods &#8211; Couchbase 5.0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/684cc0e5c60cd2e4b591db9621494ed0\",\"name\":\"Tyler Mitchell - Senior Product Marketing Manager\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/d8a7c532bf2b94b7a2fe7a8439aafd75\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ebec3213e756f2e1f7118fcb5722e2cd1484c9256ae34ceb8f77054b986f21ce?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ebec3213e756f2e1f7118fcb5722e2cd1484c9256ae34ceb8f77054b986f21ce?s=96&d=mm&r=g\",\"caption\":\"Tyler Mitchell - Senior Product Marketing Manager\"},\"description\":\"Works as Senior Product Marketing Manager at Couchbase, helping bring knowledge about products into the public limelight while also supporting our field teams with valuable content. His personal passion is all things geospatial, having worked in GIS for half his career. Now AI and Vector Search is top of mind.\",\"sameAs\":[\"https:\/\/linkedin.com\/in\/tylermitchell\",\"https:\/\/x.com\/1tylermitchell\",\"https:\/\/www.youtube.com\/channel\/UCBZFuoiTcg0f3lGSQwLjeTg\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/tylermitchell\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Improved SDK Authentication Methods - Couchbase 5.0","description":"Couchbase 5.0 delivers new authentication security features that require minor changes to your client connection code. This post tells you how to do it!","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.couchbase.com\/blog\/new-sdk-authentication\/","og_locale":"en_US","og_type":"article","og_title":"Improved SDK Authentication Methods - Couchbase 5.0","og_description":"Couchbase 5.0 delivers new authentication security features that require minor changes to your client connection code. This post tells you how to do it!","og_url":"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-05-01T21:15:58+00:00","article_modified_time":"2025-06-14T04:28:58+00:00","author":"Tyler Mitchell - Senior Product Marketing Manager","twitter_card":"summary_large_image","twitter_creator":"@1tylermitchell","twitter_misc":{"Written by":"Tyler Mitchell - Senior Product Marketing Manager","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/"},"author":{"name":"Tyler Mitchell - Senior Product Marketing Manager","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/684cc0e5c60cd2e4b591db9621494ed0"},"headline":"Improved SDK Authentication Methods &#8211; Couchbase 5.0","datePublished":"2017-05-01T21:15:58+00:00","dateModified":"2025-06-14T04:28:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/"},"wordCount":599,"commentCount":4,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["authentication","RBAC","Role Based Access Control (RBAC)"],"articleSection":[".NET","Couchbase Server","Java","Node.js","PHP","Python","Security"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/","url":"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/","name":"Improved SDK Authentication Methods - Couchbase 5.0","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-05-01T21:15:58+00:00","dateModified":"2025-06-14T04:28:58+00:00","description":"Couchbase 5.0 delivers new authentication security features that require minor changes to your client connection code. This post tells you how to do it!","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Improved SDK Authentication Methods &#8211; Couchbase 5.0"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/684cc0e5c60cd2e4b591db9621494ed0","name":"Tyler Mitchell - Senior Product Marketing Manager","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/d8a7c532bf2b94b7a2fe7a8439aafd75","url":"https:\/\/secure.gravatar.com\/avatar\/ebec3213e756f2e1f7118fcb5722e2cd1484c9256ae34ceb8f77054b986f21ce?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ebec3213e756f2e1f7118fcb5722e2cd1484c9256ae34ceb8f77054b986f21ce?s=96&d=mm&r=g","caption":"Tyler Mitchell - Senior Product Marketing Manager"},"description":"Works as Senior Product Marketing Manager at Couchbase, helping bring knowledge about products into the public limelight while also supporting our field teams with valuable content. His personal passion is all things geospatial, having worked in GIS for half his career. Now AI and Vector Search is top of mind.","sameAs":["https:\/\/linkedin.com\/in\/tylermitchell","https:\/\/x.com\/1tylermitchell","https:\/\/www.youtube.com\/channel\/UCBZFuoiTcg0f3lGSQwLjeTg"],"url":"https:\/\/www.couchbase.com\/blog\/author\/tylermitchell\/"}]}},"authors":[{"term_id":9163,"user_id":75185,"is_guest":0,"slug":"tylermitchell","display_name":"Tyler Mitchell - Senior Product Marketing Manager","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/876da1e4284f1832c871b3514caf7867357744b8c0a370ef6f53a79dee2f379e?s=96&d=mm&r=g","author_category":"","last_name":"Mitchell - Senior Product Marketing Manager","first_name":"Tyler","job_title":"Senior Product Marketing Manager","user_url":"","description":"Works as Senior Product Marketing Manager at Couchbase, helping bring knowledge about products into the public limelight while also supporting our field teams with valuable content. His personal passion is all things geospatial, having worked in GIS for half his career. Now AI and Vector Search is top of mind."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/3383","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/75185"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=3383"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/3383\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=3383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=3383"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=3383"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=3383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}