{"id":11063,"date":"2024-02-21T10:08:49","date_gmt":"2024-02-21T15:08:49","guid":{"rendered":"https:\/\/www.redline13.com\/blog\/?p=11063"},"modified":"2024-02-21T10:15:43","modified_gmt":"2024-02-21T15:15:43","slug":"common-tasks-in-k6","status":"publish","type":"post","link":"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/","title":{"rendered":"Common Tasks in k6"},"content":{"rendered":"<p><a id=\"post-11063-_2tmlsrp5vji9\"><\/a> <img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-11064\" src=\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2024\/02\/word-image-11063-1.png\" alt=\"Common Tasks in k6\" width=\"400\" height=\"300\" srcset=\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2024\/02\/word-image-11063-1.png 400w, https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2024\/02\/word-image-11063-1-300x225.png 300w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/p>\n<p>When writing your <a href=\"https:\/\/k6.io\/\" target=\"_blank\" rel=\"noopener\">k6<\/a> test scripts, there are certain common tasks that are recurrently encountered. In this post, we will discuss examples on how to accomplish several of these common tasks. Most of these examples are illustrated in the <a href=\"https:\/\/grafana.com\/docs\/k6\/latest\/examples\/html-forms\/#html-forms\" target=\"_blank\" rel=\"noopener\">official k6 documentation pages<\/a>.<\/p>\n<h3><a id=\"post-11063-_megewkapdfrs\"><\/a>Entering Data into Web Forms<\/h3>\n<p>User submission forms are a common target test endpoint. Tests such as these must be designed in a way that form fields are identified and mapped to useful values prior to submission. In k6, we can use the <code>submitForm()<\/code> method on a <code>Response<\/code> object. This comes as part of the <a href=\"https:\/\/grafana.com\/docs\/k6\/latest\/javascript-api\/k6-http\/response\/response-submitform\/\" target=\"_blank\" rel=\"noopener\">k6 JavaScript API<\/a>, and can be implemented in your test as follows:<\/p>\n<pre><strong>response.submitForm({\n<\/strong><strong>    formSelector: 'login-form',\n<\/strong><strong>    fields: { username: 'test_user', password: 'test_password' }\n<\/strong><strong>})<\/strong><\/pre>\n<h3><a id=\"post-11063-_x5ejml303mfs\"><\/a>HTTP Basic Authentication<\/h3>\n<p>A relatively simple yet essential task, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Basic_access_authentication\" target=\"_blank\" rel=\"noopener\">basic authentication<\/a> over HTTP allows your test to access a secured endpoint by providing a username and password. The most straightforward approach to this is using an interpolated string to inject credentials into your URLs. In the example below, we are using two variables, <code>username<\/code> and <code>password<\/code> to create a credentials string that is incorporated into the fully formed request:<\/p>\n<pre><strong>import http from 'k6\/http';\n\n<\/strong><strong>const credentials = `${username}:${password}`;\n<\/strong><strong>const url = `https:\/\/${credentials}@www.your-domain.com\/endpoint\/`;\n<\/strong><strong>let response = http.get(url);<\/strong><\/pre>\n<h3><a id=\"post-11063-_gljomudhjslt\"><\/a>Data Parameterization from JSON<\/h3>\n<p>As your test plan grows with sophistication, commonly there is a need to apply a dataset to your test. Some examples include such things as iterating over a list of user accounts, or a similar list of variables to submit to an API or a web form. One way that k6 natively supports this is through loading a dataset from a locally stored <a href=\"https:\/\/en.wikipedia.org\/wiki\/JSON\" target=\"_blank\" rel=\"noopener\">JSON<\/a> file:<\/p>\n<pre><strong>import { SharedArray } from 'k6\/data';\n\n<\/strong><strong>const data = new SharedArray('some data name', function () {\n<\/strong><strong>\u00a0 \u00a0 return JSON.parse(open('.\/data.json')).users;\n<\/strong><strong>});<\/strong><\/pre>\n<p>This loads a JSON file into a <em>JavaScript<\/em> collection. For illustrative purposes, here is an example that k6 provides in their <a href=\"https:\/\/grafana.com\/docs\/k6\/latest\/examples\/data-parameterization\/#from-a-json-file\" target=\"_blank\" rel=\"noopener\">official documentation<\/a>:<\/p>\n<figure id=\"attachment_11065\" class=\"wp-caption aligncenter\" style=\"max-width: 500px\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-11065\" src=\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2024\/02\/word-image-11063-2.png\" alt=\"Sample JSON content as presented in examples within the official k6 documentation\" width=\"500\" height=\"246\" srcset=\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2024\/02\/word-image-11063-2.png 500w, https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2024\/02\/word-image-11063-2-300x148.png 300w, https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2024\/02\/word-image-11063-2-425x209.png 425w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><figcaption class=\"wp-caption-text\">Sample JSON content as presented in examples within the official k6 documentation.<\/figcaption><\/figure>\n<p>To access fields, we can call properties on the <code>data<\/code> object (which is an instance of a <code>SharedArray<\/code> object) that we created in the previous step:<\/p>\n<pre><strong>export default function () {\n<\/strong><strong>\u00a0 \u00a0 console.log(data[0].username);\n<\/strong><strong>}<\/strong><\/pre>\n<p>Note that <code>data<\/code> becomes an indexed collection, with property accessors mapped to the field names specified in the JSON data file.<\/p>\n<h3><a id=\"post-11063-_wesmmv96h53j\"><\/a>Data Parameterization from CSV<\/h3>\n<p>Similar to the above example which references data in a locally stored JSON file, you can load a dataset from a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Comma-separated_values\" target=\"_blank\" rel=\"noopener\">CSV<\/a> file. It should be noted however that k6 lacks native support for CSV file parsing. Thankfully due to its <a href=\"https:\/\/www.redline13.com\/blog\/2024\/01\/top-5-most-useful-k6-extensions\/\" target=\"_blank\" rel=\"noopener\">extensibility<\/a>, there is a third-party extension <a href=\"https:\/\/www.papaparse.com\/\" target=\"_blank\" rel=\"noopener\"><em>PapaParse<\/em><\/a> that can be leveraged to extend this capability:<\/p>\n<pre><strong>import papaparse from 'https:\/\/jslib.k6.io\/papaparse\/5.1.1\/index.js';\n<\/strong><strong>import { SharedArray } from 'k6\/data';\n\n<\/strong><strong>const data = new SharedArray('CSV data', function () {\n<\/strong><strong>\u00a0 \u00a0 return papaparse.parse(open('.\/data.csv'), { header: true }).data;\n<\/strong><strong>});<\/strong><\/pre>\n<p>You can access and use the data in the same manner as the JSON example above, through the <code>SharedArray<\/code> object. In this case, the <code>data<\/code> object as an indexed collection extends property accessors mapped to the column names in the CSV file header row.<\/p>\n<h3><a id=\"post-11063-_jj6xvleazw55\"><\/a>Dynamic Setting of Request Parameters<\/h3>\n<p>Though it is possible to manually construct URLs for requests as strings, there are a few considerations we must pay attention to.\u00a0 One especially relates to URL encoding of special characters. However, k6 does offer the means to abstract parameter setting of URLs through a convenient extension:<\/p>\n<pre><strong>import { URL } from 'https:\/\/jslib.k6.io\/url\/1.0.0\/index.js';\n<\/strong><strong>import http from 'k6\/http';\n\n<\/strong><strong>const url = new URL('https:\/\/www.your-domain.com\/product');\n<\/strong><strong>url.searchParams.append('item_code', 'A101');\n<\/strong><strong>url.searchParams.append('item_quantity', '15');\n<\/strong><strong>url.searchParams.append('colors', ['red', 'green']);\n<\/strong><strong>const res = http.get(url.toString());<\/strong><\/pre>\n<p>The <code><a href=\"https:\/\/grafana.com\/docs\/k6\/latest\/examples\/url-query-parameters\/#urlsearchparams\" target=\"_blank\" rel=\"noopener\">URLSearchParams<\/a><\/code> object can be used to construct a fully qualified URL string by substituting variable names and associated values. It automatically handles delimiters and special characters, and as shown in the example above, can also handle collections.<\/p>\n<hr \/>\n<p>Did you know that RedLine13 offers a full-featured, time-limited free trial?\u00a0 <a href=\"https:\/\/www.redline13.com\/Service\" target=\"_blank\" rel=\"noopener\">Sign up now<\/a>, and start testing today!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When writing your k6 test scripts, there are certain common tasks that are recurrently encountered. In this post, we will discuss examples on how to accomplish several of these common tasks. Most of these examples are illustrated in the official k6 documentation pages. Entering Data into Web Forms User submission forms are a common target test endpoint. Tests such as these must be designed in a way that form fields are identified and mapped to useful<a class=\"more-link\" href=\"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/\">Read More &rarr;<\/a><\/p>\n","protected":false},"author":11,"featured_media":11064,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,1],"tags":[128,596,679,671,677,685,318,424],"class_list":{"0":"entry","1":"post","2":"publish","3":"author-dkoziel","4":"post-11063","6":"format-standard","7":"has-post-thumbnail","8":"category-blog","9":"category-uncategorized","10":"post_tag-cloud-load-testing","11":"post_tag-k6","12":"post_tag-k6-extensions","13":"post_tag-k6-load-tests","14":"post_tag-k6-script","15":"post_tag-k6-tests","16":"post_tag-load-testing","17":"post_tag-redline13"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.12 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Common Tasks in k6 - RedLine13<\/title>\n<meta name=\"description\" content=\"In this post, we will discuss examples of common tasks that are recurrently encountered and how to perform these in your k6 load tests.\" \/>\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.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Common Tasks in k6 - RedLine13\" \/>\n<meta property=\"og:description\" content=\"In this post, we will discuss examples of common tasks that are recurrently encountered and how to perform these in your k6 load tests.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/\" \/>\n<meta property=\"og:site_name\" content=\"RedLine13\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-21T15:08:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-02-21T15:15:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2024\/02\/word-image-11063-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"400\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"David Koziel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Koziel\" \/>\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.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/\"},\"author\":{\"name\":\"David Koziel\",\"@id\":\"https:\/\/www.redline13.com\/blog\/#\/schema\/person\/51d282221e3230ab35f964f98ada9b20\"},\"headline\":\"Common Tasks in k6\",\"datePublished\":\"2024-02-21T15:08:49+00:00\",\"dateModified\":\"2024-02-21T15:15:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/\"},\"wordCount\":543,\"publisher\":{\"@id\":\"https:\/\/www.redline13.com\/blog\/#organization\"},\"keywords\":[\"Cloud Load Testing\",\"k6\",\"k6 extensions\",\"k6 load tests\",\"k6 script\",\"k6 tests\",\"Load Testing\",\"RedLine13\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/\",\"url\":\"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/\",\"name\":\"Common Tasks in k6 - RedLine13\",\"isPartOf\":{\"@id\":\"https:\/\/www.redline13.com\/blog\/#website\"},\"datePublished\":\"2024-02-21T15:08:49+00:00\",\"dateModified\":\"2024-02-21T15:15:43+00:00\",\"description\":\"In this post, we will discuss examples of common tasks that are recurrently encountered and how to perform these in your k6 load tests.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.redline13.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Common Tasks in k6\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.redline13.com\/blog\/#website\",\"url\":\"https:\/\/www.redline13.com\/blog\/\",\"name\":\"RedLine13\",\"description\":\"(Almost) Free Load Testing in the Cloud\",\"publisher\":{\"@id\":\"https:\/\/www.redline13.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.redline13.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.redline13.com\/blog\/#organization\",\"name\":\"RedLine13\",\"url\":\"https:\/\/www.redline13.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.redline13.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2013\/06\/cropped-rl13-header-logo.jpg\",\"contentUrl\":\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2013\/06\/cropped-rl13-header-logo.jpg\",\"width\":300,\"height\":68,\"caption\":\"RedLine13\"},\"image\":{\"@id\":\"https:\/\/www.redline13.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.redline13.com\/blog\/#\/schema\/person\/51d282221e3230ab35f964f98ada9b20\",\"name\":\"David Koziel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.redline13.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2babf644e0993fc86893c24d7525f1e3be114a8746c01249797f25587ae1697a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2babf644e0993fc86893c24d7525f1e3be114a8746c01249797f25587ae1697a?s=96&d=mm&r=g\",\"caption\":\"David Koziel\"},\"url\":\"https:\/\/www.redline13.com\/blog\/author\/dkoziel\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Common Tasks in k6 - RedLine13","description":"In this post, we will discuss examples of common tasks that are recurrently encountered and how to perform these in your k6 load tests.","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.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/","og_locale":"en_US","og_type":"article","og_title":"Common Tasks in k6 - RedLine13","og_description":"In this post, we will discuss examples of common tasks that are recurrently encountered and how to perform these in your k6 load tests.","og_url":"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/","og_site_name":"RedLine13","article_published_time":"2024-02-21T15:08:49+00:00","article_modified_time":"2024-02-21T15:15:43+00:00","og_image":[{"width":400,"height":300,"url":"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2024\/02\/word-image-11063-1.png","type":"image\/png"}],"author":"David Koziel","twitter_card":"summary_large_image","twitter_misc":{"Written by":"David Koziel","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/#article","isPartOf":{"@id":"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/"},"author":{"name":"David Koziel","@id":"https:\/\/www.redline13.com\/blog\/#\/schema\/person\/51d282221e3230ab35f964f98ada9b20"},"headline":"Common Tasks in k6","datePublished":"2024-02-21T15:08:49+00:00","dateModified":"2024-02-21T15:15:43+00:00","mainEntityOfPage":{"@id":"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/"},"wordCount":543,"publisher":{"@id":"https:\/\/www.redline13.com\/blog\/#organization"},"keywords":["Cloud Load Testing","k6","k6 extensions","k6 load tests","k6 script","k6 tests","Load Testing","RedLine13"],"articleSection":["Blog"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/","url":"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/","name":"Common Tasks in k6 - RedLine13","isPartOf":{"@id":"https:\/\/www.redline13.com\/blog\/#website"},"datePublished":"2024-02-21T15:08:49+00:00","dateModified":"2024-02-21T15:15:43+00:00","description":"In this post, we will discuss examples of common tasks that are recurrently encountered and how to perform these in your k6 load tests.","breadcrumb":{"@id":"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.redline13.com\/blog\/2024\/02\/common-tasks-in-k6\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.redline13.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Common Tasks in k6"}]},{"@type":"WebSite","@id":"https:\/\/www.redline13.com\/blog\/#website","url":"https:\/\/www.redline13.com\/blog\/","name":"RedLine13","description":"(Almost) Free Load Testing in the Cloud","publisher":{"@id":"https:\/\/www.redline13.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.redline13.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.redline13.com\/blog\/#organization","name":"RedLine13","url":"https:\/\/www.redline13.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.redline13.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2013\/06\/cropped-rl13-header-logo.jpg","contentUrl":"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2013\/06\/cropped-rl13-header-logo.jpg","width":300,"height":68,"caption":"RedLine13"},"image":{"@id":"https:\/\/www.redline13.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.redline13.com\/blog\/#\/schema\/person\/51d282221e3230ab35f964f98ada9b20","name":"David Koziel","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.redline13.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2babf644e0993fc86893c24d7525f1e3be114a8746c01249797f25587ae1697a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2babf644e0993fc86893c24d7525f1e3be114a8746c01249797f25587ae1697a?s=96&d=mm&r=g","caption":"David Koziel"},"url":"https:\/\/www.redline13.com\/blog\/author\/dkoziel\/"}]}},"_links":{"self":[{"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/posts\/11063","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/comments?post=11063"}],"version-history":[{"count":5,"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/posts\/11063\/revisions"}],"predecessor-version":[{"id":11072,"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/posts\/11063\/revisions\/11072"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/media\/11064"}],"wp:attachment":[{"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/media?parent=11063"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/categories?post=11063"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/tags?post=11063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}