<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6420037820872138426</id><updated>2026-10-16T19:02:51.639+01:00</updated><category term="programming"/><category term="update"/><category term="new version"/><category term="features"/><category term="release"/><category term="ARC"/><category term="development"/><category term="issues"/><category term="permissions"/><category term="API"/><category term="Chrome app"/><category term="UI change"/><category term="Wireframe"/><category term="security"/><category term="API console"/><category term="beta"/><category term="mockup"/><category term="server"/><category term="upgrade"/><category term="web components"/><category term="CodeMirror"/><category term="announcement"/><category term="authorization"/><category term="automation"/><category term="changelog"/><category term="cookies"/><category term="native app"/><category term="prototype"/><category term="sockets"/><category term="testing"/><category term="variables"/><category term="Anypoint"/><category term="Exchange"/><category term="Fetch"/><category term="GDG"/><category term="Google IO"/><category term="Polymer"/><category term="RAML"/><category term="Request actions"/><category term="Statistics"/><category term="XHR"/><category term="abuse"/><category term="background page"/><category term="certificates"/><category term="coding"/><category term="conference"/><category term="deprecation"/><category term="electron"/><category term="environments"/><category term="export data"/><category term="extension"/><category term="headers"/><category term="history"/><category term="improvements"/><category term="job change"/><category term="linux"/><category term="macos"/><category term="module"/><category term="performance"/><category term="polymd"/><category term="redesign"/><category term="roadmap"/><category term="scripting"/><category term="session management"/><category term="survey"/><category term="windows"/><category term="xml view"/><category term="xml-viewer"/><title type='text'>Advanced REST client application</title><subtitle type='html'>Announcements for Advanced REST Client users</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>71</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-5905683728411871067</id><published>2022-02-01T06:55:00.002+00:00</published><updated>2022-02-01T07:23:57.442+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="release"/><title type='text'>Advanced REST Client version 17 release</title><content type='html'>&lt;p&gt;Version 17 of Advanced REST Client has been released. You can install it from ARC&#39;s&lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron/releases/tag/v17.0.6&quot;&gt; releases page.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This release was focused on consolidating so far distributed code-base. We have merged most of the existing libraries into 4 main repositories. This allows us to focus on building new features instead of compatibility between the libraries.&lt;/p&gt;&lt;p&gt;Besides the great consolidation, this version comes with several new features, bug fixes, and general improvements.&lt;/p&gt;&lt;p&gt;&lt;b&gt;New features&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Added &lt;b&gt;proxy settings&lt;/b&gt;&amp;nbsp;in the application configuration&lt;/li&gt;&lt;li&gt;Added an option to read the OS&#39; &lt;b&gt;hosts file&lt;/b&gt;&amp;nbsp;and combine the content with the app defined hosts&lt;/li&gt;&lt;li&gt;Added the ability to export the saved requests as a &lt;b&gt;HAR file&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Added a context menu entry for input fields to insert a variable&lt;/li&gt;&lt;li&gt;Added variables support in the authorization editor&lt;/li&gt;&lt;li&gt;Updated the UI to change the redirect URI for a single HTTP request&lt;/li&gt;&lt;li&gt;Added support for&amp;nbsp;&lt;b&gt;OICD&lt;/b&gt;&amp;nbsp;(OpenID Connect) authorization&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Improvements&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Removed support for CodeMirror. ARC uses Monaco editor only.&lt;/li&gt;&lt;li&gt;&lt;b&gt;New API Console&lt;/b&gt;&amp;nbsp;- the next (not yet published) version of MuleSoft&#39;s API Console - the API documentation tool&lt;/li&gt;&lt;li&gt;Removed update channels (alpha, beta, latest) from the application updater&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Added the app updater option to install a pre-release version&lt;/li&gt;&lt;li&gt;Dropping support for the &quot;alpha&quot; release&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Added notifications when processing API project (with the spec)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Deprecation&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Removed querying to the application backend for new messages&lt;/li&gt;&lt;li&gt;Removed custom Analytics service (Google Analytics is still there)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Fixes&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Fixed setting the port information in the Python code snippets&lt;/li&gt;&lt;li&gt;Fixed setting code snippets after changing authorization settings&lt;/li&gt;&lt;li&gt;Fixed #437 - changed the definition of binary data in the response view&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;We hope you will love this version. Please, give us your feedback on the project&#39;s GitHub page.&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/5905683728411871067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2022/02/advanced-rest-client-version-17-release.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/5905683728411871067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/5905683728411871067'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2022/02/advanced-rest-client-version-17-release.html' title='Advanced REST Client version 17 release'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-7412497291612366860</id><published>2021-12-10T18:26:00.006+00:00</published><updated>2021-12-10T18:26:46.829+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="development"/><category scheme="http://www.blogger.com/atom/ns#" term="redesign"/><category scheme="http://www.blogger.com/atom/ns#" term="roadmap"/><title type='text'>The future of ARC projects</title><content type='html'>&lt;p&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;In the discussion “&lt;/span&gt;&lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron/issues/80&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Redesign data storage - removal of Saved requests&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;”, I proposed ending of “saved” requests in the Advanced REST Client, moving all existing “saved” requests to a “default” project, and redesigning what a project is. I was unclear how to evolve this functionality back then, but today the path is clear. This post explains the way forward for ARC projects and the invitation for open discussion before finalizing the spec and turning it into a code.&lt;/span&gt;&lt;/p&gt;&lt;span id=&quot;docs-internal-guid-2a8186ef-7fff-358b-1f9b-336c6eb64179&quot;&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;History of projects&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Advanced REST Client (ARC) projects are simple “Saved” requests lists. Saved means they are stored the same way as the “history”, but the application allows defining additional metadata like name or description. A project conceptually is an object with a name and description with zero or more saved requests. The purpose of having a project is to group “saved” requests and organize them in the application. Otherwise, it serves no purpose.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Projects as functional lists&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;After reading comments in the post referenced at the top of this post and after having hours discussing what an API project means, I decided to change ARC’s projects. I’ll explain where I plan to go with ARC projects in the next paragraph. Note that this is an intermediate step to add support for API design in ARC. To ensure backward compatibility, I plan to implement changes to the ARC project that is the groundwork for future development of the application targeting API design.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;We base the new concept of a Project in ARC on &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;correlating HTTP requests for the same API&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; into a single structure. You will be able to make “&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;folders&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;”, which are a way to group HTTP request into even more defined lists. Each folder and the project can have a list of &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;environments&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; defined on each level. A folder inherits environments from a parent. However, a folder may set a flag to limit this inheritance. An environment is a definition of a &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;variables&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, and &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;authentication&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;. This way, you can switch environments (variables and server definition) to make HTTP requests to different physical environments without changing any of the HTTP requests definitions.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A “Project Runner” will allow you to run requests defined in a project or a folder one-by-one and render the execution log in the UI (CLI, the application).&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Finally, a project is a formal definition used in ARC. It is a well-defined standard and encapsulated, meaning all information is included in the project. The base format for a project is JSON. However, through the AMF parser, we plan to add support for the YAML format.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Design principles&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;We design projects to be accessible, standard, and usable.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Accessible&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; as we build the libraries used in ARC as NodeJS libraries. You can use these libraries to make your integrations on top of them. From these libraries, you can manipulate the project and execute HTTP requests. On top of the libraries, we plan to build a CLI that performs a set of designed operations to manage and execute a project. Finally, we will use the same libraries in ARC as a functional layer under the UI.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Standard&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; as we define data using industry standards (formats) or provide interfaces to exchange ARC formats to other standards. This way, you can switch from ARC to other tools and back.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Usable,&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; we define it as a connected experience. Operations in the UI can also be done in the CLI and with the libraries.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Use cases for ARC projects&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;API development&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;During the API implementation, a developer creates a project for the API. The developer creates a folder with HTTP requests that perform authentication and set variables with the access token. They configure a server with the base URI and use reserved variables in the HTTP request definition to access the value. Next, the developer creates a folder with a list of requests related to manipulating a resource in the API. They define a set of CRUD operations.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;During the development, they execute the requests in a folder to ensure the changes they make in the code do not influence the built application’s functional layer.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Naive testing&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;The developer executes the request in a folder in the CI/CD pipeline as unit tests. They use NodeJS libraries or a CLI to integrate the testing with their custom pipeline. We call it naive testing as even though these tests can function as a test layer for an API, they cannot replace structured testing of an API in the long run.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Current projects and “saved” requests&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Given the discussion we had in the referenced issue report, we plan to end-of-life of the current projects and “saved” requests. All currently “saved” requests that do not belong to a project we will move to a “default” (or similar) project.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Beyond the current scope of changes&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;After introducing the new projects in ARC (we target v18, H1 2022), we plan to work on structural API testing. We are missing details, but we plan to design a testing language for APIs, which the libraries translate to the code at runtime. This way, we design tests like we design APIs and the runtime libraries take care of the execution of the test. We believe it is a highly scalable way of testing APIs as this allows us to design once and run in different environments.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Please, &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;let us know what you think&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;. We are happy to hear your perspective on this. Before implementing the new projects, we can still shape the whole concept together. You can join the discussion in this GitHub post: &lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron/discussions/434&quot; target=&quot;_blank&quot;&gt;https://github.com/advanced-rest-client/arc-electron/discussions/434 &lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Regards&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Pawel Uchida-Psztyc&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/7412497291612366860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2021/12/the-future-of-arc-projects.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/7412497291612366860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/7412497291612366860'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2021/12/the-future-of-arc-projects.html' title='The future of ARC projects'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-7075758200590102313</id><published>2021-11-17T21:23:00.006+00:00</published><updated>2021-11-17T21:23:29.214+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ARC"/><category scheme="http://www.blogger.com/atom/ns#" term="beta"/><category scheme="http://www.blogger.com/atom/ns#" term="release"/><category scheme="http://www.blogger.com/atom/ns#" term="update"/><title type='text'>Version 17 - beta release</title><content type='html'>&lt;p&gt;&amp;nbsp;Dear ARC users,&lt;/p&gt;&lt;p&gt;Recently we released version 17 (beta) of the Advanced REST Client. In it few changes were requested for a very long time, so we are delighted that they will soon be available in the stable channel.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;See the list of changes below.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;Added support for HTTP proxy&lt;/b&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;We are introducing new settings in the application configuration to enable HTTP proxy. You can now allow proxy for HTTP requests. These settings work for both HTTP (classic proxy) and SSL (tunneling).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;More privacy&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We removed the in-app messages and the application&#39;s custom analytic service. From version 17, we won&#39;t be sending any data to the application backend. We are keeping Google Analytics to analyze how the application is used (so we can make product decisions). Still, it is up to you to agree to enable Google Analytics (it&#39;s disabled by default).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Next version of API Console&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Are you using ARC to render documentation for your APIs designed in RAML or OAS? In version 17, we are introducing the next version of API Console - the API documentation tool. This version is not yet published by MuleSoft. It&#39;s a complete redesign of the UI and the application architecture. We hope to hear feedback from you about the new experience!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Support for HAR&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;HAR (HTTP Archive format) is commonly used to store HTTP data. Version 17 allows you to export an HTTP request in the request editor as HAR data.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;New features in the authorization&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now you can perform OIDC (OpenID Connect) authorization from the request editor. It is a protocol designed on top of the OAuth2 protocol. We also changed the application to allow you to change the redirect URI in the request editor. Finally, now you can insert a variable into any authorization field, and they will be processed when preparing the request for the transport.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;HTTP body editors&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We removed support for CodeMirror, and now we only support Monaco (by Microsoft). This was we can focus on other aspects of the application development instead of the libraries we use.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;OS&#39; hosts file&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We added an option to read the OS&#39; hosts file and combine the content with the app-defined hosts. This way, you can test your virtual-hosts configuration of an HTTP server while keeping the configuration in the hosts file only.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;User input&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;We added a context menu entry for input fields to insert a variable. Right-click on an input field and select &quot;Insert variable.&quot; This brings a dialog that allows you to choose a variable to insert from the current environment.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Application auto-update&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;We removed update channels (alpha, beta, latest) from the application About screen. Now you can select an option to install a pre-release version of the application. This version is a release candidate. Therefore we dropped support for the &quot;alpha&quot; channel.&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;!--more--&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We are excited to hear your feedback. Please, install the pre-release version of the application, see what&#39;s coming and let us know your thoughts. If you would like the application to be developed in a specific direction or need a new feature, create an issue report or start a discussion on our &lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron&quot; target=&quot;_blank&quot;&gt;GitHub page&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/7075758200590102313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2021/11/version-17-beta-release.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/7075758200590102313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/7075758200590102313'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2021/11/version-17-beta-release.html' title='Version 17 - beta release'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-7445248798920854017</id><published>2021-01-31T00:40:00.002+00:00</published><updated>2021-01-31T00:40:15.227+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="announcement"/><category scheme="http://www.blogger.com/atom/ns#" term="changelog"/><category scheme="http://www.blogger.com/atom/ns#" term="development"/><category scheme="http://www.blogger.com/atom/ns#" term="features"/><category scheme="http://www.blogger.com/atom/ns#" term="release"/><title type='text'>Version 16 Released as Alpha Release</title><content type='html'>&lt;p&gt;&amp;nbsp;Fixes #304&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This fixes #304 which is a long running effort to upgrade application logic and UI.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;You can try the new application by cloning this repository and checking out the `redesing2020` branch. Then installed dependencies (`npm i`) and start the application (`npm start`).&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;After over a year of redesigning the application and upgrading its code base I am proud to announce that the application with version 16.0.0-alpha.6 has been released today. This is a significant milestone for the application from the development perspective because the entire code base has been redesigned and upgraded to use Type Script to ensure stability of the code base and a new centralized DOM Events module that manages internal communication. Because of that we will be able to accelerate the development of the application, reduce number of issues, and simplify the development workflows. Also the number of components used by the application has been significantly reduced to help with the developer work flow.&amp;nbsp;&lt;/p&gt;&lt;p&gt;From the user perspective this release comes with complete redesign of the UI: new navigation and workspace that support different types of editors (not only HTTP editor). In the future this redesign will allow us to introduce new functionality to the application, like support for Protocol Buffers, GraphQL queries, or structural API testing capabilities. This wasn&#39;t possible with the previous application and information architecture.&amp;nbsp;&lt;/p&gt;&lt;p&gt;We are also working on a new documentation for the application that includes video tutorials, and&amp;nbsp;&lt;/p&gt;&lt;p&gt;Below is the complete change log for the v16 release for the end-user.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Now the navigation has a navigation rail to move between different sections of the navigation. This makes space for other planned types of navigation&lt;/li&gt;&lt;li&gt;ARC now uses Monaco editor to edit the request body. This can be changes back to CodeMirror in application settings.&lt;/li&gt;&lt;li&gt;Redesigned the response view. Now the response view has panels that can be opened on demand. The old response view was split into several panels.&lt;/li&gt;&lt;li&gt;The request panel now allows to import cURL command&lt;/li&gt;&lt;li&gt;Application navigation now can be resized. It can be also hidden by clicking on the currently selected menu icon.&lt;/li&gt;&lt;li&gt;Response view can be now resized as the panels are being created as stacked on top of each other.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Redesigned settings panel. Added new UI and tons of new options controlling application behavior.&lt;/li&gt;&lt;li&gt;Redesigned request workspace for the load time.&lt;/li&gt;&lt;li&gt;The authorization settings now can be configured but not enabled. Also, the application allows to configure multiple authorization settings in a single request. The authorization is applied to the request through a separate module so the transformation won&#39;t change the request object in the editor.&lt;/li&gt;&lt;li&gt;Added response size limits. First limit renders a warning about the size of the message. The user can choose to render the view anyway. The other limit forces unprocessed (&quot;raw&quot;) view of the response. This way it reduces chances of application hanging.&lt;/li&gt;&lt;li&gt;Removed &quot;table view&quot; from the response view. This module turned out to be very challenging to create and maintain. The final effect was a slow UI and not so good experience when working with the data.&lt;/li&gt;&lt;li&gt;Redesigned request actions. It has new actions (set variable, set cookie, delete cookie). Actions are also conditional. The user can set up a condition when the action is to be executed.&lt;/li&gt;&lt;li&gt;Added a new tab in the request editor: meta. It renders request meta data (name, list of projects, etc) for a saved request.&lt;/li&gt;&lt;li&gt;Removed ability to export to multiple folders in Google Drive (this was deprecated in Drive API).&lt;/li&gt;&lt;li&gt;The &quot;detailed&quot; URL editor now only edit query parameters&lt;/li&gt;&lt;li&gt;The request body editor now support different specialized editors and each of them stores own value. This means that when the user switch from &quot;raw&quot; to &quot;Multipart&quot; editor the multipart editor will restore previously used form&lt;/li&gt;&lt;li&gt;Themes manager now opens in a new window instead being part of ARC&lt;/li&gt;&lt;li&gt;Added status message about currently transported request. The transport library informs the application when the message is being transmitted, when headers are received, when response payload is being read, and when the load complete.&lt;/li&gt;&lt;li&gt;Added ability to send the request by pressing ctrl+Enter anywhere in the request editor. Similarly, the Escape&amp;nbsp;key cancels the request.&lt;/li&gt;&lt;li&gt;Tabs in the request workspace now have flexible width. When more tabs is opened they shrink to accommodate all tabs in the current view.&lt;/li&gt;&lt;li&gt;Fixed tons of spelling mistakes :)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can try the next version of the application today by downloading the alpha version. But, please, note that alpha version is not targeted for production. It hasn&#39;t been tested in the field and may contain undetected issues. If you find an issue, please, report it on the project&#39;s GitHub page, or by using application&#39;s &quot;help&quot; menu.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv2G_E3hJe_JZSvWn-aWpHTu-7zDuSbmrlAGN9oWbbnLx_HeKftdhuGg4Q1eyT9pBJ4u9qWU8P45FITzBUpg6deNdQeqSAXFAe96wlSHd_Bw4Gb_nY_kWMtAwaha8DKkQ7lRBKpR-DmL8n/s1932/102749596-20e42c80-4319-11eb-80b4-abb643a335a3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1621&quot; data-original-width=&quot;1932&quot; height=&quot;536&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv2G_E3hJe_JZSvWn-aWpHTu-7zDuSbmrlAGN9oWbbnLx_HeKftdhuGg4Q1eyT9pBJ4u9qWU8P45FITzBUpg6deNdQeqSAXFAe96wlSHd_Bw4Gb_nY_kWMtAwaha8DKkQ7lRBKpR-DmL8n/w640-h536/102749596-20e42c80-4319-11eb-80b4-abb643a335a3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/7445248798920854017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2021/01/version-16-released-as-alpha-release.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/7445248798920854017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/7445248798920854017'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2021/01/version-16-released-as-alpha-release.html' title='Version 16 Released as Alpha Release'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv2G_E3hJe_JZSvWn-aWpHTu-7zDuSbmrlAGN9oWbbnLx_HeKftdhuGg4Q1eyT9pBJ4u9qWU8P45FITzBUpg6deNdQeqSAXFAe96wlSHd_Bw4Gb_nY_kWMtAwaha8DKkQ7lRBKpR-DmL8n/s72-w640-h536-c/102749596-20e42c80-4319-11eb-80b4-abb643a335a3.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-6092223931683666143</id><published>2020-01-29T23:35:00.000+00:00</published><updated>2020-01-29T23:35:32.871+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ARC"/><category scheme="http://www.blogger.com/atom/ns#" term="authorization"/><category scheme="http://www.blogger.com/atom/ns#" term="certificates"/><category scheme="http://www.blogger.com/atom/ns#" term="release"/><title type='text'>Advanced REST Client version 15 is released with client certificates</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Version 15 of Advanced REST Client has been released. You can install it from &lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron/releases&quot;&gt;ARC releases page.&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b id=&quot;docs-internal-guid-8ec10eeb-7fff-caa5-04b3-4a457af65c69&quot; style=&quot;-webkit-text-stroke-width: 0px; color: black; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;This release comes with a support for client certificates. Read more to learn how to use client certificates in Advanced REST Client.&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;-webkit-text-stroke-width: 0px; color: black; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV-BNiEgdjhhkNcXtSLR4omgwELI5G1oLO6SkbzUsS5GOG3ZKl01e78fOmeLP-OTQ5hQRjduH_ALGUwkkzL5itBWLG1pNN_5kiBdJuCnClDexWE5CAJGHKBrsTXW8f6m0ESlOPl11pU1CD/s1600/Screen+Shot+2020-01-29+at+3.34.08+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1030&quot; data-original-width=&quot;1600&quot; height=&quot;412&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV-BNiEgdjhhkNcXtSLR4omgwELI5G1oLO6SkbzUsS5GOG3ZKl01e78fOmeLP-OTQ5hQRjduH_ALGUwkkzL5itBWLG1pNN_5kiBdJuCnClDexWE5CAJGHKBrsTXW8f6m0ESlOPl11pU1CD/s640/Screen+Shot+2020-01-29+at+3.34.08+PM.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Client certificates manager in Advanced REST Client&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Client certificates is an authentication method that allows to select a certificate that will be used in the request to authenticate the user. The application uses this certificate at the initial handshake with the server. Without the certificate the server that supports certificate based authentication would reject the request with 401 status code (unauthenticated state).&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;-webkit-text-stroke-width: 0px; color: black; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;The application now has a global certificate storage where all client certificates are installed. You can access it from main menu &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Request &amp;gt; Web session &amp;gt; Client certificates&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;When adding a certificate you can choose from P12 (PKCS #12) and PEM (Privacy-Enhanced Mail) formats.&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;-webkit-text-stroke-width: 0px; color: black; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;The P12 format requires to select a single file that bundles the public certificate and private key together. If the file requires a password then provide it when the certificate is imported. Currently there is no UI to check / edit password.&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;-webkit-text-stroke-width: 0px; color: black; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;PEM import requires to provide 2 files: the public certificate file and the private key. Similarly to P12 you should enter private key’s password if required.&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;-webkit-text-stroke-width: 0px; color: black; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;The request will result with internal error with status code 0 (zero) if the password is incorrect.&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;-webkit-text-stroke-width: 0px; color: black; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Once a certificate is stored in application’s data store it can be used with the request editor, specifically with authorization settings. After selecting “Client certificate” option in the authorization drop down, a list of installed certificates appear. Select a certificate you want to use with the current request. The application now handles the rest. When the “send” button is pressed the certificate is restored from the datastore, decrypted if necessary, and passed to the HTTP request engine for processing.&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;-webkit-text-stroke-width: 0px; color: black; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 10pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Other updates&lt;/span&gt;&lt;/h1&gt;
&lt;br /&gt;
&lt;ul style=&quot;margin-bottom: 0px; margin-top: 0px;&quot;&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;div dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Fixed issues with code snippets rendering (new lines at the end of the body)&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;div dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Updated AMF parser to version 4&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;div dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;As a result of upgrading AMF parser also upgraded API Console&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;div dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Added “--skip-app-update” and “--skip-themes-update” command line switches&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;div dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Added auto switching to the dark theme when the OS operates in dark mode&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;div dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Upgraded Electron version to 7&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/6092223931683666143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2020/01/advanced-rest-client-version-15-is.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/6092223931683666143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/6092223931683666143'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2020/01/advanced-rest-client-version-15-is.html' title='Advanced REST Client version 15 is released with client certificates'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV-BNiEgdjhhkNcXtSLR4omgwELI5G1oLO6SkbzUsS5GOG3ZKl01e78fOmeLP-OTQ5hQRjduH_ALGUwkkzL5itBWLG1pNN_5kiBdJuCnClDexWE5CAJGHKBrsTXW8f6m0ESlOPl11pU1CD/s72-c/Screen+Shot+2020-01-29+at+3.34.08+PM.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-2492157566465864505</id><published>2020-01-29T00:13:00.002+00:00</published><updated>2020-01-29T00:13:31.479+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API console"/><category scheme="http://www.blogger.com/atom/ns#" term="release"/><title type='text'>API Console version 6 is now released</title><content type='html'>ARC&#39;s sister project, API Console - the API documentation tool, is now published with version number 6. It brings tons of changes and improvements. You can use API Console to document your APIs using API definition. Read more to learn about changes and features of API Console.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;API Console is an application that generates documentation for an API from a RAML or Open API definition. It is done by generating an AMF data model thanks to the AMF parser or the “&lt;a href=&quot;https://github.com/raml-org/webapi-parser&quot;&gt;webapi-parser&lt;/a&gt;” module. The console is built on top of web platform APIs so it can be easily integrated with every web based application. It comes in two flavors: a stand-alone application and a web component. Depending on your use case you may use either of them.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The stand-alone application allow you to quickly generate documentation for an API and run it on a web server as a separate application. We are providing a CLI tool to generate the application from sources and a Docker image to simplify the deployment. The web component is to be used if you want to integrate the console with an existing application. This requires more setup and development process but allows for the most flexibility.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h2&gt;
What’s new in version 6?&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
API Console is now &lt;b&gt;WCAG compliant&lt;/b&gt;. During the development process we put a lot of effort into making sure that the console is accessible for users with disabilities. This version is tested via automated software and via manual testing.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The updated UI implements changes requested by our customers and the community. The navigation has a slightly different structure and now always renders a full path to the resource, even when it exceeds the size of a single line menu item. New examples and annotation widgets makes the UI more user friendly.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The request editor (aka “try it”) has been redesigned to simplify interaction with the API. It now only renders fields that require input from the user to make a successful request. This means, for example, if headers are not defined for an operation then they are not rendered.&lt;/div&gt;
&lt;div&gt;
With this release we added more security by sanitizing markdown data that are being rendered. Also, user input in the request editor is tested against invalid data.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h2&gt;
Improvements to the console&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Most improvements are related to performance. The size of the bundle has been reduced almost 4 times and now the bundled API Console weight is ~300KB. This speeds up console rendering time and improves memory footprint.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the documentation view complex types are now hidden by default. This reduces potential crashes when the documentation has huge type declarations. In previous versions of the console this would lead to tabs crashing. Similarly, huge examples generated for such types are not highlighted by default. Previously it would require the browser to render unreasonable amount of markup that would hang the tab for minutes.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The console’s source has been rewritten to use the latest web standards which puts most of the work to the browser instead of JavaScript. This improves overall experience as the console runs smoothly regardless of the size of the API. The console still works with legacy browsers (down to IE11) with polyfills generated with the bundle.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h2&gt;
Developer improvements&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Being as close to standards as possible was rule #1 when designing architecture for API Console and the build tools. The console now follows Open WC standards for development and building processes. Application specific code related to the development and building process has been reduced to the minimum.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
API Console has its own node module and CLI command to generate a bundle in a CI environment or manually. Besides that with this release we offer a Docker image that has bundled API Console, AMF parser, and a web server with it. As a developer you just need to pass an API project to generate data model from it and run the image on your Kubernetes instance.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h2&gt;
Reasons to choose API Console&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
API Console is and will be in active development as it is one of the core Anypoint platform products while being an open source project. The console is tested in an enterprise environment and runs in both public and private clouds. It fulfills all requirements for an application to run in government’s cloud.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
We have experience with building API documentation products supported by several years of development of API Console and other products like Advanced REST Client. We are open to suggestions and over the years we have listened to the voice of the community and our customers. Today we are proud of the final effect of our work and happy to share this experience with the community.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h2&gt;
How to get started?&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
We’ve prepared a few demos with basic use cases for API Console. You can check it out at &lt;a href=&quot;https://demo.api-console.io/&quot;&gt;demo.api-console.io&lt;/a&gt;. For developers we have prepared a documentation page at &lt;a href=&quot;https://docs.api-console.io/&quot;&gt;docs.api-console.io&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Try API Console today and give us your feedback. We accept issue reports and feature requests on &lt;a href=&quot;https://github.com/mulesoft/api-console/issues&quot;&gt;console’s GitHub page&lt;/a&gt;. If you are MuleSoft customer you can contact customer support and gives us your feedback directly.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Relation to Advanced REST Client&lt;/h2&gt;
&lt;div&gt;
API Console is a sister project of ARC. It uses the same code base. The request editor (aka try it) is made from the same UI blocks but adjusted to consume AMF model. The response view is literally the same. Also, you can open an API specification in ARC and it renders API Console view embedded in the application.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/2492157566465864505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2020/01/api-console-version-6-is-now-released.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/2492157566465864505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/2492157566465864505'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2020/01/api-console-version-6-is-now-released.html' title='API Console version 6 is now released'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-6545066202780224981</id><published>2019-10-18T20:22:00.000+01:00</published><updated>2019-10-18T20:22:51.515+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="release"/><category scheme="http://www.blogger.com/atom/ns#" term="update"/><title type='text'>Advanced Rest Client version 14 release</title><content type='html'>Version 14 of Advanced Rest Client has been released. You can install it from ARC&amp;nbsp;&lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron/releases&quot; target=&quot;_blank&quot;&gt;releases page&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
This release comes with complete rewrite of code base and few new features. Read more for a full list of changes.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtccOmgnk3ElpoQDWu_DalNkh1_Pz6GS9Oil5qzF8Q1iVh2BmG7m-3FJJBfAbSlxUb8_rz-HceKiiqaOhbbxCmWE-GB6ngTiBUVXtxCZrAf0izehy_xVXRytk_BLs2ncsn-ScAqlAtnRoB/s1600/Screen+Shot+2019-10-18+at+11.29.08+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1023&quot; data-original-width=&quot;1340&quot; height=&quot;305&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtccOmgnk3ElpoQDWu_DalNkh1_Pz6GS9Oil5qzF8Q1iVh2BmG7m-3FJJBfAbSlxUb8_rz-HceKiiqaOhbbxCmWE-GB6ngTiBUVXtxCZrAf0izehy_xVXRytk_BLs2ncsn-ScAqlAtnRoB/s400/Screen+Shot+2019-10-18+at+11.29.08+AM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;ARC version 14 main view&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Highlights&lt;/span&gt;&lt;/h2&gt;
&lt;h3&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;
Workspaces&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
ARC now support workspaces. It allows you to save current arrangement of requests to a file and share it with others. After opening the file in ARC it restores the same view and requests configuration.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This could be used for learning purposes. You can share your requests configuration and instruct your audience of how to test your API step by step (or rather tab by tab).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8VZDAXKiIWHEKHh9KUG-6h1K7U2QQDvGczHIkSTXyYSPrSwxwfRdBrsnZa8iyV4phO_WjtUMIlqU2elmqrlsCd7qPHHrxU7NgmARF2r00VS37K53jbSPmnyTqiw8RWPDaMFW4q0C3RnaV/s1600/Screenshot+from+2019-10-10+21-47-46.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;828&quot; data-original-width=&quot;747&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8VZDAXKiIWHEKHh9KUG-6h1K7U2QQDvGczHIkSTXyYSPrSwxwfRdBrsnZa8iyV4phO_WjtUMIlqU2elmqrlsCd7qPHHrxU7NgmARF2r00VS37K53jbSPmnyTqiw8RWPDaMFW4q0C3RnaV/s400/Screenshot+from+2019-10-10+21-47-46.png&quot; width=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Workspace detail&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
You can add workspace description as Markdown, information about version, publication time, and the author.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAv1wUrXQr3YlBiiWVG-_6XruONPqerGsDVqAN4TXax16LW4dNspIX289z6NcV2zlzPQFG94T96qxPFGvRoP2gxmq3wmPmcnTZy1jGmLawmkEkRs9A8EoeZkWVAxyFHZvnSFl0wPTkDHrg/s1600/Screenshot+from+2019-10-10+21-49-07.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;898&quot; data-original-width=&quot;711&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAv1wUrXQr3YlBiiWVG-_6XruONPqerGsDVqAN4TXax16LW4dNspIX289z6NcV2zlzPQFG94T96qxPFGvRoP2gxmq3wmPmcnTZy1jGmLawmkEkRs9A8EoeZkWVAxyFHZvnSFl0wPTkDHrg/s320/Screenshot+from+2019-10-10+21-49-07.png&quot; width=&quot;253&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Workspace detail editor&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Request configuration&lt;/span&gt;&lt;/h3&gt;
Use request configuration to override application or workspace configuration. Options defined on a request are applied to this particular request and won&#39;t affect other requests.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPfQmNtHsSO0O-IYl_bKh_kJPAGGLR80zGFzcWqW2j-5xd8nfIy4vf-7au03pTNmC5BUNyo8wMhRXCLmtt2iI8okgAZTXz152iRFtAHb5yPabHWKWp2WfxAZUkthuQ3RZoOICfMKaq7jsK/s1600/Screen+Shot+2019-10-18+at+11.55.25+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1023&quot; data-original-width=&quot;1340&quot; height=&quot;305&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPfQmNtHsSO0O-IYl_bKh_kJPAGGLR80zGFzcWqW2j-5xd8nfIy4vf-7au03pTNmC5BUNyo8wMhRXCLmtt2iI8okgAZTXz152iRFtAHb5yPabHWKWp2WfxAZUkthuQ3RZoOICfMKaq7jsK/s400/Screen+Shot+2019-10-18+at+11.55.25+AM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Request configuration options&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
At the moment you can change whether the request should follow redirects, request timeout, enable or disable SSL certificates validation, enable Node HTTP client (instead of ARC&#39;s), and to enable default headers (accept and user agent).&lt;br /&gt;
&lt;h3&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;
Image / PDF preview&lt;/span&gt;&lt;/h3&gt;
The response view now shows images instead of binary string.&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjP0FqfY3_WwYMweIBowDoQhQNLLxhy1URXLugaVD_Sz_DZpvM2Za7qZcdJsdzEI7hnKSBNbUuAUvxo0SJJ2vY_ICtStXOZWPhmFRbQOA0hcYp3ku8KGkF_gMEqJuJIBbcr1-PCQYccGjH/s1600/Screenshot+from+2019-10-10+22-02-00.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;377&quot; data-original-width=&quot;865&quot; height=&quot;173&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjP0FqfY3_WwYMweIBowDoQhQNLLxhy1URXLugaVD_Sz_DZpvM2Za7qZcdJsdzEI7hnKSBNbUuAUvxo0SJJ2vY_ICtStXOZWPhmFRbQOA0hcYp3ku8KGkF_gMEqJuJIBbcr1-PCQYccGjH/s400/Screenshot+from+2019-10-10+22-02-00.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Response image view&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;When the response is a PDF file then it renders information about the file and allows you to save the PDF file to disk.&lt;/div&gt;
&lt;h3 style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;
Default headers&lt;/span&gt;&lt;/h3&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
ARC now allows you to add default headers: user-agent and accept to each request automatically. This way ARC behaves like cURL command and may help you test APIs that requires both values. The option is available in Settings panel &amp;gt; Request settings (global configuration) and in request config.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;
Code snippets in the request editor&lt;/span&gt;&lt;/h3&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Code snippets has been moved from context menu to request editor. It renders an example of running the request in various languages and frameworks.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghNDIA_FmZKVyChV1tZ8q6Mx1uGNiqlnCXSM-bVtt_V7d56Gc7pkMPIW0STqlu1X6vyRzO4B-24EgnphqoEF_Q7tgdpJvIBF_GGWNXiidAvKEkL6nMkOGP4DTKXM7JdJ_-rJ-S5z8QhbJU/s1600/Screenshot+from+2019-10-10+22-06-42.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;630&quot; data-original-width=&quot;924&quot; height=&quot;272&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghNDIA_FmZKVyChV1tZ8q6Mx1uGNiqlnCXSM-bVtt_V7d56Gc7pkMPIW0STqlu1X6vyRzO4B-24EgnphqoEF_Q7tgdpJvIBF_GGWNXiidAvKEkL6nMkOGP4DTKXM7JdJ_-rJ-S5z8QhbJU/s400/Screenshot+from+2019-10-10+22-06-42.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;New API Console&lt;/span&gt;&lt;/h3&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
The API Console has been upgraded to latest version. It contains several design and technological changes. The API Console renders when you open RAML or OAS specification file in File &amp;gt; Open file menu option.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3UFVMp8kJKpjhOR4HhoNDPujNbD9AWJjOEvg5r-9aVP601-NPoTCqpICpOlAVqS2hMn2n8dogrf-IZ_J7BkPzthQscRQPmKoQhwpSJb_Kppm4eOhz1XR5Sv3iwIEWTmO9McXbtLObCRCK/s1600/Screen+Shot+2019-10-18+at+12.10.58+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1021&quot; data-original-width=&quot;1600&quot; height=&quot;255&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3UFVMp8kJKpjhOR4HhoNDPujNbD9AWJjOEvg5r-9aVP601-NPoTCqpICpOlAVqS2hMn2n8dogrf-IZ_J7BkPzthQscRQPmKoQhwpSJb_Kppm4eOhz1XR5Sv3iwIEWTmO9McXbtLObCRCK/s400/Screen+Shot+2019-10-18+at+12.10.58+PM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;API Console in Advanced REST Client&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Exchange authentication&lt;/span&gt;&lt;/h3&gt;
Now ARC uses new authorization server for OAuth 2 connected applications. In APIs explore screen you can log in to your Exchange account to list your organization APIs.&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd6mtNals0OhcqqcpwDFSzVD3Hp8Pny2uJ_kDqNwKgY_QceC9ymCcIwPe2HSm6ZabQqQua6kLjOEg5xuDxFMjP3A56VUYQIZuCr7G9WjTY0Kk-d7AVJUkAdZDW1Tciz0r-183cgPn3-ORS/s1600/Screen+Shot+2019-10-18+at+12.14.45+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1021&quot; data-original-width=&quot;1600&quot; height=&quot;255&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd6mtNals0OhcqqcpwDFSzVD3Hp8Pny2uJ_kDqNwKgY_QceC9ymCcIwPe2HSm6ZabQqQua6kLjOEg5xuDxFMjP3A56VUYQIZuCr7G9WjTY0Kk-d7AVJUkAdZDW1Tciz0r-183cgPn3-ORS/s400/Screen+Shot+2019-10-18+at+12.14.45+PM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Exchange API assets view&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;
New stuff&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Click on a link in the response view with CTRL/CMD key pressed opens new GET request in new tab&lt;/li&gt;
&lt;li&gt;Now workspace has its own configuration file with set structure (see&amp;nbsp;&lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron/blob/master/docs/api/workspace.md&quot; target=&quot;_blank&quot;&gt;this document&lt;/a&gt;&amp;nbsp;for more information)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Now it is possible to define variables on a workspace level. Workspace variables overrides application variables in case of conflict. With this release it is only possible to define variables in the configuration file.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Added export dialog to the request editor. It will now use the same UI as other parts of the application.&lt;/li&gt;
&lt;li&gt;Adding configuration option to automatically add basic request headers: accept and user-agent. This way that application behaves like cURL.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
Note, workspace configuration development is planned for several releases as it is a complex change in the application. Next planned change is to add variables editor for the request.&lt;br /&gt;
&lt;h2&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;
Changes&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Web session URL input has been moved to the workspace instead of ARC application frame. It allows to configure the session URL per workspace.&lt;/li&gt;
&lt;li&gt;Replaced default export file extension from &quot;json&quot; to &quot;arc&quot;.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Redesigned application themes. Updated styles for Dark and Anypoint themes. Now theme definition is a regular CSS file.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Now changing a theme does not require application reload.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Moving code snippets from workspace to request editor.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Exchange search screen now is using new authorization server that fully support OAuth 2 protocol.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;API Console has been redesigned. It also has new web components. The request panel has been simplified.&lt;/li&gt;
&lt;li&gt;Variables list now masks values by default. It allows you to use the view when presenting to others.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;
Bug fixes&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Content-* headers on GET request - now the application warns you before sending this headers with GET request. This headers can mess up the request on the server side.&lt;/li&gt;
&lt;li&gt;Export to Google Drive flow. Authorization is fixed and the app is enabled to use Google Drive data.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Fixed export dialog in the history panel to include default file name.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Fixed z-index of the toolbar to restore variables overlay rendering.&lt;/li&gt;
&lt;/ul&gt;
We hope you will&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;❤&lt;/span&gt;&amp;nbsp;this release as much as we do. As always we are happy to learn more how you use ARC and how we can make it better for you. Contact us via &lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron/issues/new/choose&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt; or send an email to arc@mulesoft.com.</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/6545066202780224981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2019/10/advanced-rest-client-version-14-release.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/6545066202780224981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/6545066202780224981'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2019/10/advanced-rest-client-version-14-release.html' title='Advanced Rest Client version 14 release'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtccOmgnk3ElpoQDWu_DalNkh1_Pz6GS9Oil5qzF8Q1iVh2BmG7m-3FJJBfAbSlxUb8_rz-HceKiiqaOhbbxCmWE-GB6ngTiBUVXtxCZrAf0izehy_xVXRytk_BLs2ncsn-ScAqlAtnRoB/s72-c/Screen+Shot+2019-10-18+at+11.29.08+AM.png" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-8229692410570364709</id><published>2019-10-06T05:36:00.000+01:00</published><updated>2019-10-06T05:40:29.077+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="announcement"/><category scheme="http://www.blogger.com/atom/ns#" term="beta"/><category scheme="http://www.blogger.com/atom/ns#" term="release"/><title type='text'>Advanced REST Client beta 14 release</title><content type='html'>New beta 14 version of ARC has been released for testing.&lt;br /&gt;
You can install it from ARC &lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron/releases&quot; target=&quot;_blank&quot;&gt;releases page&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
This release comes with complete rewrite of code base and few new features. Read more for a full list of changes.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
The application now uses new web components that has been rewritten to comply with the final specification of Web Components. Also, in most cases, Polymer has been replaced with LitElement library.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;
New stuff&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Click on a link in the response view with CTRL/CMD key pressed will open new GET request in new tab&lt;/li&gt;
&lt;li&gt;Now workspace has its own configuration file with set structure (see &lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron/blob/develop/docs/api/workspace.md&quot;&gt;this document&lt;/a&gt; for more information)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Now it is possible to define variables on a workspace level. Workspace variables overrides application variables in case of conflict. With this release it is only possible to define variables in the configuration file.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;The application now allows to define workspace metadata (description, creation time, author info), export workspace to file, and open the file as a data source for the workspace. This allows you to create a workspace configuration (requests, variables, app-like configuration) and share it with others. This way, regardless of application configuration, you will have the same environment.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Added export dialog to the request editor&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Adding workspace files history menu&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Adding request configuration options panel in the request editor. Now some application configuration options related to request processing can be overridden on the request level.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Adding response image and PDF files preview in the response panel.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Adding configuration option to automatically add basic request headers: accept and user-agent. This way that application behaves like cURL.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
Note, workspace configuration is planned for several releases as it is a complex change in the application.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;
 Changes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Web session URL input has been moved to the workspace instead of ARC app. It allows to configure the URL per workspace &lt;/li&gt;
&lt;li&gt;Replaced export file extension from json to arc.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Redesigned application themes. Updating styles for dark and Anypoint themes. Now theme definition is a regular CSS file.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Changing a theme does not require application reload anymore.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Moving code snippets from workspace to request editor.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Exchange search screen now is using new authorization server that fully support OAuth 2 protocol.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;API Console has been redesigned. It also has new web components. The request panel has been simplified.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
 Bug fixes &lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Content-* headers on GET request - now the app warns you before sending those headers with GET request. This headers can mess up the request on the server side. &lt;/li&gt;
&lt;li&gt;Export to Google Drive flow. Authorization is fixed and the app is enabled to use Google Drive data.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Fixed export dialog in the history panel to include default file name.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Fixed z-index of the toolbar to restore variables overlay rendering&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
We hope you will &lt;span style=&quot;color: red;&quot;&gt;❤&lt;/span&gt; this release as much as we do. Try beta version and gives us &lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron/issues&quot;&gt;your feedback&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/8229692410570364709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2019/10/advanced-rest-client-beta-14-release.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/8229692410570364709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/8229692410570364709'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2019/10/advanced-rest-client-beta-14-release.html' title='Advanced REST Client beta 14 release'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-4975309354784351501</id><published>2019-03-20T05:23:00.004+00:00</published><updated>2019-03-20T05:24:38.425+00:00</updated><title type='text'>What&#39;s new: ARC Desktop 13</title><content type='html'>New version of ARC has been released. It was long lasted release containing tons of changes including: stability improvements, UI redesign, architecture redesign, security updates, and new features.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
&lt;b&gt;UI redesign&lt;/b&gt;&lt;/h4&gt;
&lt;br /&gt;
ARC pretty much is still the same application as it was with few UI tweaks.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Status bar&lt;/b&gt; (bottom of the request editor) has been removed. It didn&#39;t contain any relevant information. Save request button has been moved to request drop down menu (to the right to the send button). We all love to use shortcuts (ctrl/cmd+s or ctrl/cmd+shift+cmd) anyway!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Environment selector&lt;/b&gt; has been promoted to the application toolbar. Environment change effect whole application, not only particular request. It shouldn&#39;t be part of the request editor if there&#39;s more than one request in the work space.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Navigation changes&lt;/b&gt; includes:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Default screen is now work space screen; other screens are sub-pages&lt;/li&gt;
&lt;li&gt;Access to web sockets is now in application menu &amp;gt; Request&lt;/li&gt;
&lt;li&gt;Added button to refresh list in the menu&lt;/li&gt;
&lt;li&gt;Navigation lists now comes with 3 size settings: default, comfortable, and compact (sounds like Gmail to you?). Change it in Settings &amp;gt; View&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;
I also decided to deprecate &quot;saved&quot; requests. It is pretty much the same object as history entry but it has a name. This only make sense if you are working on API development in which case &quot;project&quot; would be more natural place for saving a request. As for this and next version this will work as was working since the beginning. After that I am planning to move all saved request to &quot;default&quot; project and remove this menu entry. You are welcome to &lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron/issues/80&quot; target=&quot;_blank&quot;&gt;join the discussion&lt;/a&gt;&amp;nbsp;if your use case justifies keeping this feature. If there&#39;s no good reason to keep it I&#39;ll remove this menu and screen soon.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Security improvements&lt;/h4&gt;
&lt;div&gt;
Trust is very important and therefore I&#39;ve invested some time thinking about architecture of the application to make it reliable and secure.&lt;/div&gt;
&lt;div&gt;
The application will keep storing data in Chromium&#39;s internal storage (Indexed DB). This ensures data integrity and security.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As for changes in security area:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Disabled node integration in the renderer process - any data rendered in the response view won&#39;t affect your OS as it no longer has access to node APIs&lt;/li&gt;
&lt;li&gt;Added content security policy to rederer process of the application - this ensures that only code intended to be part of the application is executed&lt;/li&gt;
&lt;li&gt;Added preload script to be very specific about code that can be executed in the renderer process. This means that functions that has access to (for example) file system have to use an abstract layer (proxy service) to access any sensitive resources.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
Request panel&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The work space has been redesigned for performance. This version comes with complete redesign of creating, storing, and restoring request data. It has noticeable impact on how ARC renders UI by speeding up rendering of it.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
When saving request you can now associate it with more than one project! It is a single object so a change to a request object on one project will change it in any other.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
New (hopefully) cool feature is drag and drop of requests. It is experimental feature that can be enabled in Settings, in Experiments section. It allows you to move requests from menu to the request workspace and back (excluding history, there&#39;s no point of it). You can also move request between menu sections (for example from history to a project).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Tabs in the work space can now be reordered (experimental drag and drop feature has to be enabled).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Headers sets has been removed after very long trial as no one (according to Google Analytics) was using it.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Finally when the app is restored it also restores latest responses.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
There&#39;s much more changes to the application than this. See full changelog at&amp;nbsp;&lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron/releases/tag/v13.0.0&quot;&gt;https://github.com/advanced-rest-client/arc-electron/releases/tag/v13.0.0&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Happy RESTing!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/4975309354784351501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2019/03/whats-new-arc-desktop-13.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/4975309354784351501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/4975309354784351501'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2019/03/whats-new-arc-desktop-13.html' title='What&#39;s new: ARC Desktop 13'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-7464026988489826118</id><published>2019-02-14T20:52:00.001+00:00</published><updated>2019-02-14T20:52:32.271+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="deprecation"/><category scheme="http://www.blogger.com/atom/ns#" term="xml view"/><category scheme="http://www.blogger.com/atom/ns#" term="xml-viewer"/><title type='text'>Deprecation of xml-viewer component</title><content type='html'>Advanced REST Client and API console uses this component to render XML data. We want to retire this component as it does not give any advantage over using Prism library (right now this library is being used to render other types).&lt;br /&gt;
The component also causes problems when integrating it into other systems because it uses web workers. I have received many requests to remove use of web worker. My response is always: no data parsing in main thread process as it may cause the UI to hang. Prism also uses web workers but at least we will have one thing less to be worry about.&lt;br /&gt;
&lt;br /&gt;
The &quot;response-body-view&quot; and &quot;response-view&quot; components that uses this component will be changed around July 2019. After this date new version will be released without additional support for XML responses other than Prism highlighting.&lt;br /&gt;
&lt;br /&gt;
See this intent to deprecate &lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron/issues/139&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt; and comment if you&#39;d like to take a part in the discussion.</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/7464026988489826118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2019/02/deprecation-of-xml-viewer-component.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/7464026988489826118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/7464026988489826118'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2019/02/deprecation-of-xml-viewer-component.html' title='Deprecation of xml-viewer component'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-7958462545433554627</id><published>2018-06-04T19:52:00.001+01:00</published><updated>2018-06-04T19:53:26.532+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API console"/><category scheme="http://www.blogger.com/atom/ns#" term="upgrade"/><category scheme="http://www.blogger.com/atom/ns#" term="web components"/><title type='text'>API components now support v1 web components spec</title><content type='html'>After a few months of preparation I am proud to announce that more than a half of web components that are part of API components ecosystem now support version 1 (stable version) of Web Components specification. In short, this means native support on all browsers without polyfills.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;As you may know already, ARC&#39;s API components were used to build MuleSoft&#39;s (now SalesForce) &lt;a href=&quot;https://restforchrome.blogspot.com/2017/11/arc-components-in-mulesofts-api-console.html&quot; target=&quot;_blank&quot;&gt;API console&lt;/a&gt;. Earlier this year API console was scheduled to upgrade to use new data model generated by AMF - the AML Modeling Framework (AML stands for Anything Modeling Language). Both AMF and AML was developed by MuleSoft last year. It allows to create common data model for all API specs (or anything else for that matter).&lt;br /&gt;
&lt;br /&gt;
This change required major change in the components to support new data model. I saw it as an opportunity to upgrade the components from v0 of the Web Components specification (supported natively by Chrome and Opera only) to final specification. Now all components that are part of the API console are upgraded to the new specification and then some that are used in Advanced REST Client. Release of new API console is planned later this month. Currently it is on GitHub on the &lt;a href=&quot;https://github.com/mulesoft/api-console/tree/5.0.0-preview&quot; target=&quot;_blank&quot;&gt;preview branch&lt;/a&gt;. In time all API and ARC components will be upgraded to version 1 of the specification.&lt;br /&gt;
&lt;br /&gt;
But what does it mean to you?&lt;br /&gt;
&lt;br /&gt;
If you just use ARC or API console - nothing at all. Well, there&#39;s a lot of design improvements in API console so general UX is just better.&lt;br /&gt;
However, if you are a developer and you work with API testing or API documentation you may leverage the power of API components in your projects.&lt;br /&gt;
&lt;br /&gt;
First of all, API components are open source and free to use to everyone. Then it has support of MuleSoft (well, SalesForce since last Friday). We are using API console in our internal products so it has to pass the same tests (integration, unit testing, security) as any other enterprise application offered by MuleSoft. Finally, since latest major update to the components they can be used in any web environment where majority already support Web Components specification natively.&lt;br /&gt;
&lt;br /&gt;
API components offer a number of UI and logic components to build API testing applications. But that&#39;s not all. API components can also render a documentation for an API using AMF data model (generated json/ld model). This means you can use, for example, the documentation component (&lt;a href=&quot;https://github.com/advanced-rest-client/api-documentation&quot; target=&quot;_blank&quot;&gt;api-documentation&lt;/a&gt;) and include it into your website or web app to render documentation for your API.&lt;br /&gt;
Soon I&#39;ll publish official documentation for using the components. For now you can follow instructions from &lt;a href=&quot;https://www.polymer-project.org/2.0/start/&quot; target=&quot;_blank&quot;&gt;Polymer documentation&lt;/a&gt; as it uses the same development process.&lt;br /&gt;
&lt;br /&gt;
I&#39;ll be happy to fear from you what are your use cases and how I can improve API components. But not only the components but also API console and Advanced REST Client.</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/7958462545433554627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2018/06/api-components-now-support-v1-web.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/7958462545433554627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/7958462545433554627'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2018/06/api-components-now-support-v1-web.html' title='API components now support v1 web components spec'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-87456328687218139</id><published>2018-02-13T09:00:00.000+00:00</published><updated>2018-02-13T09:00:31.451+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="authorization"/><category scheme="http://www.blogger.com/atom/ns#" term="automation"/><category scheme="http://www.blogger.com/atom/ns#" term="Request actions"/><category scheme="http://www.blogger.com/atom/ns#" term="variables"/><title type='text'>Automate Your Work With Request Actions</title><content type='html'>We recently held an internal MuleSoft hackathon and, as a result of that event, I am excited to introduce a new feature in the Advanced REST Client (ARC): Request actions.&lt;br /&gt;
&lt;br /&gt;
Request actions allows users to define a logic that is executed when the response is ready. Currently, users can assign value to a variable or store the variable. However, the variable can be extended to other use cases.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIff2RYiBUyRI8Yi0MpBz7EFMQMTrqzOfm8IeLt2JA0Pct_VPMICl8Z5-d5pNBQR8kCiDqjh_yfUk4Vd98tETStVHZS7SAYYzhPuAOqGhyO15WxySmwc-sVT8qYamV-9i1u7xU2nKTGbIZ/s1600/request-actions-editor.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;230&quot; data-original-width=&quot;640&quot; height=&quot;227&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIff2RYiBUyRI8Yi0MpBz7EFMQMTrqzOfm8IeLt2JA0Pct_VPMICl8Z5-d5pNBQR8kCiDqjh_yfUk4Vd98tETStVHZS7SAYYzhPuAOqGhyO15WxySmwc-sVT8qYamV-9i1u7xU2nKTGbIZ/s640/request-actions-editor.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Request actions can read values from any part of the request or response. When defining actions, users can define a path to a specific value in the URL, in headers, or in the body. They can assign or store this value as a variable.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Use case: OAuth 2&lt;/h2&gt;
&lt;br /&gt;
In order to get an access token from the authorization server, we will:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Sign in to the authorization server to get auth cookies&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Create a request to the authorization endpoint&lt;/li&gt;
&lt;li&gt;Create an action to store the token from the request URL to a variable&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
First, the authorization server will display the login page if you are not signed in to your account. To skip this step,&amp;nbsp; we will use the &lt;b&gt;Web Session&lt;/b&gt; feature to &lt;b&gt;Log in to a web service&lt;/b&gt;. You can access this feature from the &lt;b&gt;Request&lt;/b&gt; menu.&lt;br /&gt;
&lt;br /&gt;
The URL can be either the authorization server’s login page or the full OAuth2 authorization URL, which should include all required parameters.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXBsyb6rqS109gSf2CWJMULLRu_dXtpvc56WdwvJV-UT8HwshJVQYRNmUcwsdUHSdmp5JrnBVbphTuHCkrZIjf8NtPnJBxnOolz7S6JvWBcKaUsmlOQFhB0EoCma_RPJk4dX0EAMONaIa4/s1600/Screen+Shot+2018-02-12+at+10.55.12.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1081&quot; data-original-width=&quot;1231&quot; height=&quot;561&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXBsyb6rqS109gSf2CWJMULLRu_dXtpvc56WdwvJV-UT8HwshJVQYRNmUcwsdUHSdmp5JrnBVbphTuHCkrZIjf8NtPnJBxnOolz7S6JvWBcKaUsmlOQFhB0EoCma_RPJk4dX0EAMONaIa4/s640/Screen+Shot+2018-02-12+at+10.55.12.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
This allows you to log in to the service. Then, ARC stores authentication cookies and uses them when requesting the token.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiAJqNClkiQiqlWaewPR8IKvbmGpZDs9L-FeSpUjkWcddcceYs5Hn0Bv-h26Cszh4g1ZtMaxA65ZG7DprBmgvVsK9CWEm2Y2N4NvAABo2qqYypJvSuktFmbCSevsGoq41bCDNPlK7Rvv-i/s1600/Screen+Shot+2018-02-12+at+10.57.18.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;971&quot; data-original-width=&quot;1120&quot; height=&quot;554&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiAJqNClkiQiqlWaewPR8IKvbmGpZDs9L-FeSpUjkWcddcceYs5Hn0Bv-h26Cszh4g1ZtMaxA65ZG7DprBmgvVsK9CWEm2Y2N4NvAABo2qqYypJvSuktFmbCSevsGoq41bCDNPlK7Rvv-i/s640/Screen+Shot+2018-02-12+at+10.57.18.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
After you log in, we are ready to receive the token automatically. Use the full OAuth 2 token request URL as a request URL. It should look similar to the example below:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;domain + auth endpoint + (query parameters): redirect_uri + client_id + response_type&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
This is the easiest scenario possible. Your example may contain more query parameters (like &lt;i&gt;state&lt;/i&gt; or &lt;i&gt;client_secret&lt;/i&gt;).&lt;br /&gt;
&lt;br /&gt;
Here is an example of the authorization URL (please note that these are not a real parameters):&lt;br /&gt;
&lt;br /&gt;
https://auth.domain.com/accounts/oauth2/authorize?redirect_uri=https://auth.advancedrestclient.com/oauth-popup.html&amp;amp;client_id=a12oZqF9I07AZMJec&amp;amp;response_type=token&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Note the redirect_uri parameter.&lt;/b&gt; You have to set&amp;nbsp; the redirect URI in your OAuth 2 settings to &lt;b&gt;https://auth.advancedrestclient.com/oauth-popup.html&lt;/b&gt;. Otherwise, the authorization server will not allow you to redirect the request and receive the token.&lt;br /&gt;
&lt;br /&gt;
If you make the request at this point, you will be redirected to the response page. Open response &lt;b&gt;Details&lt;/b&gt;, and then click on &lt;b&gt;Redirects&lt;/b&gt; to see that the token is in the &quot;hash&quot; part of the request URL.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj1n6oqPNIM2l0WwO1eMyY2wL5-ToKJlx2Mt8V6r6D5jGoIeGD3FPyTeM5tXtkxyfJRYM1CU7qOxzgjopDEN137J1zwGg8KzSZuYQqljDNGMzK2rRlRP174eINfAtNdmelVA7W0gYzV6jY/s1600/response.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1081&quot; data-original-width=&quot;1231&quot; height=&quot;562&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj1n6oqPNIM2l0WwO1eMyY2wL5-ToKJlx2Mt8V6r6D5jGoIeGD3FPyTeM5tXtkxyfJRYM1CU7qOxzgjopDEN137J1zwGg8KzSZuYQqljDNGMzK2rRlRP174eINfAtNdmelVA7W0gYzV6jY/s640/response.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
To extract the access token value, we will create an action that reads data from the response URL and then assigns the value to a variable called &quot;accessToken&quot;.&lt;br /&gt;
&lt;br /&gt;
We will use the response URL because it contains the final URL after last redirection. The URL should contain the access token in the hash part of the URL.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW-zlyue9fcif1S9KisfFPfb5pcxS_wDtglrLtyhtgKFaiDYYBPo1I24ndSpEM6u16vpyKqvB0CSTYE7xEyHoYtfBCfW3rjvmWC1VeYCN8xqNTEnaJidJf7-cWqe-aYVjwagsGDZrkQa0y/s1600/Screen+Shot+2018-02-12+at+12.07.18.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;304&quot; data-original-width=&quot;1126&quot; height=&quot;172&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW-zlyue9fcif1S9KisfFPfb5pcxS_wDtglrLtyhtgKFaiDYYBPo1I24ndSpEM6u16vpyKqvB0CSTYE7xEyHoYtfBCfW3rjvmWC1VeYCN8xqNTEnaJidJf7-cWqe-aYVjwagsGDZrkQa0y/s640/Screen+Shot+2018-02-12+at+12.07.18.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
If you use the &quot;hash&quot; property in the Path to data input field, the application treats it as a query parameters string. It will only work if the hash data is formatted as a query string.&lt;br /&gt;
&lt;br /&gt;
Now, when you call the endpoint it will temporarily assign the token value to the &quot;accessToken&quot; variable. ARC will use this value until the application restarts or until a new value is assigned.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsT7hQxcnq17MI_wWUkXFseFAL0uWbVxkEOwIlBEWNLXpB3n6DSB7nbGYXpa0w9wLu0fWcLAgdHgzEDeT02inLiTXh4ckHAkrDXS-_LVPoejLbyFnq056Geiyji_v_tZfkJdb3zJd6W2IX/s1600/Screen+Shot+2018-02-12+at+12.11.50.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1189&quot; data-original-width=&quot;1261&quot; height=&quot;602&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsT7hQxcnq17MI_wWUkXFseFAL0uWbVxkEOwIlBEWNLXpB3n6DSB7nbGYXpa0w9wLu0fWcLAgdHgzEDeT02inLiTXh4ckHAkrDXS-_LVPoejLbyFnq056Geiyji_v_tZfkJdb3zJd6W2IX/s640/Screen+Shot+2018-02-12+at+12.11.50.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Finally, after the above step, users can leverage the stored value in the request using variables.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8LO7gHGf0zje53ggGdrhTIdTU3dzKlFvqxqRJ6S1g0N78TGs3mCLMklAC8QqnOg1e3GGK4d1L0ZtIrhORviTe_Wk-hmxmWWK5qanVh54O0I8RB5YdXPwrVtusLzJwYjXQwbu2waQnp8lO/s1600/Screen+Shot+2018-02-12+at+12.45.03.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1189&quot; data-original-width=&quot;886&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8LO7gHGf0zje53ggGdrhTIdTU3dzKlFvqxqRJ6S1g0N78TGs3mCLMklAC8QqnOg1e3GGK4d1L0ZtIrhORviTe_Wk-hmxmWWK5qanVh54O0I8RB5YdXPwrVtusLzJwYjXQwbu2waQnp8lO/s640/Screen+Shot+2018-02-12+at+12.45.03.png&quot; width=&quot;476&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
Adding a condition&lt;/h2&gt;
&lt;br /&gt;
You can also instruct ARC to perform the action if certain conditions are met. You can define conditions in the Request action editor by clicking the &quot;&lt;b&gt;Add condition&lt;/b&gt;&quot; button.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimbIkp3ZdAIAgxgc9uxyH9oFHr9mkDAZR_ze42xwwdw-0LHqmAX1ZLzYz8lsuStchCWpEwTTyEpn6ORsPBpwBAz44igmmtOxDAO4-MtbFX9zvx4p2otn61kONiOAJlnTvLjCD_OWw4Ea20/s1600/Screen+Shot+2018-02-12+at+12.37.16.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;214&quot; data-original-width=&quot;713&quot; height=&quot;192&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimbIkp3ZdAIAgxgc9uxyH9oFHr9mkDAZR_ze42xwwdw-0LHqmAX1ZLzYz8lsuStchCWpEwTTyEpn6ORsPBpwBAz44igmmtOxDAO4-MtbFX9zvx4p2otn61kONiOAJlnTvLjCD_OWw4Ea20/s640/Screen+Shot+2018-02-12+at+12.37.16.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
The process is similar to the Request action. You have to specify the path to the data and then specify a logical condition like &lt;i&gt;equal&lt;/i&gt;, &lt;i&gt;greater than&lt;/i&gt;, &lt;i&gt;contains&lt;/i&gt;, or any other operator. Finally, add a condition value which represents the value that the app will use to compare the value from the request or from response objects&amp;nbsp; to the value itself.&lt;br /&gt;
&lt;br /&gt;
The action is executed only if all conditions defined for the request are met.&lt;br /&gt;
&lt;br /&gt;
Both Request actions and conditions give you a powerful tool to automate tasks like requesting an authentication token or creating test resources.&lt;br /&gt;
&lt;br /&gt;
You can read detailed documentation at &lt;a href=&quot;https://github.com/advanced-rest-client/arc-electron/wiki/Request-actions&quot; target=&quot;_blank&quot;&gt;ARC wiki pages&lt;/a&gt;. You will find detailed instructions for constructing the path and examples of how to use the tool.&lt;br /&gt;
&lt;h2&gt;
Download the desktop client&lt;/h2&gt;
Ready to get started? Go ahead and &lt;a href=&quot;https://install.advancedrestclient.com/#/install&quot; target=&quot;_blank&quot;&gt;install&lt;/a&gt; the Advanced REST Client! Please note that only the desktop client can execute Request actions.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/87456328687218139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2018/02/automate-your-work-with-request-actions.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/87456328687218139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/87456328687218139'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2018/02/automate-your-work-with-request-actions.html' title='Automate Your Work With Request Actions'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIff2RYiBUyRI8Yi0MpBz7EFMQMTrqzOfm8IeLt2JA0Pct_VPMICl8Z5-d5pNBQR8kCiDqjh_yfUk4Vd98tETStVHZS7SAYYzhPuAOqGhyO15WxySmwc-sVT8qYamV-9i1u7xU2nKTGbIZ/s72-c/request-actions-editor.png" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-3938977761300971297</id><published>2018-02-12T19:38:00.000+00:00</published><updated>2018-02-12T19:38:04.765+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Anypoint"/><category scheme="http://www.blogger.com/atom/ns#" term="Exchange"/><category scheme="http://www.blogger.com/atom/ns#" term="new version"/><category scheme="http://www.blogger.com/atom/ns#" term="RAML"/><title type='text'>RAML landed into Advanced REST Client</title><content type='html'>I am excited to announce the new Advanced Rest Client (ARC) support for &lt;a href=&quot;https://raml.org/&quot;&gt;RAML&lt;/a&gt; specifications. RESTful API Modeling Language (RAML) makes it easy to manage the whole API lifecycle  - from designing to sharing APIs. With version 12 of the ARC desktop app, you can now open RAML files and display their API documentation using MuleSoft&#39;s API console.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1x5thdFa3_N_gY0mH5CwqRShvNM2l8t-0f6jmKQ0tAbXyANAyrlRoRYW84-ucLF_9FCyuzjZ_XTnyG0IxT2CizEfTBrjPQoB8Iiq9pZfg2xJIcXNqW4wRVcZK_WGlFaHQK17Ark_CRWca/s1600/Screen+Shot+2018-02-12+at+10.19.56.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;909&quot; data-original-width=&quot;1143&quot; height=&quot;508&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1x5thdFa3_N_gY0mH5CwqRShvNM2l8t-0f6jmKQ0tAbXyANAyrlRoRYW84-ucLF_9FCyuzjZ_XTnyG0IxT2CizEfTBrjPQoB8Iiq9pZfg2xJIcXNqW4wRVcZK_WGlFaHQK17Ark_CRWca/s640/Screen+Shot+2018-02-12+at+10.19.56.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;
The console allows you to read documentation for all endpoints and methods defined in the API spec file. It also allows you to make a test request to any selected endpoint. The request data is pre-populated with default values as well as examples from the RAML file - making it easy to run test requests.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx2Zp6YDZpMyvFLHohVNDb3j4DjBIg9O9flkUUeDsiVlWxs2cBguyZZkxCB4lDm6B0lOqWBiuoczj6am2ejIWiycue9JJdoxUkVSmYMk3sx27QwLo94NPaTFo3R_MUzMgUiGgfgAwta6fv/s1600/Screen+Shot+2018-02-12+at+10.24.38.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1019&quot; data-original-width=&quot;1409&quot; height=&quot;462&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx2Zp6YDZpMyvFLHohVNDb3j4DjBIg9O9flkUUeDsiVlWxs2cBguyZZkxCB4lDm6B0lOqWBiuoczj6am2ejIWiycue9JJdoxUkVSmYMk3sx27QwLo94NPaTFo3R_MUzMgUiGgfgAwta6fv/s640/Screen+Shot+2018-02-12+at+10.24.38.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
The console also understands the security limitations of the API and makes it easy for users by requiring them to only fill the required fields in order to make a successful request.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIh4BQd9UyFgizYr7fV28IocuEe_JDyQeu4KE5H3Y201AGlhWd5GjZy9ABe3k1Ia_ADbmRCTIVBw8-edw1jA6eindEPZ-uo-jJrktQqIQCdk8afZ3i_6FodlN8KyRm6X7kclGdnQo7ocio/s1600/Screen+Shot+2018-02-12+at+10.26.43.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1046&quot; data-original-width=&quot;1411&quot; height=&quot;474&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIh4BQd9UyFgizYr7fV28IocuEe_JDyQeu4KE5H3Y201AGlhWd5GjZy9ABe3k1Ia_ADbmRCTIVBw8-edw1jA6eindEPZ-uo-jJrktQqIQCdk8afZ3i_6FodlN8KyRm6X7kclGdnQo7ocio/s640/Screen+Shot+2018-02-12+at+10.26.43.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Anypoint Exchange&amp;nbsp;&lt;/h2&gt;
ARC allows users to query Anypoint Exchange for public API spec assets. Anypoint exchange is a service that offers API assets storage, sharing, and management.  Users can log in to their existing account to get the list of their private assets.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4jIXwrlcVNdG4rL6BFEBF0WchxS6kK-uCIt1GYdSRCqi4xA3PbVMuDV9yUggDsxNT-iOBnOZpmA_p7UhcQfm6jlbYenVDmQtSZuPRQZDth7DCQsPaJPa01oKV2AG8FcFBuUYyX45nvjls/s1600/Screen+Shot+2018-02-12+at+10.30.32.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1046&quot; data-original-width=&quot;1411&quot; height=&quot;474&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4jIXwrlcVNdG4rL6BFEBF0WchxS6kK-uCIt1GYdSRCqi4xA3PbVMuDV9yUggDsxNT-iOBnOZpmA_p7UhcQfm6jlbYenVDmQtSZuPRQZDth7DCQsPaJPa01oKV2AG8FcFBuUYyX45nvjls/s640/Screen+Shot+2018-02-12+at+10.30.32.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Then, in just one click users can download and open the RAML file in the app.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq9NTZwSWx8YIBcwFoJYqZLnVoTYmqqlK-6KIF3glcUOtRoWXyg8p0rJTOwGu50FcYwSc4SIrZECjZvU2s0LkC6eOZ57J5pGunn6R32gGamJrOKmZsWZbBxbGVqtrbyUc7sMIOvfgclmTf/s1600/Screen+Shot+2018-02-12+at+10.33.03.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1046&quot; data-original-width=&quot;1411&quot; height=&quot;474&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq9NTZwSWx8YIBcwFoJYqZLnVoTYmqqlK-6KIF3glcUOtRoWXyg8p0rJTOwGu50FcYwSc4SIrZECjZvU2s0LkC6eOZ57J5pGunn6R32gGamJrOKmZsWZbBxbGVqtrbyUc7sMIOvfgclmTf/s640/Screen+Shot+2018-02-12+at+10.33.03.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Only in desktop client&lt;/h2&gt;
Ready to get started? Go ahead and &lt;a href=&quot;https://install.advancedrestclient.com/&quot;&gt;install&lt;/a&gt; the Advanced REST Client!  Please note that only the desktop client can read RAML files and connect to Anypoint Exchange.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/3938977761300971297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2018/02/raml-landed-into-advanced-rest-client.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/3938977761300971297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/3938977761300971297'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2018/02/raml-landed-into-advanced-rest-client.html' title='RAML landed into Advanced REST Client'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1x5thdFa3_N_gY0mH5CwqRShvNM2l8t-0f6jmKQ0tAbXyANAyrlRoRYW84-ucLF_9FCyuzjZ_XTnyG0IxT2CizEfTBrjPQoB8Iiq9pZfg2xJIcXNqW4wRVcZK_WGlFaHQK17Ark_CRWca/s72-c/Screen+Shot+2018-02-12+at+10.19.56.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-6497759942324404501</id><published>2017-12-05T02:47:00.002+00:00</published><updated>2017-12-06T19:07:00.027+00:00</updated><title type='text'>Using Polymer web components in React application</title><content type='html'>Today I&#39;ve released a first version of the node module to wraps Polymer powered &lt;b&gt;web components into React component&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
The&amp;nbsp;&lt;a href=&quot;https://www.npmjs.com/package/wc-reactor&quot; target=&quot;_blank&quot;&gt;wc-reactor&lt;/a&gt;&amp;nbsp;module takes a web component declaration (source code) and uses Polymer analyzer to get information about the component. Finally it creates a bridge between React and web platform so you can use any Polymer web component in a React application as if it is a React component.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
By default the module generates the interface for every web component defined in the source file and its dependencies. The input file can be Polymer build file (bundle file that concatenates many web components). In that case all components are analyzed and wrapped into React components.&lt;br /&gt;
You can tell the module to limit number of generated wrappers by specifying a list of web components names that will be used to generate the wrappers.&lt;br /&gt;
&lt;br /&gt;
Example usage&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-javascript&quot;&gt;const reactor = require(&#39;wc-reactor&#39;);

reactor({
  webComponent: &#39;bower_components/paper-input/paper-input.html&#39;,
  dest: &#39;./out&#39;,
  bundle: false,
  reactComponents: [&#39;paper-input&#39;]
});
.then(() =&amp;gt; console.log(&#39;Build complete&#39;);
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
This use of the module generates PaperInput/PaperInput.js React component that is the interface for React application. The interface allows you to set properties on the web component, handle custom events by setting event handler functions as the component property and call public API functions.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-javascript&quot;&gt;/**
 * Handles value change event of the paper-input web component
 */
_onValueChanged(newValue, e) {
  e.preventDefault();
  console.log(newValue);
}
 
render() {
  return (
    &amp;lt;paperinput label=&quot;User name&quot; name=&quot;username&quot; onValueChanged=&quot;{this._onValueChanged}/&quot; required=&quot;{this.props.required}&quot;&amp;gt;
  );
}
&lt;/pre&gt;
&lt;br /&gt;
Note that you still have to import the web component into your application. This module does not recreates the web component for React but creates the interface for React application to communicate with web component.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Bundling ARC web components and generating React components&lt;/h3&gt;
&lt;br /&gt;
Another module released today is the&amp;nbsp;&lt;a href=&quot;https://www.npmjs.com/package/arc-components-builder&quot; target=&quot;_blank&quot;&gt;arc-components-builder&lt;/a&gt;&amp;nbsp;that creates a bundle file of web components (single import file). The module can be used to create a build of ARC or any Polymer powered web components. It handles dependencies installation, source analysis and bundling using Polymer tools under the hood.&lt;br /&gt;
This module also uses &lt;b&gt;wc-reactor&lt;/b&gt; to generate a React interface for the build file.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-javascript&quot;&gt;const builder = require(&#39;arc-components-builder&#39;);
 
builder({
  // Any web component, it can contain version declaration
  webComponents: [
    &#39;PaperElements/paper-input#1.0.0&#39;,
    &#39;vaadin/vaadin-button&#39;
  ],
  // Any ARC component, it also can contain version declaration
  // but doesn&#39;t require Github path
  arcComponents: [
    &#39;content-type-selector&#39;,
    &#39;paper-combobox&#39;,
    &#39;headers-editor&#39;,
    &#39;http-method-selector&#39;,
    &#39;url-input-editor&#39;
  ],
  // Creates React wrapper
  react: true,
  // Create React interface for the following components only.
  reactComponents: [&#39;url-input-editor&#39;]
})
.then(() =&amp;gt; console.log(&#39;Build complete&#39;);
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
This command creates a bundle import file of following components:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;paper-input&lt;/li&gt;
&lt;li&gt;vaadin-button&lt;/li&gt;
&lt;li&gt;content-type-selector&lt;/li&gt;
&lt;li&gt;paper-combobox&lt;/li&gt;
&lt;li&gt;headers-editor&lt;/li&gt;
&lt;li&gt;http-method-selector&lt;/li&gt;
&lt;li&gt;url-input editor&lt;/li&gt;
&lt;li&gt;... any any dependency of this elements&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Finally it creates a React wrapper for url-input-editor (as React&#39;s&amp;nbsp;&lt;b&gt;UrlInputEditor&lt;/b&gt; component).&lt;/div&gt;
&lt;div&gt;
The output directory contains &lt;i&gt;import.html&lt;/i&gt; file with the bundle of web components that should be included into the application. It can be done manually by referencing the file.&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-javascript&quot;&gt;&amp;lt;link rel=&quot;import&quot; href=&quot;import.html&quot;&amp;gt;
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;
For react applications the &lt;b&gt;wc-reactor&lt;/b&gt; module generates a helper file that contains functions to add a polyfill script and to import link declaration to your document:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-javascript&quot;&gt;import { polyfillScript, componentsImport } from &#39;./WebComponentsImports&#39;;
var doc = `&amp;lt;html&amp;gt;
  &amp;lt;head&amp;gt;
    ...
    ${polyfillScript(&#39;/base-path&#39;)}
    ${componentsImport(&#39;/base-path&#39;, &#39;import.html&#39;)}
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;`
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;
I&#39;ll be happy to hear a feedback from you. If you have an idea or a use case that is not covered by the module, please leave a comment or create a feature request on Github.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/6497759942324404501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2017/12/using-polymer-web-components-in-react.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/6497759942324404501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/6497759942324404501'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2017/12/using-polymer-web-components-in-react.html' title='Using Polymer web components in React application'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-4075183975280248620</id><published>2017-11-10T20:38:00.001+00:00</published><updated>2017-11-10T20:39:39.085+00:00</updated><title type='text'>Moving Data From Advanced REST Client Chrome Application To The Native Application</title><content type='html'>If you are ready to install new Advanced REST Client native application probably you would like to move your data along with you.&lt;br /&gt;
Unfortunately there&#39;s no automatic way to move the data from Chrome application to new native application. This has o be done manually by exporting the date to file (or to Google Drive) and then import it in the new app.&lt;br /&gt;
&lt;br /&gt;
Let&#39;s start with installing Advanced REST Client native application if you haven&#39;t done that already.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://install.advancedrestclient.com/&quot; target=&quot;_blank&quot;&gt;&lt;paper-button style=&quot;color: inherit; text-decoration: inherit;&quot;&gt;Install&lt;/paper-button&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
After new application is installed go to ARC Chrome application and export the data.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
In the top right application menu select &lt;b&gt;Import and export data&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVfWyh0oNHbznz9UTiPlPuFJ71RAnxVnYoxCwYY88G1YpsVOy-jUOHhtgSegzOKD8etllkdJQOmQIAfzNF6pKOscj8H8B1HMZfSd_FT_aHqsSfwimggdA-NOUoo2DZAOsb-3LWWI5NlCcn/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;934&quot; data-original-width=&quot;1312&quot; height=&quot;454&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVfWyh0oNHbznz9UTiPlPuFJ71RAnxVnYoxCwYY88G1YpsVOy-jUOHhtgSegzOKD8etllkdJQOmQIAfzNF6pKOscj8H8B1HMZfSd_FT_aHqsSfwimggdA-NOUoo2DZAOsb-3LWWI5NlCcn/s640/1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
The import / export panel is displayed. By default all data are selected. You can choose whether some part of the data should be excluded from the export. Click on &lt;b&gt;Prepare data&lt;/b&gt; button to compute export object from the datastore entries. Depending on the amount of data and speed of your machine it may take a minute.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx0kVH10uo1wy2R8BD9eazV1eonU-iZJiw1KoHQ3ehhmajmWcIYueukxyD5hwa_sPNV3TVtJHzdRxRy_sNb88GPdYxZwlaqy9tEoKlQytMUBYCXi1pDXZu8mZ4uBmbT8ieSuC38RVPHsKo/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;934&quot; data-original-width=&quot;1312&quot; height=&quot;452&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx0kVH10uo1wy2R8BD9eazV1eonU-iZJiw1KoHQ3ehhmajmWcIYueukxyD5hwa_sPNV3TVtJHzdRxRy_sNb88GPdYxZwlaqy9tEoKlQytMUBYCXi1pDXZu8mZ4uBmbT8ieSuC38RVPHsKo/s640/2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
When the export object is ready choose export destination. The easiest one is to export to file. Save the file on your local disk.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOIwG3mtFxzWtLhcMeU3vQ-fIBDgNMyaJxUSxRlRatxGqI4sZc-Ak2KdqZOejiTiuALUFzGQdNMKY1Eev0IvtN1xFMzm2Kka6AInG0Hhsw_0y73qmEb1M4ACYjc5tOXJ68vKkz-CDyIUdY/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;907&quot; data-original-width=&quot;1284&quot; height=&quot;450&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOIwG3mtFxzWtLhcMeU3vQ-fIBDgNMyaJxUSxRlRatxGqI4sZc-Ak2KdqZOejiTiuALUFzGQdNMKY1Eev0IvtN1xFMzm2Kka6AInG0Hhsw_0y73qmEb1M4ACYjc5tOXJ68vKkz-CDyIUdY/s640/3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Now open the new Advanced REST client native application. In the application menu select &lt;b&gt;File&lt;/b&gt; &amp;gt; &lt;b&gt;Import data&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh76XtGxw1lS_0EYyz-yGLujlOMqnHT8oC5Xnf6A1B4Ep6Vn3XAHyPkob19Y5t1BHAkMpqS4uo79yDsOhbpEDmka5BcqXEP8pJ1fQvUht6y-Sm1PRcQxkotMee9_LOn9hnpK1QQMvJlUnsa/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;641&quot; data-original-width=&quot;717&quot; height=&quot;572&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh76XtGxw1lS_0EYyz-yGLujlOMqnHT8oC5Xnf6A1B4Ep6Vn3XAHyPkob19Y5t1BHAkMpqS4uo79yDsOhbpEDmka5BcqXEP8pJ1fQvUht6y-Sm1PRcQxkotMee9_LOn9hnpK1QQMvJlUnsa/s640/4.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Similar to previous application the import / export panel is now displayed. Select &lt;b&gt;Open from file&lt;/b&gt; to read exported file.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjOoFektruMyNTVwym2Q1qnL0yZVYybs047S8mq415PmI7hLlqRR9QPamspKneZgcxndBLfqD8qi1Gh71FOkYWQztpB2rCYHq4kWBljwsp0a8P8-fNT_6dfzC3MQvhyphenhyphenLBh4vJpGPFFXiIj/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1033&quot; data-original-width=&quot;1408&quot; height=&quot;468&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjOoFektruMyNTVwym2Q1qnL0yZVYybs047S8mq415PmI7hLlqRR9QPamspKneZgcxndBLfqD8qi1Gh71FOkYWQztpB2rCYHq4kWBljwsp0a8P8-fNT_6dfzC3MQvhyphenhyphenLBh4vJpGPFFXiIj/s640/5.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Select the file&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihiwilz5CnvrkaVnqI4QWuQqvv1EBkBv-ik040wU6mmcjd-365i_O_Mo4BAemTPt1cTKvDrrJD1Ekg8iIhgc6h0JTm84V9ZF1I9r0qIo94vl1O4ERcIi1HfLfdHKa7lByQ35caBznCdhAz/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1033&quot; data-original-width=&quot;1408&quot; height=&quot;468&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihiwilz5CnvrkaVnqI4QWuQqvv1EBkBv-ik040wU6mmcjd-365i_O_Mo4BAemTPt1cTKvDrrJD1Ekg8iIhgc6h0JTm84V9ZF1I9r0qIo94vl1O4ERcIi1HfLfdHKa7lByQ35caBznCdhAz/s640/6.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
And import previously exported data.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYW-fvIDXsYcVxSz-ZYeoXotoZw_cjhL-QHInZFZq0eltnQcRziBprGezC7R8PfSPlZPUfqBHCFGoLQ3PwAfPrO2Ogb77FDmyjGaQkpkPXnQ7YYrviQpay0In7v-jTKRTUHqe-njDDkhU8/s1600/7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1033&quot; data-original-width=&quot;1408&quot; height=&quot;468&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYW-fvIDXsYcVxSz-ZYeoXotoZw_cjhL-QHInZFZq0eltnQcRziBprGezC7R8PfSPlZPUfqBHCFGoLQ3PwAfPrO2Ogb77FDmyjGaQkpkPXnQ7YYrviQpay0In7v-jTKRTUHqe-njDDkhU8/s640/7.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
This is the only way to avoid data loss when Chrome team will disable Chrome applications.&lt;br /&gt;
&lt;br /&gt;
You can still use the old application but to transfer newly created data to the other application you will have to repeat this procedure.</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/4075183975280248620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2017/11/moving-data-from-advanced-rest-client.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/4075183975280248620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/4075183975280248620'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2017/11/moving-data-from-advanced-rest-client.html' title='Moving Data From Advanced REST Client Chrome Application To The Native Application'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVfWyh0oNHbznz9UTiPlPuFJ71RAnxVnYoxCwYY88G1YpsVOy-jUOHhtgSegzOKD8etllkdJQOmQIAfzNF6pKOscj8H8B1HMZfSd_FT_aHqsSfwimggdA-NOUoo2DZAOsb-3LWWI5NlCcn/s72-c/1.png" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-2724932267349076456</id><published>2017-11-07T19:56:00.000+00:00</published><updated>2017-11-07T19:56:09.736+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API"/><category scheme="http://www.blogger.com/atom/ns#" term="API console"/><category scheme="http://www.blogger.com/atom/ns#" term="ARC"/><category scheme="http://www.blogger.com/atom/ns#" term="web components"/><title type='text'>ARC components in Mulesoft&#39;s API Console</title><content type='html'>I am proud to announce that web components that are used to build ARC are now also used to build Mulesoft&#39;s &lt;a href=&quot;https://github.com/mulesoft/api-console&quot; target=&quot;_blank&quot;&gt;API Console&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
MuleSoft&#39;s API Console is a full-fledged API documentation tool that generates mobile-friendly web documentation based on RAML (Restful API Modeling Language) documents. It is an open source, community driven application that can be easily adjusted to any environment.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Background&lt;/h4&gt;
&lt;br /&gt;
While working on atomizing Advanced REST Client to a set of web components internally in the company we&#39;ve realized that both products can share the same code base. So over a year ago I&#39;ve started working on new version of the API console. The task was to create a best in class usability for API documentation tool. That includes mobile friendliness, ergonomic design, ease of reading documentation and learning the API structure. From a developer standpoint API console should be easy to use as a standalone application ready to run on a web server but also as a embeddable HTML element that can be added to existing products (like existing web pages with API documentation).&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
The result&lt;/h4&gt;
&lt;br /&gt;
API console is a web application based on web components standard. Therefore it can be used in any web environment and can work with any web framework (though some frameworks - like React - may require additional customizations). We&#39;ve created a set of tools to make it even easier to build the API console from a RAML file. Our &lt;a href=&quot;https://www.npmjs.com/package/api-console-cli&quot; target=&quot;_blank&quot;&gt;CLI tool&lt;/a&gt; can be used to generate production ready standalone website with API documentation or to generate development preview of the documentation while working on RAML. There also is the&amp;nbsp;&lt;a href=&quot;https://www.npmjs.com/package/api-console-builder&quot; target=&quot;_blank&quot;&gt;api-console-builder&lt;/a&gt; npm module that can be used in node environment to build the same API console.&lt;br /&gt;
&lt;br /&gt;
Try new API console and design your APIs with RAML. I&#39;ll be happy to hear a feedback from you.</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/2724932267349076456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2017/11/arc-components-in-mulesofts-api-console.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/2724932267349076456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/2724932267349076456'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2017/11/arc-components-in-mulesofts-api-console.html' title='ARC components in Mulesoft&#39;s API Console'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-5287913822405751754</id><published>2017-11-05T19:33:00.001+00:00</published><updated>2017-11-05T19:33:25.445+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ARC"/><category scheme="http://www.blogger.com/atom/ns#" term="changelog"/><category scheme="http://www.blogger.com/atom/ns#" term="native app"/><title type='text'>New Advanced REST Client native application - install today</title><content type='html'>New version of Advanced REST client is ready! It is installable native application available in all major platforms:&lt;div&gt;
- Windows (32 and 64 bit)&lt;/div&gt;
&lt;div&gt;
- MacOS&lt;/div&gt;
&lt;div&gt;
- Linux (deb and rpm)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
You can install it from &lt;a href=&quot;https://install.advancedrestclient.com/&quot;&gt;install.advancedrestclient.com&lt;/a&gt;. Do it today and &lt;b&gt;move your data&lt;/b&gt; from legacy Chrome application to new native application.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Changelog v11&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
- Tabs in the request panel are finally there. No need to open many windows of the application (though you still can)&lt;/div&gt;
&lt;div&gt;
- Automatic updates that can be turned off if necessary&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
- Cookie manager - now you can create / edit / delete cookies in the application. Cookies are applied to matching request domain and path&lt;/div&gt;
&lt;div&gt;
- Web session setup - open URL in app&#39;s internal browser to create a web session. Cookies from this session are automatically applied to the request&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/5287913822405751754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2017/11/new-advanced-rest-client-native.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/5287913822405751754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/5287913822405751754'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2017/11/new-advanced-rest-client-native.html' title='New Advanced REST Client native application - install today'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-2041162770793980083</id><published>2017-10-11T21:52:00.001+01:00</published><updated>2017-10-11T21:52:26.846+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="electron"/><category scheme="http://www.blogger.com/atom/ns#" term="native app"/><title type='text'>Termination of Chrome Apps - ARC native application</title><content type='html'>Some time ago Google decided to terminate support for Chrome apps in Chrome. Therefore Advanced REST Client will be removed from Chrome.&lt;br /&gt;
&lt;br /&gt;
For last few months I&#39;ve been preparing the app to this by externalizing parts of application code to a number of web components. Web components based on the native platform helps me build ARC as a different applications running in different web environments (web, node, Chrome / Firefox extensions etc). Last week I&#39;ve moved rest of the application logic to external component. This enabled me to work on alternatives for ARC as a Chrome App.&lt;br /&gt;
&lt;br /&gt;
Now I&#39;m proud to announce that currently I&#39;m finishing testing Advanced REST Client native application. The app is available on all major platforms:&lt;br /&gt;
&lt;br /&gt;
- Windows (32 and 64-bit)&lt;br /&gt;
- MacOS&lt;br /&gt;
- Linux - as a rpm and deb package (both 32 and 64-bit)&lt;br /&gt;
&lt;br /&gt;
Because the application is still being tested I am not going to publish installation URL to you at this time. When I&#39;m sure that the application is bugs free I&#39;ll update the Chrome Application with information about migration path and post another article on this blog.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Action to be taken now&lt;/h3&gt;
Because Chrome Apps will be forcibly removed from Chrome your data will disappear as well. To not lost your data please use the export option today to export the data to a file or to Google Drive.&lt;br /&gt;
&lt;br /&gt;
Note: Native application has different Google&#39;s Client ID and therefore it is not possible to open Google Drive file from the application ui. You&#39;ll have to authorize the application within the app UI and then go to Google Drive web app and choose &quot;open with&quot; option for the file.&lt;br /&gt;
&lt;br /&gt;
Also you can export the file to Google Drive and later simply download it and import as file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
The timeline&amp;nbsp;&lt;/h3&gt;
In a month (or so) from now Chrome applications will be removed from Chrome. Replacement application is ready but it&#39;s not fully tested. Also it still need a code verification certificate (I am working on this issue) before stable release.&lt;br /&gt;
&lt;br /&gt;
In 2 weeks time new application should be released in stable channel. At the same time Chrome application is released with information about termination of Chrome apps and path to migrate.&lt;br /&gt;
&lt;br /&gt;
In a month Chrome apps are terminated and hopefully all users have been migrated to new application.&lt;br /&gt;
&lt;br /&gt;
See you in the new app!</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/2041162770793980083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2017/10/termination-of-chrome-apps-arc-native.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/2041162770793980083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/2041162770793980083'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2017/10/termination-of-chrome-apps-arc-native.html' title='Termination of Chrome Apps - ARC native application'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-6010042629799496409</id><published>2017-02-22T19:07:00.001+00:00</published><updated>2017-02-22T19:07:58.347+00:00</updated><title type='text'>New design proposal</title><content type='html'>Recently I&#39;ve started working on a new design for ARC. It was caused by necessary changes in the body panel (especially multipart form).&lt;br /&gt;
&lt;br /&gt;
I&#39;ve come up with the following:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQiWiBgGxxfVseclw3Argp3MjFnZBb06B3czfDM_Su4EJQxSGzYd-eWVA4McKWrW_T_tSX76zLM3liyD1OLJURqtfzjiWTue0jfhGWdO3dJrUCnmkrtfITUXV0UtsYxgCLuHNVfU4A4mFe/s1600/Web+1920+%25E2%2580%2593+1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQiWiBgGxxfVseclw3Argp3MjFnZBb06B3czfDM_Su4EJQxSGzYd-eWVA4McKWrW_T_tSX76zLM3liyD1OLJURqtfzjiWTue0jfhGWdO3dJrUCnmkrtfITUXV0UtsYxgCLuHNVfU4A4mFe/s640/Web+1920+%25E2%2580%2593+1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
More of the mockup:&amp;nbsp;&lt;a href=&quot;https://xd.adobe.com/view/9fefbc1d-18fa-43e3-afb5-7b8af5efe586/&quot;&gt;https://xd.adobe.com/view/9fefbc1d-18fa-43e3-afb5-7b8af5efe586/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I am really interested your opinion. So please, if you have any thoughts about it, leave a comment below or commend directly on mockup page.&lt;br /&gt;
&lt;br /&gt;
Thanks!&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/6010042629799496409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2017/02/new-design-proposal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/6010042629799496409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/6010042629799496409'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2017/02/new-design-proposal.html' title='New design proposal'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQiWiBgGxxfVseclw3Argp3MjFnZBb06B3czfDM_Su4EJQxSGzYd-eWVA4McKWrW_T_tSX76zLM3liyD1OLJURqtfzjiWTue0jfhGWdO3dJrUCnmkrtfITUXV0UtsYxgCLuHNVfU4A4mFe/s72-c/Web+1920+%25E2%2580%2593+1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-3315653545820483791</id><published>2016-11-23T13:43:00.001+00:00</published><updated>2016-11-23T13:43:28.532+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ARC"/><category scheme="http://www.blogger.com/atom/ns#" term="conference"/><category scheme="http://www.blogger.com/atom/ns#" term="Polymer"/><category scheme="http://www.blogger.com/atom/ns#" term="web components"/><title type='text'>Web Components @ scale - my topic at the DevFest 2016 conference in Warsaw, Poland</title><content type='html'>Hi developers.&lt;br /&gt;
&lt;br /&gt;
I&#39;m proud to be a speaker at the DevFest 2016 conference in Warsaw, Poland.&lt;br /&gt;
The conference is this Saturday in Praha Cinema. My topic will be about building web applications that scales using web components. I’m going to talk about development workflow with web components, using platform over frameworks and how Polymer 2.0 is shifting from being framework to being support library for web components removing all framework alike functions.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbxSWS-04wSv04IFst-wdJNp1SMTek0w67TPxX6iAYG4iezQ_C2XnS9ClEdoYHMo-4P0FLS-uB3u4orItsYaBoIoyNeCyV78UUPh4d5Sq3UzVyXLICxpmfEGwt-F3X3uYK78HaESmpmVWy/s1600/14962801_1298143696902668_291676540515585096_n.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;236&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbxSWS-04wSv04IFst-wdJNp1SMTek0w67TPxX6iAYG4iezQ_C2XnS9ClEdoYHMo-4P0FLS-uB3u4orItsYaBoIoyNeCyV78UUPh4d5Sq3UzVyXLICxpmfEGwt-F3X3uYK78HaESmpmVWy/s640/14962801_1298143696902668_291676540515585096_n.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The Advanced REST Client application is now a Polymer - or rather web component - application. For last year I managed to rebuild the app from GWT framework to web components. I have also an experience in other apps build with Polymer. But the case of ARC showed me that wrong architectural approach - even with web components - may end up with building another monolith that just use another framework. But web components are made to be a real building blocks of modular application.&lt;br /&gt;
&lt;br /&gt;
If you are in Poland at the time I strongly encourage you to be at the conference. Many great speakers are managed to be there and many great talks are being prepared. If you will, just say hi to me :)&lt;br /&gt;
&lt;br /&gt;
See you at DevFest!</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/3315653545820483791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2016/11/web-components-scale-my-topic-at.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/3315653545820483791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/3315653545820483791'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2016/11/web-components-scale-my-topic-at.html' title='Web Components @ scale - my topic at the DevFest 2016 conference in Warsaw, Poland'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbxSWS-04wSv04IFst-wdJNp1SMTek0w67TPxX6iAYG4iezQ_C2XnS9ClEdoYHMo-4P0FLS-uB3u4orItsYaBoIoyNeCyV78UUPh4d5Sq3UzVyXLICxpmfEGwt-F3X3uYK78HaESmpmVWy/s72-c/14962801_1298143696902668_291676540515585096_n.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-3475646415985517919</id><published>2016-11-02T19:15:00.003+00:00</published><updated>2016-11-02T19:18:43.839+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="coding"/><category scheme="http://www.blogger.com/atom/ns#" term="improvements"/><category scheme="http://www.blogger.com/atom/ns#" term="performance"/><title type='text'>PouchDB read optimisation - reducing time of data queries</title><content type='html'>Recent ARC version has so called API assistant. It&#39;s a helper program which queries history data for relevant information when the URL or HTTP method changed. It reads history of requests made to particular method (meaning endpoint and method) and analyse the statistics data about this method like connection time or response size.&lt;br /&gt;
&lt;br /&gt;
Recently I was asked how it will behave when the app stores a lot of data. I mean hundreds of thousands of records. Then it occurred to me that I haven&#39;t performed test for this amount of data. It started a series of changes in the code of the assistant which finally allowed me to &lt;b&gt;shorten database query time by 98.52%&lt;/b&gt;!&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;But lets start from the beginning.&lt;br /&gt;
The app uses PouchDB wrapper for the IndexedDB database. Every time a user make a request in the app the request, response and some timings data are stored locally in the data store. So far this data was never really used. But now the assistant make a lot of use of this data.&lt;br /&gt;
&lt;br /&gt;
This is how computed assistant report looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwziOGBX06iLqe65Srp7dFrY5mQAyKxqmKwR_KDSconq_0wX8n-GnLlRzZAwIlsCF5ThQIBMMgFehBDozxo2JeGqsCJhHcdr0LEclEMceG7bM2IGNWH7cZvpG16_EbOq_KCXsseUgaOgOX/s1600/Screen+Shot+2016-11-02+at+17.15.19.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwziOGBX06iLqe65Srp7dFrY5mQAyKxqmKwR_KDSconq_0wX8n-GnLlRzZAwIlsCF5ThQIBMMgFehBDozxo2JeGqsCJhHcdr0LEclEMceG7bM2IGNWH7cZvpG16_EbOq_KCXsseUgaOgOX/s640/Screen+Shot+2016-11-02+at+17.15.19.png&quot; width=&quot;280&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;The API assistant&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
The data are computed across all the history data. It can be few records but it also can be a lot of data gathered for months or years.&lt;br /&gt;
&lt;br /&gt;
Initial tests showed that the query time do not influence app performance and it&#39;s still fast. But then I&#39;ve generated 300 thousands additional records and the app started to work little bit slower. I measured that average data query and processing time for data was ~35 seconds. That&#39;s a lot of time and it was unacceptable for the app.&lt;br /&gt;
&lt;h3&gt;
&lt;br /&gt;
The cause&lt;/h3&gt;
As mentioned earlier the app is using PouchDB database wrapper for IndexDB. It&#39;s a nice library but it turns out that it may also be slow even when working directly on keys. When getting a record from the datastore using PouchDB it looks for a key, then in the metadata values it checks if the record is deleted or not (PouchDB doesn&#39;t really delete data because it&#39;s need it for replication, it only marks it as deleted). Then it need to find latest review of the record (the &lt;i&gt;_rev&lt;/i&gt; parameter) and finally read the record associated with the key. &lt;i&gt;Rev&lt;/i&gt; search part is required because the PouchDB keeps history of changes which is required for replication with the remote database.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
The data structure&lt;/h3&gt;
First step for optimisation was to use proper data structure. Fortunately I make a use of keys in IndexedDB. Many developers (including me in the past) don&#39;t really use keys to find the data. It appears, however, that keys are excellent tool to query IndexedDB really fast. And to sort data without calling sort function on the result list.&lt;br /&gt;
&lt;br /&gt;
The app is using the following structure of the history data key:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-javascript&quot;&gt;URL encoded request URL&amp;nbsp;+ &quot;/&quot;&amp;nbsp;+ HTTP method&amp;nbsp;+ &quot;/&quot; &amp;nbsp;+ generated UUID
&lt;/pre&gt;
&lt;br /&gt;
Why this structure? With this keys I can open cursor on the data store keys and iterate over keys only without event loading and reading the object associated with the key. Below I&#39;ll show it on the real code.&lt;br /&gt;
The UUID is attached to every request or else the record will be overwritten when saving new history object for the same URL and HTTP method which would defeat the purpose of the store.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
The solution&lt;/h3&gt;
I&#39;d like to worn you that this will work on data that &amp;nbsp;aren&#39;t suppose to change over the time. It doesn&#39;t care about the revision system of PouchDB.&lt;br /&gt;
&lt;br /&gt;
First step to optimise the query time was to use... raw IndexedDB instead of PouchDB wrapper. It may sounds silly, because we are using wrappers to not work on the raw IndexedDB, because it&#39;s not easy, it is not supporting promises, querying IDB is really hard and you may find 10 other reasons for not using it without a framework. In this case, though, it was the only thing I could do to get the data out really fast.&lt;br /&gt;
&lt;br /&gt;
Algorithm for the database query is quite straightforward:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;Compute the &quot;&lt;i&gt;queryKey&lt;/i&gt;&quot; whis is beginning of the key consisted with URL and HTTP method that we are looking for (the encoded URL&amp;nbsp;+ &quot;/&quot;&amp;nbsp;+ HTTP method part)&lt;/li&gt;
&lt;li&gt;Open a cursor (with value) with key range defined from the&amp;nbsp;&lt;i&gt;queryKey&lt;/i&gt;&amp;nbsp;on the&amp;nbsp;&lt;i&gt;document-store &lt;/i&gt;store&lt;/li&gt;
&lt;li&gt;In the success callback function check if value&#39;s&amp;nbsp;&lt;i&gt;deletedOrLocal&lt;/i&gt;&amp;nbsp;property equals zero&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;If yes, append result&#39;s &lt;i&gt;seq&lt;/i&gt;&amp;nbsp;property to the results list&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;When all data are ready then query the &lt;i&gt;by-sequence&lt;/i&gt; store and get data for each key&lt;/li&gt;
&lt;li&gt;Compute stats data&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
You may notice that step 4 can be included into step 3. Then using the same transaction you could take a data from the other store. I&#39;ve tried this, measured impact ono the performance and in this scenario read time doubled! Somehow, when using two different transactions with single store opened within the transaction it double speed up the read time.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Lets jump to the code.&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;prettyprint lang-javascript&quot;&gt;// The namespace
var processor = {};
// Open the database
processor.getDatabase = function() {
  return new Promise((resolve, reject) =&amp;gt; {
    // In ARC the store is called history-data
    let request = indexedDB.open(&#39;_pouch_history-data&#39;);
    request.onerror = function(event) {
      reject(event);
    };
    request.onsuccess = function(event) {
      resolve(event.target.result);
    };
  });
};
// Query keys for related data
processor.queryKeys = function(db, url, method) {
  return new Promise((resolve, reject) =&amp;gt; {
    // This is where PouchDB stores keys defined in the app and related metadata. 
    // It also stores the sequence number which is a key to the data stored by the app for given key
    let transaction = db.transaction([&#39;document-store&#39;], &#39;readonly&#39;);
    let objectStore = transaction.objectStore(&#39;document-store&#39;);
    // Creating beginning of the key to search for.
    let key = encodeURIComponent(url) + &#39;/&#39; + method + &#39;/&#39;;
    var keyRange = IDBKeyRange.bound(key, key + &#39;\uffff&#39;, true, true);
    let request = objectStore.openCursor(keyRange);
    let keys = [];
    request.onsuccess = function(event) {
      let cursor = event.target.result;
      if(cursor) {
        if (cursor.value.deletedOrLocal !== &#39;0&#39;) {
          // This record is useless
          cursor.continue();
          return;
        }
        // The `seq` keeps a reference to the by-sequence store where the final data are kept
        keys[keys.length] = cursor.value.seq; 
        cursor.continue();
      } else {
        // ready to continue
        resolve(keys);
      }
    };
    request.onerror = function(event) {
      // Because data consistency is not very important here we can do nothing.
      // Other apps could actually report an error.
      console.error(event);
    };
  });
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
Querying by the key is &lt;b&gt;very efficient&lt;/b&gt;. This part of the app, no matter the database size (at least sizes I checked so far) always took couple milliseconds to finish! Notice that in this time I&#39;ve completed a query for particular URL and HTTP method!&lt;br /&gt;
It is possible because I coded key with the formula described above. The rest is just a native KeyRange and cursor.&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-javascript&quot;&gt;var keyRange = IDBKeyRange.bound(key, key + &#39;\uffff&#39;, true, true);
&lt;/pre&gt;
&lt;div&gt;
The whole magic is happening here. The &lt;i&gt;\uffff&lt;/i&gt;&amp;nbsp;is added to the end of the upper boud of the key range because IndexedDB is indexed in lexicological order. It means that if you want to query for data from some string value up to any character after this string you have to use highest character value (in the UTF table) which is the&amp;nbsp;&lt;i&gt;\uffff&lt;/i&gt;&amp;nbsp;character. IndexedDB is optimised to run queries like this. If I&#39;d use auto-generated keys or any other key structure this wouldn&#39;t be possible and I would need to query all data in the database and perform manual search. And this would be very expensive.&lt;br /&gt;
&lt;br /&gt;
Finally the &lt;i&gt;queryKeys&lt;/i&gt; function returns a list of sequence numbers, which in PouchDb is a key for the&amp;nbsp;by-sequence store, where the final data that I&#39;m looking for are kept.&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-javascript&quot;&gt;processor.readHistoryData = function(store, seq) {
  return new Promise((resolve, reject) =&amp;gt; {
    let request = store.get(seq);
    request.onsuccess = function(event) {
      resolve(request.result);
    };
    request.onerror = function() {
      resolve(null);
    };
  });
}
processor.getHistoryData = function(url, method) {
  var startTime = performance.now();
  var db;
  return processor.getDatabase()
  .then((_db) =&amp;gt; {
    db = _db;
    return processor.queryKeys(_db, url, method);
  })
  .then((list) =&amp;gt; {
    if (!list || !list.length) {
      return [];
    }
    // Second transaction I mentioned earlier
    let transaction = db.transaction([&#39;by-sequence&#39;], &#39;readonly&#39;);
    let store = transaction.objectStore(&#39;by-sequence&#39;);
    return Promise.all(list.map((i) =&amp;gt; processor.readHistoryData(store, i)))
    // Clean up possible errors. Your app can actually collect information about the errors
    .then((list) =&amp;gt; list.filter((i) =&amp;gt; i !== null))
    .then((list) =&amp;gt; {
      list.sort((a, b) =&amp;gt; {
        if (a.created &amp;gt; b.created) {
          return 1;
        }
        if (a.created &amp;lt; b.created) {
          return -1;
        }
        return 0;
      });
      return list;
    });
  })
  .then((data) =&amp;gt; {
    let execTime = performance.now() - startTime;
    return {
      data: data,
      time: execTime
    };
  });
}
&lt;/pre&gt;
The &lt;i&gt;readHistoryData&lt;/i&gt; function just reads the data associated with given key. It&#39;s the most natural way to do it in IndexedDB. What&#39;s interesting is that I don&#39;t create a transaction for each call of this function. I rather use one transaction and I&#39;m passing it as an argument to the read function because it&#39;s faster.&lt;br /&gt;
&lt;br /&gt;
The getHistoryData function if the one to call to get the data. It contains a sequence of events to query and read the data. The&amp;nbsp;&lt;i&gt;by-sequence&lt;/i&gt; store is the store where the data the app needs are kept (in PouchDB model).&lt;br /&gt;
&lt;br /&gt;
One more thing to consider. I use The sort function to sort data from the oldest to newest. It&#39;s actually a room for improvement here. If the key instead of UUID contained a timestamp of the request then I wouldn&#39;t need to sort the data. Remember&amp;nbsp;lexicological order? The database would just return already sorted data by time. Right now it&#39;s a few milliseconds added to the the overall process time so it&#39;s not important issue but in the future I would change it.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
The improvements&amp;nbsp;&lt;/h3&gt;
Like I said in the beginning I was able to reduce query time by 98.52% just by bypassing PounchDB and using raw IndexedDB to query this particular data. This are the result&#39;s of measuring both implementations.&lt;br /&gt;
&lt;br /&gt;
For &lt;b&gt;30,934&lt;/b&gt; records in the datastore:&lt;br /&gt;
&lt;br /&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--&gt;&lt;/style&gt;&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; dir=&quot;ltr&quot; style=&quot;border-collapse: collapse; border: 1px solid #ccc; font-family: arial,sans,sans-serif; font-size: 13px; table-layout: fixed;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;102&quot;&gt;&lt;/col&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;PouchDb query (ms)&amp;quot;}&quot; style=&quot;font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;PouchDb query (ms)&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Raw IDB query (ms)&amp;quot;}&quot; style=&quot;font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;Raw IDB query (ms)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9984}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;9984&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:170}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;170&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9500}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;9500&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:204}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;204&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9715}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;9715&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:199}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;199&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9537}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;9537&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:195}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;195&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9665}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;9665&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:172}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;172&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9433}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;9433&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:154}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;154&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9501}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;9501&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:207}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;207&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9739}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;9739&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:167}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;167&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9719}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;9719&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:212}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;212&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9685}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;9685&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:181}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;181&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9599}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;9599&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:176}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;176&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-formula=&quot;=median(R[-11]C[0]:R[-1]C[0])&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9665}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;&lt;b&gt;9665&lt;/b&gt;&lt;/td&gt;&lt;td data-sheets-formula=&quot;=median(R[-11]C[0]:R[-1]C[0])&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:181}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;&lt;b&gt;181&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Last row is a median for the values. In this case the improvement was&amp;nbsp;&lt;b&gt;-98.13%&lt;/b&gt; of query time.&lt;br /&gt;
&lt;br /&gt;
For &lt;b&gt;160,934&lt;/b&gt; objects in the datastore:&lt;br /&gt;
&lt;br /&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--&gt;&lt;/style&gt;&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; dir=&quot;ltr&quot; style=&quot;border-collapse: collapse; border: 1px solid #ccc; font-family: arial,sans,sans-serif; font-size: 13px; table-layout: fixed;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;102&quot;&gt;&lt;/col&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;PouchDb query (ms)&amp;quot;}&quot; style=&quot;font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;PouchDb query (ms)&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Raw IDB query (ms)&amp;quot;}&quot; style=&quot;font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;Raw IDB query (ms)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:88479.58}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;88479.58&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:662.48999999999}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;662.49&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:53449.7799999997}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;53449.78&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:790.734999999986}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;790.735&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:53165.3600000003}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;53165.36&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:741.625}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;741.625&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:54344.375}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;54344.375&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:877.285000000032}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;877.285&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:53601.4949999996}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;53601.495&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:815.604999999981}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;815.605&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:53140.3200000003}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;53140.32&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:810.599999999918}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;810.6&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:54249.165}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;54249.165&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:841.805000000051}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;841.805&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:53752.0950000016}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;53752.095&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:728.825000000011}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;728.825&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:53533.8849999997}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;53533.885&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:712.169999999925}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;712.17&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:53565.1600000001}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;53565.16&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:691.475000000034}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;691.475&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:53838.6350000007}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;53838.635&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:833.089999999967}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;833.09&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-formula=&quot;=median(R[-11]C[0]:R[-1]C[0])&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:53601.4949999996}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;&lt;b&gt;53601.495&lt;/b&gt;&lt;/td&gt;&lt;td data-sheets-formula=&quot;=median(R[-11]C[0]:R[-1]C[0])&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:790.734999999986}&quot; style=&quot;padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;&lt;b&gt;790.735&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
The improvement is&amp;nbsp;&lt;b&gt;-98.52%&lt;/b&gt; of query time. That&#39;s a lot!&lt;br /&gt;
&lt;br /&gt;
I hope that you&#39;ve found this article helpful and you&#39;ll use this technique to improve a performance of your app.&lt;br /&gt;
The most important thing here is to remember that you can use IDB keys and they should work for you. IDB doesn&#39;t care if the key is a string, number or object. But you should care.&lt;br /&gt;
&lt;br /&gt;
Full code is available on my GitHub:&amp;nbsp;&lt;a href=&quot;https://github.com/jarrodek/ChromeRestClient/blob/develop/app/elements/request-stats-analyser/request-stats-analyser.html&quot;&gt;https://github.com/jarrodek/ChromeRestClient/blob/develop/app/elements/request-stats-analyser/request-stats-analyser.html&lt;/a&gt;&lt;br /&gt;
It&#39;s embedded a the web component which creates a web worker instance from the template content and run it in separate thread so main UI is not affected by the database query and later by data analyser.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/3475646415985517919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2016/11/pouchdb-read-optimisation-reducing-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/3475646415985517919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/3475646415985517919'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2016/11/pouchdb-read-optimisation-reducing-time.html' title='PouchDB read optimisation - reducing time of data queries'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwziOGBX06iLqe65Srp7dFrY5mQAyKxqmKwR_KDSconq_0wX8n-GnLlRzZAwIlsCF5ThQIBMMgFehBDozxo2JeGqsCJhHcdr0LEclEMceG7bM2IGNWH7cZvpG16_EbOq_KCXsseUgaOgOX/s72-c/Screen+Shot+2016-11-02+at+17.15.19.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-2176465675031576896</id><published>2016-11-01T15:28:00.003+00:00</published><updated>2016-11-01T15:28:39.148+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="environments"/><category scheme="http://www.blogger.com/atom/ns#" term="scripting"/><category scheme="http://www.blogger.com/atom/ns#" term="variables"/><title type='text'>Variables and environments in the Advanced REST Client</title><content type='html'>New release of version 8 brings new feature to the app. It&#39;s a variables and environments editor. It is an extension to already existing &lt;a href=&quot;https://restforchrome.blogspot.co.uk/2012/11/introduce-magic-variables.html&quot; target=&quot;_blank&quot;&gt;&quot;magic variables&quot; feature&lt;/a&gt;&amp;nbsp;introduced in 2012. Earlier you could set a limited number of keywords to generate numbers in any part of the request. Now own variables can be defined &amp;nbsp;in the app and assigned to environment. During the request the value of the variables will be applied in place where the variable was used.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwV3tM517MioHd3c32wEPaNnkfu9JZxBBV0_likv6dUfo_lkE_eI4TWOqtIzb7Otm0tbj0I9T3V9i0T0TNV5X3ssXg-rVD42ZyYRDwGADU8Bt2Kx9iHWLdbjczFYE_0U2hgNQtYuNpn9rI/s1600/Screen+Shot+2016-11-01+at+14.46.19+1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;457&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwV3tM517MioHd3c32wEPaNnkfu9JZxBBV0_likv6dUfo_lkE_eI4TWOqtIzb7Otm0tbj0I9T3V9i0T0TNV5X3ssXg-rVD42ZyYRDwGADU8Bt2Kx9iHWLdbjczFYE_0U2hgNQtYuNpn9rI/s640/Screen+Shot+2016-11-01+at+14.46.19+1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h3&gt;
Why to use variables and environments?&lt;/h3&gt;
Lets say you have different environment for your app: development, staging and production. On this three servers you need to pass different - for example - authentication parameters. You can define three environments in the Advanced REST Client (one for reach real environment of your app) and create a variable that will contain a value that needs to be passed to this particular environment. OAuth access token for example. Then you use this variable in the suitable place (URL or headers for example) and during the request this variable will be replaced with proper value.&lt;br /&gt;
&lt;br /&gt;
Consider following examples.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPnDc04A1QwiZBSSuC5aOx-jEnCbtGKoDq2xX8d4iqsJoEsRsCrD_3J_vw1HQlTjaLrYplps7Ue3pHMJZXxH-fM72kKd1bTCQzI2IwXcvpmS_tIHDzBwAtcsf_h6itj-7WluFYjaQfIjUs/s1600/Screen+Shot+2016-11-01+at+14.53.49.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;152&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPnDc04A1QwiZBSSuC5aOx-jEnCbtGKoDq2xX8d4iqsJoEsRsCrD_3J_vw1HQlTjaLrYplps7Ue3pHMJZXxH-fM72kKd1bTCQzI2IwXcvpmS_tIHDzBwAtcsf_h6itj-7WluFYjaQfIjUs/s640/Screen+Shot+2016-11-01+at+14.53.49.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Here, the &lt;i&gt;authToken&lt;/i&gt; variable has been defined for the staging environment which is selected right now. We&#39;ll use this variable in the URL:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB9mCrFRhorYzm9m1RpC3p5Azu_8JHaM5j-mUzaGlpCFMoDHBxs6bg_SYZZYDNMD8msk6CKNv6gh5u27XQ3tuwLjEQJcyfFk9TMzMT2FQJdDTn9OsseVs9G1afv_CkfmkKbURHGX2yTruO/s1600/Screen+Shot+2016-11-01+at+14.55.42.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;64&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB9mCrFRhorYzm9m1RpC3p5Azu_8JHaM5j-mUzaGlpCFMoDHBxs6bg_SYZZYDNMD8msk6CKNv6gh5u27XQ3tuwLjEQJcyfFk9TMzMT2FQJdDTn9OsseVs9G1afv_CkfmkKbURHGX2yTruO/s640/Screen+Shot+2016-11-01+at+14.55.42.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
In the response panel, in the request headers you&#39;ll see that the request was altered by the app before sending it to the server:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGzzmkSUC4J6NM_LJkcTglqvyu0yXn1JbLHPPxLqNKYURfgCx7gU49Ai4AGUbkHzshyiJ2qBV2QUM7CYWBOdM8ocqJbIQUtQHW6kYIvdAGCwNaHNZxwz-L4SvpE-saYC-cVjXPbySIu00Z/s1600/Screen+Shot+2016-11-01+at+14.57.11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;482&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGzzmkSUC4J6NM_LJkcTglqvyu0yXn1JbLHPPxLqNKYURfgCx7gU49Ai4AGUbkHzshyiJ2qBV2QUM7CYWBOdM8ocqJbIQUtQHW6kYIvdAGCwNaHNZxwz-L4SvpE-saYC-cVjXPbySIu00Z/s640/Screen+Shot+2016-11-01+at+14.57.11.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The same will happen if you put a variable anywhere in the headers and payload panels as well.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Variable definition&lt;/h3&gt;
Variable is always a string. Even if the type can be numeric it&#39;s always a string. And it&#39;s a good thing actually because you don&#39;t need to care about types in the app.&lt;br /&gt;
You can define a variable value as a string, concatenation of string and other variables or concatenation of variables.&lt;br /&gt;
&lt;br /&gt;
Consider following example:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSK20bFlPJ6vMytJ3WKnLc9n8DoH9gsrQ023UoZIx64Jf8df3mylhWgsSFbTedbiktbTa7VTB-KTkkKbnNa9eTG1zNyNXYrgf8ZxypxSl7GNSFbwBNIq7Z-CAyC1Hfk4QeN4k1sYLky3az/s1600/Screen+Shot+2016-11-01+at+15.14.21.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;123&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSK20bFlPJ6vMytJ3WKnLc9n8DoH9gsrQ023UoZIx64Jf8df3mylhWgsSFbTedbiktbTa7VTB-KTkkKbnNa9eTG1zNyNXYrgf8ZxypxSl7GNSFbwBNIq7Z-CAyC1Hfk4QeN4k1sYLky3az/s640/Screen+Shot+2016-11-01+at+15.14.21.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Request headers:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLYQrq1IX2Wp4aw1JOpx0ciq9OJY3z4_ZHGXvOJWhChZRPa-RDlC-TKanAJcR3sLiui3FCGQ9musPWkTSwtKJiAGUB750Rif4_rumalCn5CiyngftZ6t3DiL8fPPZyJt2Rt9sRlsjN8HQW/s1600/Screen+Shot+2016-11-01+at+15.17.59.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;184&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLYQrq1IX2Wp4aw1JOpx0ciq9OJY3z4_ZHGXvOJWhChZRPa-RDlC-TKanAJcR3sLiui3FCGQ9musPWkTSwtKJiAGUB750Rif4_rumalCn5CiyngftZ6t3DiL8fPPZyJt2Rt9sRlsjN8HQW/s640/Screen+Shot+2016-11-01+at+15.17.59.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
And the response:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr2TSzvhUQNI9egH-Prf-s78i6ZafbOFxpnrsUMrTpbjBHI-SPHk5r_Q5k-97nzu6bd6AAgxPxUEjNzv6A-KNPzINEPNeyH6OwRZy_0avHTY-4xPfylZpLLK_XN9COMoz3azsjmTXLu5gB/s1600/Screen+Shot+2016-11-01+at+15.15.25.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;196&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr2TSzvhUQNI9egH-Prf-s78i6ZafbOFxpnrsUMrTpbjBHI-SPHk5r_Q5k-97nzu6bd6AAgxPxUEjNzv6A-KNPzINEPNeyH6OwRZy_0avHTY-4xPfylZpLLK_XN9COMoz3azsjmTXLu5gB/s640/Screen+Shot+2016-11-01+at+15.15.25.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The &lt;i&gt;theHeader&lt;/i&gt; value is a concatenation of both &lt;i&gt;secret&lt;/i&gt; and &lt;i&gt;clientId&lt;/i&gt; variables and predefined variable &lt;i&gt;now&lt;/i&gt; which inserts current time.&lt;br /&gt;
&lt;br /&gt;
There is a &lt;b&gt;limitation,&lt;/b&gt; though. You can&#39;t use a variable in the other&#39;s variable value if this variable has already a concatenation of variables. It will produce an error in the request.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPmzZPVTyy-kENkL2spL6FNJv74j6BU17ZoXejmLRGtlCAmbL178XVECbWc9KHjUBdrk5Ff_UKaChn3bWYQMOrT3IPTsPO0LZZcwk2JEYYe_Nh6X2phgexXjzlyJmOTAWsdKic0kZMlRLg/s1600/Screen+Shot+2016-11-01+at+15.21.22.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;184&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPmzZPVTyy-kENkL2spL6FNJv74j6BU17ZoXejmLRGtlCAmbL178XVECbWc9KHjUBdrk5Ff_UKaChn3bWYQMOrT3IPTsPO0LZZcwk2JEYYe_Nh6X2phgexXjzlyJmOTAWsdKic0kZMlRLg/s640/Screen+Shot+2016-11-01+at+15.21.22.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp;&lt;br /&gt;
The &lt;i&gt;wontWork&lt;/i&gt; variable will produce following output:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPsg6fuOm-UFPyhD8euh1D8OAzjbuUn3-91cKkrp2fgkzMbZlhsR8N-HS78Sf_FZbbJD7bk1Ik7mLcLEycRbJU2Gtqrs2iROZZJXEzwM8ic4eQoAO5bWuf1mWC1tQIibNIacZp8YyPIltu/s1600/Screen+Shot+2016-11-01+at+15.22.30.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPsg6fuOm-UFPyhD8euh1D8OAzjbuUn3-91cKkrp2fgkzMbZlhsR8N-HS78Sf_FZbbJD7bk1Ik7mLcLEycRbJU2Gtqrs2iROZZJXEzwM8ic4eQoAO5bWuf1mWC1tQIibNIacZp8YyPIltu/s640/Screen+Shot+2016-11-01+at+15.22.30.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
It&#39;s a safety mechanism to not create circular object dependencies which will create infinite loop and eventually will crash the app because it will run out of memory. Therefore only one level of variables are allowed.&lt;br /&gt;
&lt;h3&gt;
&lt;br /&gt;&lt;/h3&gt;
&lt;h3&gt;
Disabling variables&lt;/h3&gt;
Single variable can be disabled by unselecting the checkbox next to it&#39;s name.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipQLNF3AuC6awqDqhpIJwSP2mJN09FeNC9yCd74EjkqoktLuYkKBtbEhJEPTt-0I3pOf1KpDB3ZrbP5qqdpuEzBsSte3QkvmT-KT0eUFcKOwZO1mPVPwZjg_M4DtRK36ti63naUganlx-v/s1600/Screen+Shot+2016-11-01+at+15.01.12.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;48&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipQLNF3AuC6awqDqhpIJwSP2mJN09FeNC9yCd74EjkqoktLuYkKBtbEhJEPTt-0I3pOf1KpDB3ZrbP5qqdpuEzBsSte3QkvmT-KT0eUFcKOwZO1mPVPwZjg_M4DtRK36ti63naUganlx-v/s640/Screen+Shot+2016-11-01+at+15.01.12.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
You can also completely disable variables in the app settings if you don&#39;t want the variables to be applied at all.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Future of the variables&lt;/h3&gt;
Right now you have to assign a value of the variable manually. And also you have to know the value at the moment. Future releases of the Advanced REST Client will have this feature more advanced by adding scripting environment where you&#39;ll be able to assign value of the variable depending on the response for selected or any request. It makes authorisation and token exchange flow much easier to manage in the app.&lt;br /&gt;
Next step will be to add string and numbers manipulations functions to the variables so if needed you&#39;ll be able to - for example - subtract a token value from the response header of calculate a value of the variable depending on other variables.&lt;br /&gt;
&lt;br /&gt;
P.S.&lt;br /&gt;
At the moment when this blog post has been published, version 8 of the app is in &lt;a href=&quot;https://restforchrome.blogspot.co.uk/2016/03/join-advanced-rest-client-beta-program.html&quot; target=&quot;_blank&quot;&gt;beta channel&lt;/a&gt;. You can test this and report early feedback. It will be released into the stable channel in coming weeks.</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/2176465675031576896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2016/11/variables-and-environments-in-advanced.html#comment-form' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/2176465675031576896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/2176465675031576896'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2016/11/variables-and-environments-in-advanced.html' title='Variables and environments in the Advanced REST Client'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwV3tM517MioHd3c32wEPaNnkfu9JZxBBV0_likv6dUfo_lkE_eI4TWOqtIzb7Otm0tbj0I9T3V9i0T0TNV5X3ssXg-rVD42ZyYRDwGADU8Bt2Kx9iHWLdbjczFYE_0U2hgNQtYuNpn9rI/s72-c/Screen+Shot+2016-11-01+at+14.46.19+1.png" height="72" width="72"/><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-8614439889538549064</id><published>2016-10-26T13:57:00.000+01:00</published><updated>2016-10-26T13:57:09.177+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="beta"/><category scheme="http://www.blogger.com/atom/ns#" term="new version"/><title type='text'>ARC version 8</title><content type='html'>Recently I&#39;ve published an update to the &lt;a href=&quot;https://restforchrome.blogspot.co.uk/2016/03/join-advanced-rest-client-beta-program.html&quot; target=&quot;_blank&quot;&gt;beta channel&lt;/a&gt; of the Advanced REST Client. It is a version 8 of the app.&lt;br /&gt;
&lt;br /&gt;
This update introduce many changes in the background so it is a starting point for father development.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h4&gt;
Database structure&lt;/h4&gt;
First of all the database structure completely changed. Old database and data in it are intact and will just stay there for some time. At leat until I&#39;m sure that everyone migrated the app to new structure.&lt;br /&gt;
&lt;br /&gt;
The app has migrated to use &lt;a href=&quot;https://pouchdb.com/&quot; target=&quot;_blank&quot;&gt;PouchDB&lt;/a&gt; as a wrapped for IndexedDB. It gives powerful options especially in terms of data integrity management (thanks to its revision system) and synchronizations with external databases (which is not yet in the app but it&#39;s in the roadmap).&lt;br /&gt;
&lt;br /&gt;
But the man reason for database structure change was performance. Previously, when querying the history data to build a listing view it was getting out all objects from the datastore (yes, every request object with it&#39;s history of calls which includes request and response data) just to show time, name and method. It was very inefficient and was slowing down the app drastically.&lt;br /&gt;
New database structure is more complex and is using different databases for each object type but it makes performance much better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
History analysis&lt;/h3&gt;
When you making a request the response is saved to the database. So far it was never used and I had an issue on issue tracker marked as &quot;do something with it in the future&quot;. So finally I did something with it.&lt;br /&gt;
When you open a request (from history or from saved data) or just enter an URL a new process will start and will search the database for history of requests made to this endpoint. A small button in the bottom right of the app appear when data are available to open data explorer.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8Yg7SsPxiOftJ-180aPJNZ4z3ePM4uJLmdU1TocWB9QNbRuP8Cg6Nbd_XL1IkLUHrpXrzClj8d_Lphw-Zl8LNCoQdpMBfxyxnNieoBV2Har8XhD1ckqIOCX9uU-iqMzTlw2Sl86M6XySS/s1600/Screen+Shot+2016-10-26+at+12.29.59.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;484&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8Yg7SsPxiOftJ-180aPJNZ4z3ePM4uJLmdU1TocWB9QNbRuP8Cg6Nbd_XL1IkLUHrpXrzClj8d_Lphw-Zl8LNCoQdpMBfxyxnNieoBV2Har8XhD1ckqIOCX9uU-iqMzTlw2Sl86M6XySS/s640/Screen+Shot+2016-10-26+at+12.29.59.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
This data explorer shows charts for:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Time data&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Response time as an overall time need to perform full request cycle&lt;/li&gt;
&lt;li&gt;Connection time - time needed to to make a connection to remote server&lt;/li&gt;
&lt;li&gt;SSL negotiation time (only for https endpoints) as a time needed for SSL negotiation&lt;/li&gt;
&lt;li&gt;Message sent time - a number of milliseconds needed to &amp;nbsp;transport headers and request body to the remote machine&lt;/li&gt;
&lt;li&gt;Time to first byte - as a time between finished sending a message and receiving first bytes of data. You can say is that it is a server request process time&lt;/li&gt;
&lt;li&gt;Data receive time which is a time measured since first byte arrives until connection was closed or last message byte was read.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
All times are in milliseconds. Note that this data are not available for &quot;XHR requests&quot; (if you use this option to make a connection).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Size data&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Request headers size - size of the HTTP message (headers part) sent to the server&lt;/li&gt;
&lt;li&gt;Request payload size - size of the body data send to the server. This data are not available for GET and &amp;nbsp;HEAD requests&lt;/li&gt;
&lt;li&gt;Response headers and response payload size - similar to above but as the data received from the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Both size and time data has calculated median for each chart so you can see what&#39;s abnormal and when did it happened.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Last chart is a histogram of the response status codes. It shows how reliable the endpoint is in a reference to responding the same way all the time.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Other changes&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Projects&lt;/b&gt; in form as they are right now &lt;b&gt;are now deprecated&lt;/b&gt;. New projects will be implemented in next release. You can check out &lt;a href=&quot;http://rrodek.github.io/arc-prototype/arc-prototype/app/&quot; target=&quot;_blank&quot;&gt;this prototype&lt;/a&gt; to see proof of concept of the new app.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The app now have a &lt;b&gt;status bar&lt;/b&gt;. Besides actions for data explorer and other planned actions it also contains a status message for the request. You normally won&#39;t need it. But when the connection or server is really slow you&#39;ll see at which part of the request the process slows.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you are using ARC exported files in some other way than importing it back to the app you&#39;ll have a problem because file structure has changed.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
CTRL/COMMAND&amp;nbsp;+ S shortcut saves current request in the database by default without showing save dialog. &amp;nbsp;At least if the request was previously saved. You need to click on the save icon on the top bar or use CTRL/COMMAND+SHIFT+S to open &quot;save as&quot; dialog.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Rest of the changes are minor bug fixes reported by the users. &lt;a href=&quot;https://github.com/jarrodek/ChromeRestClient/issues&quot; target=&quot;_blank&quot;&gt;Issue tracker&lt;/a&gt; is the fastest way to stay in contact and request a feature or file a bug report. I check if even more often that an email.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Beta trials will end in coming days (depends on if I or anyone find a really annoying bug) and then the update will be pushed to the stable channel.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/8614439889538549064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2016/10/arc-version-8.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/8614439889538549064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/8614439889538549064'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2016/10/arc-version-8.html' title='ARC version 8'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8Yg7SsPxiOftJ-180aPJNZ4z3ePM4uJLmdU1TocWB9QNbRuP8Cg6Nbd_XL1IkLUHrpXrzClj8d_Lphw-Zl8LNCoQdpMBfxyxnNieoBV2Har8XhD1ckqIOCX9uU-iqMzTlw2Sl86M6XySS/s72-c/Screen+Shot+2016-10-26+at+12.29.59.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-2140586208041830954</id><published>2016-09-26T13:55:00.000+01:00</published><updated>2016-09-26T14:39:37.560+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chrome app"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="macos"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Beyond Chrome Apps - ARC as a native app</title><content type='html'>Hi developers,&lt;br /&gt;
&lt;br /&gt;
For some time now I am working on &lt;b&gt;completely new version of the ARC&lt;/b&gt;. Don&#39;t worry, it will be the same good and simple tool for testing API calls. However a lot will change in the background. It will allow me to &lt;b&gt;move the app to new platforms&lt;/b&gt; other than Chrome ecosystem.&lt;br /&gt;
&lt;br /&gt;
According to app&#39;s roadmap ARC will be re-modulated and each part of the app (as a web component) publicly available on GitHub. It helps both the app to transform into new set of tools available everywhere and openness so everyone can use this web components in their projects. This is my contribution to the development of the open web and I deeply believe that this will help in overall web development.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
You may already heard that Google will discontinue Chrome Apps in some time. Advanced REST Client &lt;b&gt;will be available on other platforms&lt;/b&gt; when it will happen. Additional tool will be released later this year alongside with other platforms releases to move your data from Chrome app to your new&amp;nbsp;favourite version of the ARC.&lt;br /&gt;
&lt;br /&gt;
Currently planned new versions are for:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Windows 7 and later (32- and 64-bit)&lt;/li&gt;
&lt;li&gt;MacOS (min version 10.9, 64bit)&lt;/li&gt;
&lt;li&gt;Linux (32- and 64-bit)&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Ubuntu 12.04 and later&lt;/li&gt;
&lt;li&gt;Fedora 21&lt;/li&gt;
&lt;li&gt;Debian 8&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
This list will change in the future by adding more implementation. However this is a base for moving the app from Chrome ecosystem.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Frequently Asked Questions&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
When Advanced REST Client disappear from Chrome Web Store and Chrome?&lt;/h3&gt;
&lt;div&gt;
According to &lt;a href=&quot;http://blog.chromium.org/2016/08/from-chrome-apps-to-web.html&quot; target=&quot;_blank&quot;&gt;Chromium blog posts&lt;/a&gt;&amp;nbsp;Chrome Apps will disappear from CWS listing in second half 2017. In early 2018 Chrome apps won&#39;t load in Chrome.&lt;/div&gt;
&lt;div&gt;
This gives about 1,5 year to move ARC to other platforms.&lt;/div&gt;
&lt;h3&gt;
What about my data saved in ARC?&lt;/h3&gt;
&lt;div&gt;
There&#39;s no seamlessly way to transfer data from Chrome App to other app. Arc already have import / export function so probably it will be used to transfer data between apps. However it will require user action. ARC will provide additional tools to transfer data between Chrome App and other versions.&lt;/div&gt;
&lt;h3&gt;
Will ARC work the same way on other platforms?&lt;/h3&gt;
&lt;div&gt;
According to my current knowledge there&#39;s no reason to assume that there will be a compromises while moving on different platforms. But remember that the ARC won&#39;t be part of the Chrome platform anymore. Sessions authenticated in tabs will not work in ARC without additional extension installed. Also cookies information won&#39;t be available until additional extension is installed.&lt;/div&gt;
&lt;h3&gt;
When new releases will be available?&lt;/h3&gt;
&lt;div&gt;
In coming months. ARC internally is not a small project and it is required to rewrite most of the code to work as a separate web components. Once new releases will be ready you&#39;ll be notified in the app, on this blog and Google Groups for beta testers.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
There maybe more questions from you and I&#39;ll be happy to answer them. Use comments section below to ask them and I&#39;ll answer it as soon as I can.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Thanks for using the app and happy RESTing&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/2140586208041830954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2016/09/beyond-chrome-apps-arc-as-native-app.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/2140586208041830954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/2140586208041830954'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2016/09/beyond-chrome-apps-arc-as-native-app.html' title='Beyond Chrome Apps - ARC as a native app'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6420037820872138426.post-7199047204887826590</id><published>2016-09-19T09:00:00.000+01:00</published><updated>2016-09-26T14:40:11.255+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="development"/><category scheme="http://www.blogger.com/atom/ns#" term="mockup"/><category scheme="http://www.blogger.com/atom/ns#" term="new version"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="prototype"/><category scheme="http://www.blogger.com/atom/ns#" term="UI change"/><category scheme="http://www.blogger.com/atom/ns#" term="update"/><category scheme="http://www.blogger.com/atom/ns#" term="upgrade"/><category scheme="http://www.blogger.com/atom/ns#" term="Wireframe"/><title type='text'>Prototype testing - invitation to the usability research</title><content type='html'>I&#39;m happy to announce that we are ready to conduct a user research on a prototype of new Advanced REST Client.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
List of changes is very long. Starting from general UI redesign to change in basic functionality.&lt;br /&gt;
The most important changes are:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;new projects will support RAML (&lt;a href=&quot;http://raml.org/&quot;&gt;RESTful API Modeling Language&lt;/a&gt;) standard. Users will be able to import RAML file and use it as a &quot;project&quot;. RAML contains API definition with the documentation that will be displayed alongside with the RAML request (new view in the app) and in project documentation page&lt;/li&gt;
&lt;/ul&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;history / saved / projects panels has been redesigned and now all of them are combined into one exploring / searching panel. History and saved data are accessible through URL panel (when the value is empty). Searching the history is possible by entering a non URL like query into the URL field&lt;/li&gt;
&lt;li&gt;the app will have more authorisation settings and accessible from new Authorisation panel in the request form. Users may choose if they want to enter the authorisation data manually (headers editor) or setup header using new panel&lt;/li&gt;
&lt;li&gt;environmental variables now can be defined by the user and added to the request along with old predefined variables (random and now functions). Variables will support basic arithmetical and string operations (Math and String functions).&lt;/li&gt;
&lt;li&gt;Variables are enclosed in an environment, environments can be changed and managed from the request panel&lt;/li&gt;
&lt;li&gt;New JSON/XML editor for the payload editor. The prototype contains JSON editor only but XML is based on the same principle.&lt;/li&gt;
&lt;li&gt;Users are now able to define a header sets and use them later in a request&lt;/li&gt;
&lt;/ul&gt;
This is only a prototype but it is a direction where the app will be developed in coming weeks. &lt;br /&gt;
Because ARC is a community driven project we&#39;d like to invite you to the prototype testing.&amp;nbsp;You&#39;re feedback is really valuable and may help to made a final decision about app development and design. If you are interested in prototype testing please visit &lt;a href=&quot;https://jarrodek.github.io/arc-prototype/arc-prototype/app/&quot;&gt;https://jarrodek.github.io/arc-prototype/arc-prototype/app/&lt;/a&gt; to see the prototype. &lt;br /&gt;
To give your feedback simply fill up this form: &lt;a href=&quot;https://insights.hotjar.com/s?siteId=284832&amp;amp;surveyId=13542&quot;&gt;https://insights.hotjar.com/s?siteId=284832&amp;amp;surveyId=13542&lt;/a&gt; or give an open feedback on issue tracker here: &lt;a href=&quot;https://github.com/jarrodek/ChromeRestClient/issues/796&quot;&gt;https://github.com/jarrodek/ChromeRestClient/issues/796&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The testing will end very soon so there&#39;s no much time to conduct the test.&lt;br /&gt;
&lt;br /&gt;
Also, we are looking for people who will take a part in the usability research for ARC. The remote user research will be conducted in the coming weeks and will be a recorded session of a participant performing given tasks in the app. It will be conducted on participant&#39;s computer at a convenient to her / him time because the research is not moderated. &lt;br /&gt;
If you&#39;d like to take a part in remote user research, please fill in this form: &lt;a href=&quot;https://docs.google.com/forms/d/e/1FAIpQLScgEeqgIILSe4sOPRLtPU2mJNf6Hb-123GiTtSnWA01zK4zOA/viewform&quot;&gt;https://docs.google.com/forms/d/e/1FAIpQLScgEeqgIILSe4sOPRLtPU2mJNf6Hb-123GiTtSnWA01zK4zOA/viewform&lt;/a&gt; and we will contact you shortly.&lt;br /&gt;
&lt;br /&gt;
Thanks!&lt;br /&gt;
Pawel Psztyc &amp;amp; the ARC team&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://restforchrome.blogspot.com/feeds/7199047204887826590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://restforchrome.blogspot.com/2016/09/prototype-testing-invitation-to.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/7199047204887826590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6420037820872138426/posts/default/7199047204887826590'/><link rel='alternate' type='text/html' href='http://restforchrome.blogspot.com/2016/09/prototype-testing-invitation-to.html' title='Prototype testing - invitation to the usability research'/><author><name>Pawel Psztyc</name><uri>http://www.blogger.com/profile/07651909958338725605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>