{"id":64855,"date":"2024-08-29T20:16:42","date_gmt":"2024-08-29T14:46:42","guid":{"rendered":"https:\/\/www.tothenew.com\/blog\/?p=64855"},"modified":"2025-09-05T15:52:08","modified_gmt":"2025-09-05T10:22:08","slug":"setting-up-role-based-authorization-strategy-in-jenkins","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/setting-up-role-based-authorization-strategy-in-jenkins\/","title":{"rendered":"From Chaos to Control: Managing Jenkins Permissions with Role-Based Strategy"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>Managing user permissions on a busy Jenkins server can be a headache. With a bunch of teams needing different levels of access, it\u2019s easy for someone to end up with too much power, and that\u2019s a risk. One stray click can knock over a prod pipeline.<\/p>\n<p>To fix this, you need a clear access control setup in Jenkins. The Role-Based Authorization Strategy plugin is a solid pick. It lets you define roles with specific permissions and then assign those roles to users or groups.<\/p>\n<p>This guide walks through a real-world example of using that plugin to go from a messy setup to something clean, secure, and easier to manage.<\/p>\n<h2>Our use case \/ Problem statement<\/h2>\n<p>Here\u2019s the use case: a multi-team setup. We\u2019ve got jobs named by environment (-dev, -uat, -prod) and by purpose (-helper). We need to sort access for a few teams:<\/p>\n<ol>\n<li><strong>Onshore developers<\/strong>: work directly for the client.<\/li>\n<li><strong>Offshore developers<\/strong>: work for a partner company.<\/li>\n<li><strong>DevOps team<\/strong>: manages the CI\/CD process.<\/li>\n<li><strong>Support team<\/strong>: handles monitoring and logs.<\/li>\n<li><strong>Admins<\/strong>: need full control.<\/li>\n<\/ol>\n<p>The goal is to lock this down so that:<\/p>\n<ul>\n<li>Onshore developers can work on all pipelines but can\u2019t delete or create new ones.<\/li>\n<li>Offshore developers can only see and work on -dev and -uat pipelines.<\/li>\n<li>The DevOps Team can manage everything except jobs ending in -prod.<\/li>\n<li>The Support Team can only view and build jobs ending in -helper.<\/li>\n<li>Admins have unlimited power.<\/li>\n<\/ul>\n<p><strong>The Tool for the Job: Role-Based Strategy<br \/>\n<\/strong>Jenkins offers a few ways to manage security, but &#8220;Matrix-Based Security&#8221; can become a huge, unreadable table with many users.<\/p>\n<p>The Role-Based Authorization Strategy plugin gives us more wiggle room. Its real strength is using name patterns to control who can touch which jobs, like a rule for everything ending in -dev.<\/p>\n<h2>Time to set it all up<\/h2>\n<h3>1. Check and Install the plugin if not done already<\/h3>\n<p>If you don&#8217;t see the &#8220;Role-Based Authorization Strategy&#8221;\u00a0 under Authorization in Configure Global Security then,<\/p>\n<ol>\n<li>Go to Manage Jenkins &gt; Plugins.<\/li>\n<li>Click the Available tab and search for &#8220;Role-Based Authorization Strategy&#8221;.<\/li>\n<\/ol>\n<p>Install it and restart Jenkins if it asks.<\/p>\n<h3>2. Next, we enable it in security.<\/h3>\n<p>Go to Manage Jenkins &gt; Global Security.<br \/>\nIn the Authorization section, select Role-Based Strategy and save it<\/p>\n<p>We are now able to see Manage and Assign Roles under Manage Jenkins.<\/p>\n<h2><strong>Overview of Role management.<\/strong><\/h2>\n<h3><strong>1. Manage Roles : <\/strong><\/h3>\n<p>You create and manage roles here.<\/p>\n<div id=\"attachment_71212\" style=\"width: 835px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-71212\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-71212\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/03\/Manageroles-1024x716.png\" alt=\"ManageRoles View page\" width=\"825\" height=\"577\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/03\/Manageroles-1024x716.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Manageroles-300x210.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Manageroles-768x537.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Manageroles-624x436.png 624w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Manageroles.png 1292w\" sizes=\"(max-width: 825px) 100vw, 825px\" \/><p id=\"caption-attachment-71212\" class=\"wp-caption-text\">Manage Roles<\/p><\/div>\n<h3>2. Assign Roles<\/h3>\n<p>This section is used to assign predefined roles to specific users.<\/p>\n<div id=\"attachment_71225\" style=\"width: 835px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-71225\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-71225\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/03\/assign-role-global-view-1-1024x449.png\" alt=\"Assign role - global role\" width=\"825\" height=\"362\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/03\/assign-role-global-view-1-1024x449.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/assign-role-global-view-1-300x131.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/assign-role-global-view-1-768x337.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/assign-role-global-view-1-1536x673.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/assign-role-global-view-1-624x273.png 624w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/assign-role-global-view-1.png 1919w\" sizes=\"(max-width: 825px) 100vw, 825px\" \/><p id=\"caption-attachment-71225\" class=\"wp-caption-text\">Assign role &#8211; global role<\/p><\/div>\n<p>&nbsp;<\/p>\n<div id=\"attachment_71226\" style=\"width: 835px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-71226\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-71226\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/03\/Screenshot-from-2025-03-27-16-00-05-1024x284.png\" alt=\"Assign role - Item role\" width=\"825\" height=\"229\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/03\/Screenshot-from-2025-03-27-16-00-05-1024x284.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Screenshot-from-2025-03-27-16-00-05-300x83.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Screenshot-from-2025-03-27-16-00-05-768x213.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Screenshot-from-2025-03-27-16-00-05-624x173.png 624w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Screenshot-from-2025-03-27-16-00-05.png 1411w\" sizes=\"(max-width: 825px) 100vw, 825px\" \/><p id=\"caption-attachment-71226\" class=\"wp-caption-text\">Assign role &#8211; Item role<\/p><\/div>\n<h2>Planning, Managing and Assigning Roles<\/h2>\n<h3>1. Planning the Roles<\/h3>\n<p>Before we start actually doing it, a simple plan can save us a lot of time.<\/p>\n<p>As you can see we need two kinds of roles:<\/p>\n<ol>\n<li><strong>Global roles<\/strong>: More Broad things and control fall under it. We need to make sure that we only assign the least permission possible in the Global role for any user, then use item roles for the detailed permissions.<\/li>\n<li><strong>Item roles<\/strong>: Control access to specific jobs using patterns that match job names, and more fine-tuned permission is assign using Item roles<\/li>\n<\/ol>\n<h3>2. Roles and Permissions for Users<\/h3>\n<p>Here\u2019s what we are aiming for:<\/p>\n<ol>\n<li><strong>User Category: Onshore Developers<\/strong><\/li>\n<\/ol>\n<ul>\n<li>Global Role: onshore-developer<\/li>\n<li>Item Role: None<\/li>\n<\/ul>\n<p>Key Permissions: Full access to the jobs, but no Create or Delete permission.<\/p>\n<p><strong>2. User Category: Offshore Developers<\/strong><\/p>\n<ul>\n<li>Global Role: offshore-developer<\/li>\n<li>Item Role: offshore-devs<\/li>\n<li>Item Role Pattern: .*-(uat | dev)<\/li>\n<\/ul>\n<p>Key Permissions: Scoped access to matching jobs, no admin stuff.<\/p>\n<p><strong>3. User Category: DevOps Team<\/strong><\/p>\n<ul>\n<li>Global Role: devops<\/li>\n<li>Item Role: devops-team<\/li>\n<li>Item Role Pattern: ^(?!.*-prod$).+$<\/li>\n<\/ul>\n<p>Key Permissions: Full access to everything except -prod jobs.<\/p>\n<p><strong>4. User Category: Support Team<\/strong><\/p>\n<ul>\n<li>Global Role: support<\/li>\n<li>Item Role: support-team<\/li>\n<li>Item Role Pattern: .*-helper<\/li>\n<\/ul>\n<p>Key Permissions: Can only view and build -helper jobs.<\/p>\n<p>User Category: Admins<\/p>\n<p>Global Role: admin<\/p>\n<p>Item Role: (None)<\/p>\n<p>Key Permissions: Full control over everything.<\/p>\n<p>Personally, I like to start with the global roles first, then add item roles with a simple pattern, test, and tighten it up if needed. It&#8217;s little bit more tedious at first, but it saves time later when someone says, \u201cHey, I can\u2019t see my UAT job,\u201d and you can point to the pattern.<\/p>\n<h3><strong>Overview Table<\/strong><\/h3>\n<table style=\"border-collapse: collapse; width: 91.2898%; height: 168px;\">\n<tbody>\n<tr style=\"height: 24px;\">\n<td style=\"width: 17.8495%; height: 24px; text-align: center;\"><span style=\"color: #000000;\"><strong>User Category<\/strong><\/span><\/td>\n<td style=\"width: 17.5188%; height: 24px; text-align: center;\"><span style=\"color: #000000;\"><strong>Global Role<\/strong><\/span><\/td>\n<td style=\"width: 16.9512%; height: 24px; text-align: center;\"><span style=\"color: #000000;\"><strong>Item Role<\/strong><\/span><\/td>\n<td style=\"width: 18.9097%; height: 24px; text-align: center;\"><span style=\"color: #000000;\"><strong>Role Pattern<\/strong><\/span><\/td>\n<td style=\"width: 19.8617%; height: 24px; text-align: center;\"><span style=\"color: #000000;\"><strong>Permissions<\/strong><\/span><\/td>\n<\/tr>\n<tr style=\"height: 48px;\">\n<td style=\"width: 17.8495%; height: 48px; text-align: center;\"><span style=\"color: #000000;\"><strong>Permissions<\/strong><\/span><br \/>\n<span style=\"color: #000000;\"><strong>Onshore Developers<\/strong><\/span><\/td>\n<td style=\"width: 17.5188%; height: 48px; text-align: center;\"><span style=\"color: #000000;\">onshore-developer<\/span><\/td>\n<td style=\"width: 16.9512%; height: 48px; text-align: center;\"><span style=\"color: #000000;\">No Item Role<\/span><\/td>\n<td style=\"width: 18.9097%; height: 48px; text-align: center;\"><span style=\"color: #000000;\">&#8211;<\/span><\/td>\n<td style=\"width: 19.8617%; height: 48px; text-align: center;\"><span style=\"color: #000000;\">Full access except delete\/create<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 17.8495%; height: 24px; text-align: center;\"><span style=\"color: #000000;\"><strong>Offshore Developers<\/strong><\/span><\/td>\n<td style=\"width: 17.5188%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">offshore-developer<\/span><\/td>\n<td style=\"width: 16.9512%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">offshore-devs<\/span><\/td>\n<td style=\"width: 18.9097%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">`.*-(uat|dev)<\/span><\/td>\n<td style=\"width: 19.8617%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">Can only see -uat and -dev pipelines<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 17.8495%; height: 24px; text-align: center;\"><span style=\"color: #000000;\"><strong>DevOps<\/strong><\/span><\/td>\n<td style=\"width: 17.5188%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">devops<\/span><\/td>\n<td style=\"width: 16.9512%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">devops-team<\/span><\/td>\n<td style=\"width: 18.9097%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">^(?!.*-Prod$).+$<\/span><\/td>\n<td style=\"width: 19.8617%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">Full access except -Prod pipelines<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 17.8495%; height: 24px; text-align: center;\"><span style=\"color: #000000;\"><strong>Support Team<\/strong><\/span><\/td>\n<td style=\"width: 17.5188%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">support<\/span><\/td>\n<td style=\"width: 16.9512%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">support-team<\/span><\/td>\n<td style=\"width: 18.9097%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">.*-helper<\/span><\/td>\n<td style=\"width: 19.8617%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">Can only view and build -helper pipelines<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 17.8495%; height: 24px; text-align: center;\"><span style=\"color: #000000;\"><strong>Admins<\/strong><\/span><\/td>\n<td style=\"width: 17.5188%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">admin<\/span><\/td>\n<td style=\"width: 16.9512%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">No Item Role<\/span><\/td>\n<td style=\"width: 18.9097%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">&#8211;<\/span><\/td>\n<td style=\"width: 19.8617%; height: 24px; text-align: center;\"><span style=\"color: #000000;\">Full access<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>3: Creating the Roles<\/h3>\n<p>Navigate to Manage Jenkins &gt; Manage and Assign Roles.<br \/>\nWe will start in the Manage Roles section.<\/p>\n<p><strong>Create Global Roles<\/strong><br \/>\nUnder Global Roles, we will add a role for each team.<\/p>\n<ol>\n<li>In the &#8220;Role to add&#8221; box, type admin and click Add.<br \/>\nCheck the box at the top of the admin column to give this role all permissions.<\/li>\n<li>Add the other global roles: onshore-developer, offshore-developer, devops, and support.<br \/>\nFor these new roles, grant only the Overall\/Read permission.<\/li>\n<li>For onshore-developer role, grant all Job permissions except for Create and Delete.<\/li>\n<\/ol>\n<p>Starting with low permissions is a security best practice. It prevents accidentally giving someone too much power.<\/p>\n<p><strong>Creating Item Roles<\/strong><br \/>\nNext, we\u2019ll create item roles to control access to jobs by name.<\/p>\n<p>Scroll down to the Item Roles section.<\/p>\n<ol>\n<li>In the &#8220;role to add&#8221; box, type offshore-devs and click Add.<br \/>\na. In the &#8220;Pattern&#8221; box for this role, enter .*-(uat|dev).<br \/>\nb. Why this pattern? It matches any job name that ends with -uat or -dev.<br \/>\nc. Grant the Build, Configure, Read, and Workspace permissions.<\/li>\n<li>Add the devops role with the pattern ^(?!.*-prod$).+$.<br \/>\na. This one matches any job name that does not contain -prod.<br \/>\nb. Grant all Job permissions for this role.<\/li>\n<li>At the end let&#8217;s add the support-helpers role with pattern .*-helper.<br \/>\na. This matches with any job name that has suffix -helper.<br \/>\nb. Grant only the Job\/Read and Job\/Build permissions.<\/li>\n<\/ol>\n<p>Our roles are set, with global roles for basic access and item roles for specific job control.<\/p>\n<div id=\"attachment_71213\" style=\"width: 835px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-71213\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-71213\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/03\/Manage-role-view-1024x459.png\" alt=\"Global and Item roles\" width=\"825\" height=\"370\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/03\/Manage-role-view-1024x459.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Manage-role-view-300x135.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Manage-role-view-768x345.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Manage-role-view-1536x689.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Manage-role-view-624x280.png 624w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Manage-role-view.png 1919w\" sizes=\"(max-width: 825px) 100vw, 825px\" \/><p id=\"caption-attachment-71213\" class=\"wp-caption-text\">ManageRole View<\/p><\/div>\n<h3><strong>4.\u00a0Assign Roles to Users<\/strong><\/h3>\n<p>1. Go to Manage Jenkins &gt; Manage and Assign Roles &gt; Assign Roles.<br \/>\n2. Under Global Roles, assign each user to their corresponding global role.<br \/>\n3. Under Item Roles, assign users to relevant item roles.<\/p>\n<h2>Highlights<\/h2>\n<ul>\n<li>You must have noticed that we are providing the minimum required permissions in the global role. This is done so that we can have more control over the user using the Item role.<\/li>\n<li>In item roles, we are using patterns. This is a powerful feature that enables us to fine-tune what that role can see and do based on regex patterns.<\/li>\n<li>We are not creating item roles for the Onshore team and Admin. This is because we don&#8217;t need to exclude or include specific jobs; we just need to manage permissions, and that option is available in global roles.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><strong>Let&#8217;s see with an example<\/strong><\/h3>\n<p><strong>Let&#8217;s assign Role to a member of Devops team.<\/strong><\/p>\n<p>Focus on the relevant Devops Global Role and Devops-team Item role of this user<\/p>\n<ol>\n<li><strong>Global Role:<\/strong> DevOps (Grants overall read access and agent access to Devops).<\/li>\n<\/ol>\n<div id=\"attachment_71217\" style=\"width: 835px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-71217\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-71217\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/03\/grole-1024x338.png\" alt=\"Global Role\" width=\"825\" height=\"272\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/03\/grole-1024x338.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/grole-300x99.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/grole-768x253.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/grole-624x206.png 624w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/grole.png 1098w\" sizes=\"(max-width: 825px) 100vw, 825px\" \/><p id=\"caption-attachment-71217\" class=\"wp-caption-text\">Global Role for Devops<\/p><\/div>\n<p><strong>2. Item Role:<\/strong> For example devops-team (Can access all jobs except those ending with -Prod).<\/p>\n<div id=\"attachment_71218\" style=\"width: 835px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-71218\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-71218\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/03\/Irole-1024x338.png\" alt=\"Item role\" width=\"825\" height=\"272\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/03\/Irole-1024x338.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Irole-300x99.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Irole-768x253.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Irole-624x206.png 624w, \/blog\/wp-ttn-blog\/uploads\/2025\/03\/Irole.png 1098w\" sizes=\"(max-width: 825px) 100vw, 825px\" \/><p id=\"caption-attachment-71218\" class=\"wp-caption-text\">Item role for devops-team<\/p><\/div>\n<p>Now the devops team user can only access all the jobs except those ending with -Prod.<\/p>\n<p>Notice we don&#8217;t assign item roles to the admin or onshore developer. Their permissions are fully defined by their powerful global roles.<\/p>\n<h2>Key Takeaways<\/h2>\n<p>1. Global roles provide overall access control.<br \/>\n2. Item roles fine-tune permissions using regex patterns.<br \/>\n3. Assigning the minimum required permissions in Global Roles helps avoid conflicts.<br \/>\n4. Pattern-based control allows flexible and secure access management.<\/p>\n<h3><strong>Helpful Resources<br \/>\n<\/strong><\/h3>\n<p>Regex for Pattern Matching: https:\/\/regex101.com\/<\/p>\n<h2>Conclusion<\/h2>\n<p>By implementing Role-Based Authorization Strategy, we achieved better security and organization within Jenkins, ensuring that users had only the access they needed.<\/p>\n<p>This method is scalable, easy to maintain, and enhances Jenkins security significantly.<\/p>\n<p>The Role-Based Authorization Strategy plugin is an essential tool for managing access control in Jenkins, especially in environments with multiple users and varying levels of access needs.<\/p>\n<p>You can read further <a href=\"https:\/\/plugins.jenkins.io\/role-strategy\/\">here<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Managing user permissions on a busy Jenkins server can be a headache. With a bunch of teams needing different levels of access, it\u2019s easy for someone to end up with too much power, and that\u2019s a risk. One stray click can knock over a prod pipeline. To fix this, you need a clear access [&hellip;]<\/p>\n","protected":false},"author":1921,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":269},"categories":[2348],"tags":[1682,6387,3815,327,6386,6250],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/64855"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/1921"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=64855"}],"version-history":[{"count":16,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/64855\/revisions"}],"predecessor-version":[{"id":75681,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/64855\/revisions\/75681"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=64855"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=64855"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=64855"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}