<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Api - Tag - Dimas Maulana</title>
    <link>https://dimasmaulana.pages.dev/tags/api/</link>
    <description>Dimas Maulana Website</description>
    <generator>Hugo 0.150.0 &amp; FixIt v0.4.3-20260130042349-e23a50d7</generator>
    <language>en</language>
    <lastBuildDate>Sat, 03 Jun 2023 19:36:56 +0700</lastBuildDate>
    <atom:link href="https://dimasmaulana.pages.dev/tags/api/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Choosing the Right Language for Asynchronous Web APIs</title>
      <link>https://dimasmaulana.pages.dev/posts/development/choosing-the-right-language-for-asynchronous-web-apis/</link>
      <pubDate>Sat, 03 Jun 2023 19:36:56 +0700</pubDate>
      <guid>https://dimasmaulana.pages.dev/posts/development/choosing-the-right-language-for-asynchronous-web-apis/</guid>
      <category domain="https://dimasmaulana.pages.dev/categories/development/">Development</category>
      <description>&lt;p&gt;Building powerful and inexpensive web APIs requires careful consideration of the programming language you use. This article compares various programming languages ​​for their suitability for handling asynchronous operations, scalability, and resource utilization. We dive deep into the strengths and limitations of languages ​​such as Node.js, Go, Java, Python, Ruby, and PHP to help you make informed decisions when choosing the right language for your project.&lt;/p&gt;&#xA;&lt;h2 class=&#34;heading-element&#34; id=&#34;nodejs&#34;&gt;&lt;span&gt;Node.js&lt;/span&gt;&#xA;  &lt;a href=&#34;#nodejs&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&lt;p&gt;Event-driven asynchronous programming&#xA;Node.js is known for its asynchronous, event-driven programming model. It excels at handling concurrent requests by using a single thread and non-blocking I/O operations. However, due to its single-threaded nature, it may not be ideal for heavy CPU-based tasks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>REST API Status Code Example</title>
      <link>https://dimasmaulana.pages.dev/posts/development/rest-api-status-code-example/</link>
      <pubDate>Fri, 25 Feb 2022 09:57:46 +0700</pubDate>
      <guid>https://dimasmaulana.pages.dev/posts/development/rest-api-status-code-example/</guid>
      <category domain="https://dimasmaulana.pages.dev/categories/development/">Development</category>
      <description>&lt;h2 class=&#34;heading-element&#34; id=&#34;introduction&#34;&gt;&lt;span&gt;Introduction&lt;/span&gt;&#xA;  &lt;a href=&#34;#introduction&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&lt;p&gt;HTTP status codes are essential in REST APIs as they indicate the outcome of client requests. These standardized codes help clients understand whether their request was successful, requires further action, or encountered an error. Below is an overview of key HTTP status codes categorized by their respective classes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>REST API Success Response Example</title>
      <link>https://dimasmaulana.pages.dev/posts/development/rest-api-success-response-example-/</link>
      <pubDate>Tue, 22 Feb 2022 22:03:47 +0700</pubDate>
      <guid>https://dimasmaulana.pages.dev/posts/development/rest-api-success-response-example-/</guid>
      <category domain="https://dimasmaulana.pages.dev/categories/development/">Development</category>
      <description>&lt;h2 class=&#34;heading-element&#34; id=&#34;overview&#34;&gt;&lt;span&gt;Overview&lt;/span&gt;&#xA;  &lt;a href=&#34;#overview&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&lt;p&gt;This document provides an example of a successful response from a REST API when creating a new resource. The response follows a structured format, including essential details such as the resource ID, attributes, timestamps, and metadata.&lt;/p&gt;</description>
    </item>
    <item>
      <title>REST API Error Response Example</title>
      <link>https://dimasmaulana.pages.dev/posts/development/rest-api-error-response-example/</link>
      <pubDate>Tue, 22 Feb 2022 21:57:44 +0700</pubDate>
      <guid>https://dimasmaulana.pages.dev/posts/development/rest-api-error-response-example/</guid>
      <category domain="https://dimasmaulana.pages.dev/categories/development/">Development</category>
      <description>&lt;p&gt;REST APIs should provide clear and structured error responses to help clients understand and resolve issues effectively. Below are examples of different types of error responses that an API might return.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 class=&#34;heading-element&#34; id=&#34;single-error-responses&#34;&gt;&lt;span&gt;Single Error Responses&lt;/span&gt;&#xA;  &lt;a href=&#34;#single-error-responses&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&lt;h3 class=&#34;heading-element&#34; id=&#34;incorrect-username-or-password&#34;&gt;&lt;span&gt;Incorrect Username or Password&lt;/span&gt;&#xA;  &lt;a href=&#34;#incorrect-username-or-password&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;{&#xA;    &amp;#34;type&amp;#34;: &amp;#34;/errors/incorrect-user-pass&amp;#34;,&#xA;    &amp;#34;title&amp;#34;: &amp;#34;Incorrect username or password.&amp;#34;,&#xA;    &amp;#34;status&amp;#34;: 401,&#xA;    &amp;#34;detail&amp;#34;: &amp;#34;Authentication failed due to incorrect username or password.&amp;#34;,&#xA;    &amp;#34;instance&amp;#34;: &amp;#34;/login/log/abc123&amp;#34;&#xA;}&lt;/code&gt;&lt;/pre&gt;&lt;h3 class=&#34;heading-element&#34; id=&#34;validation-errors&#34;&gt;&lt;span&gt;Validation Errors&lt;/span&gt;&#xA;  &lt;a href=&#34;#validation-errors&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h3&gt;&lt;h4 class=&#34;heading-element&#34; id=&#34;title-must-be-defined&#34;&gt;&lt;span&gt;Title Must Be Defined&lt;/span&gt;&#xA;  &lt;a href=&#34;#title-must-be-defined&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;{&#xA;    &amp;#34;data&amp;#34;: null,&#xA;    &amp;#34;error&amp;#34;: {&#xA;        &amp;#34;status&amp;#34;: 400,&#xA;        &amp;#34;name&amp;#34;: &amp;#34;ValidationError&amp;#34;,&#xA;        &amp;#34;message&amp;#34;: &amp;#34;title must be defined.&amp;#34;,&#xA;        &amp;#34;details&amp;#34;: {&#xA;            &amp;#34;errors&amp;#34;: [&#xA;                {&#xA;                    &amp;#34;path&amp;#34;: [&amp;#34;title&amp;#34;],&#xA;                    &amp;#34;message&amp;#34;: &amp;#34;title must be defined.&amp;#34;,&#xA;                    &amp;#34;name&amp;#34;: &amp;#34;ValidationError&amp;#34;&#xA;                }&#xA;            ]&#xA;        }&#xA;    }&#xA;}&lt;/code&gt;&lt;/pre&gt;&lt;h4 class=&#34;heading-element&#34; id=&#34;name-must-be-at-most-50-characters&#34;&gt;&lt;span&gt;Name Must Be At Most 50 Characters&lt;/span&gt;&#xA;  &lt;a href=&#34;#name-must-be-at-most-50-characters&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;{&#xA;    &amp;#34;data&amp;#34;: null,&#xA;    &amp;#34;error&amp;#34;: {&#xA;        &amp;#34;status&amp;#34;: 400,&#xA;        &amp;#34;name&amp;#34;: &amp;#34;ValidationError&amp;#34;,&#xA;        &amp;#34;message&amp;#34;: &amp;#34;name must be at most 50 characters&amp;#34;,&#xA;        &amp;#34;details&amp;#34;: {&#xA;            &amp;#34;errors&amp;#34;: [&#xA;                {&#xA;                    &amp;#34;path&amp;#34;: [&amp;#34;name&amp;#34;],&#xA;                    &amp;#34;message&amp;#34;: &amp;#34;name must be at most 50 characters&amp;#34;,&#xA;                    &amp;#34;name&amp;#34;: &amp;#34;ValidationError&amp;#34;&#xA;                }&#xA;            ]&#xA;        }&#xA;    }&#xA;}&lt;/code&gt;&lt;/pre&gt;&lt;h4 class=&#34;heading-element&#34; id=&#34;this-attribute-must-be-unique&#34;&gt;&lt;span&gt;This Attribute Must Be Unique&lt;/span&gt;&#xA;  &lt;a href=&#34;#this-attribute-must-be-unique&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;{&#xA;    &amp;#34;data&amp;#34;: null,&#xA;    &amp;#34;error&amp;#34;: {&#xA;        &amp;#34;status&amp;#34;: 400,&#xA;        &amp;#34;name&amp;#34;: &amp;#34;ValidationError&amp;#34;,&#xA;        &amp;#34;message&amp;#34;: &amp;#34;This attribute must be unique&amp;#34;,&#xA;        &amp;#34;details&amp;#34;: {&#xA;            &amp;#34;errors&amp;#34;: [&#xA;                {&#xA;                    &amp;#34;path&amp;#34;: [&amp;#34;name&amp;#34;],&#xA;                    &amp;#34;message&amp;#34;: &amp;#34;This attribute must be unique&amp;#34;,&#xA;                    &amp;#34;name&amp;#34;: &amp;#34;ValidationError&amp;#34;&#xA;                }&#xA;            ]&#xA;        }&#xA;    }&#xA;}&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h2 class=&#34;heading-element&#34; id=&#34;authentication-errors&#34;&gt;&lt;span&gt;Authentication Errors&lt;/span&gt;&#xA;  &lt;a href=&#34;#authentication-errors&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&lt;h3 class=&#34;heading-element&#34; id=&#34;no-authorization-provided&#34;&gt;&lt;span&gt;No Authorization Provided&lt;/span&gt;&#xA;  &lt;a href=&#34;#no-authorization-provided&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;{&#xA;    &amp;#34;data&amp;#34;: null,&#xA;    &amp;#34;error&amp;#34;: {&#xA;        &amp;#34;status&amp;#34;: 403,&#xA;        &amp;#34;name&amp;#34;: &amp;#34;ForbiddenError&amp;#34;,&#xA;        &amp;#34;message&amp;#34;: &amp;#34;Forbidden&amp;#34;,&#xA;        &amp;#34;details&amp;#34;: {}&#xA;    }&#xA;}&lt;/code&gt;&lt;/pre&gt;&lt;h3 class=&#34;heading-element&#34; id=&#34;invalid-authentication&#34;&gt;&lt;span&gt;Invalid Authentication&lt;/span&gt;&#xA;  &lt;a href=&#34;#invalid-authentication&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;{&#xA;    &amp;#34;data&amp;#34;: null,&#xA;    &amp;#34;error&amp;#34;: {&#xA;        &amp;#34;status&amp;#34;: 401,&#xA;        &amp;#34;name&amp;#34;: &amp;#34;UnauthorizedError&amp;#34;,&#xA;        &amp;#34;message&amp;#34;: &amp;#34;Missing or invalid credentials&amp;#34;,&#xA;        &amp;#34;details&amp;#34;: {}&#xA;    }&#xA;}&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h2 class=&#34;heading-element&#34; id=&#34;multiple-errors&#34;&gt;&lt;span&gt;Multiple Errors&lt;/span&gt;&#xA;  &lt;a href=&#34;#multiple-errors&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&lt;h3 class=&#34;heading-element&#34; id=&#34;name-and-title-must-be-defined&#34;&gt;&lt;span&gt;Name and Title Must Be Defined&lt;/span&gt;&#xA;  &lt;a href=&#34;#name-and-title-must-be-defined&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;{&#xA;    &amp;#34;data&amp;#34;: null,&#xA;    &amp;#34;error&amp;#34;: {&#xA;        &amp;#34;status&amp;#34;: 400,&#xA;        &amp;#34;name&amp;#34;: &amp;#34;ValidationError&amp;#34;,&#xA;        &amp;#34;message&amp;#34;: &amp;#34;2 errors occurred&amp;#34;,&#xA;        &amp;#34;details&amp;#34;: {&#xA;            &amp;#34;errors&amp;#34;: [&#xA;                {&#xA;                    &amp;#34;path&amp;#34;: [&amp;#34;name&amp;#34;],&#xA;                    &amp;#34;message&amp;#34;: &amp;#34;name must be defined.&amp;#34;,&#xA;                    &amp;#34;name&amp;#34;: &amp;#34;ValidationError&amp;#34;&#xA;                },&#xA;                {&#xA;                    &amp;#34;path&amp;#34;: [&amp;#34;title&amp;#34;],&#xA;                    &amp;#34;message&amp;#34;: &amp;#34;title must be defined.&amp;#34;,&#xA;                    &amp;#34;name&amp;#34;: &amp;#34;ValidationError&amp;#34;&#xA;                }&#xA;            ]&#xA;        }&#xA;    }&#xA;}&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h2 class=&#34;heading-element&#34; id=&#34;field-specific-validation-errors&#34;&gt;&lt;span&gt;Field-Specific Validation Errors&lt;/span&gt;&#xA;  &lt;a href=&#34;#field-specific-validation-errors&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&lt;h3 class=&#34;heading-element&#34; id=&#34;field-too-short&#34;&gt;&lt;span&gt;Field Too Short&lt;/span&gt;&#xA;  &lt;a href=&#34;#field-too-short&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;{&#xA;  &amp;#34;placement&amp;#34;: &amp;#34;field&amp;#34;,&#xA;  &amp;#34;title&amp;#34;: &amp;#34;value too short&amp;#34;,&#xA;  &amp;#34;detail&amp;#34;: &amp;#34;field username must be at least 4 symbols&amp;#34;,&#xA;  &amp;#34;location&amp;#34;: &amp;#34;username&amp;#34;,&#xA;  &amp;#34;field&amp;#34;: &amp;#34;username&amp;#34;,&#xA;  &amp;#34;code&amp;#34;: &amp;#34;validation.min&amp;#34;,&#xA;  &amp;#34;expression&amp;#34;: &amp;#34;min&amp;#34;,&#xA;  &amp;#34;argument&amp;#34;: &amp;#34;4&amp;#34;,&#xA;  &amp;#34;traceid&amp;#34;: &amp;#34;74681b27-b1ea-454d-9847-d27059e19119&amp;#34;,&#xA;  &amp;#34;stacktraces&amp;#34;: [&#xA; {&#xA;   &amp;#34;file&amp;#34;: &amp;#34;model/response.go&amp;#34;,&#xA;   &amp;#34;function&amp;#34;: &amp;#34;model.(*ErrorMessage).LogStacktraceWithErr&amp;#34;,&#xA;   &amp;#34;linenumber&amp;#34;: 22,&#xA;   &amp;#34;realerror&amp;#34;: null&#xA; },&#xA; {&#xA;   &amp;#34;file&amp;#34;: &amp;#34;helpers/validator.go&amp;#34;,&#xA;   &amp;#34;function&amp;#34;: &amp;#34;helpers.Validator&amp;#34;,&#xA;   &amp;#34;linenumber&amp;#34;: 58,&#xA;   &amp;#34;realerror&amp;#34;: null&#xA; },&#xA; {&#xA;   &amp;#34;file&amp;#34;: &amp;#34;handlers/registration.go&amp;#34;,&#xA;   &amp;#34;function&amp;#34;: &amp;#34;handlers.RegistrationHandler&amp;#34;,&#xA;   &amp;#34;linenumber&amp;#34;: 61,&#xA;   &amp;#34;realerror&amp;#34;: null&#xA; }&#xA;  ]&#xA;}&lt;/code&gt;&lt;/pre&gt;&lt;h3 class=&#34;heading-element&#34; id=&#34;password-and-confirm-password-must-match&#34;&gt;&lt;span&gt;Password and Confirm Password Must Match&lt;/span&gt;&#xA;  &lt;a href=&#34;#password-and-confirm-password-must-match&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;{&#xA;  &amp;#34;placement&amp;#34;: &amp;#34;field&amp;#34;,&#xA;  &amp;#34;title&amp;#34;: &amp;#34;must be equal&amp;#34;,&#xA;  &amp;#34;detail&amp;#34;: &amp;#34;field password is not equal to field confirmpassword&amp;#34;,&#xA;  &amp;#34;location&amp;#34;: &amp;#34;password&amp;#34;,&#xA;  &amp;#34;field&amp;#34;: &amp;#34;password&amp;#34;,&#xA;  &amp;#34;code&amp;#34;: &amp;#34;validation.equal&amp;#34;,&#xA;  &amp;#34;expression&amp;#34;: &amp;#34;equal&amp;#34;,&#xA;  &amp;#34;argument&amp;#34;: &amp;#34;confirmpassword&amp;#34;,&#xA;  &amp;#34;traceid&amp;#34;: &amp;#34;e017ecb2-d72f-4f79-889f-6c42126970a8&amp;#34;,&#xA;  &amp;#34;stacktraces&amp;#34;: [&#xA; {&#xA;   &amp;#34;file&amp;#34;: &amp;#34;model/response.go&amp;#34;,&#xA;   &amp;#34;function&amp;#34;: &amp;#34;model.(*ErrorMessage).LogStacktraceWithErr&amp;#34;,&#xA;   &amp;#34;linenumber&amp;#34;: 22,&#xA;   &amp;#34;realerror&amp;#34;: null&#xA; },&#xA; {&#xA;   &amp;#34;file&amp;#34;: &amp;#34;helpers/validator.go&amp;#34;,&#xA;   &amp;#34;function&amp;#34;: &amp;#34;helpers.Validator&amp;#34;,&#xA;   &amp;#34;linenumber&amp;#34;: 58,&#xA;   &amp;#34;realerror&amp;#34;: null&#xA; },&#xA; {&#xA;   &amp;#34;file&amp;#34;: &amp;#34;handlers/registration.go&amp;#34;,&#xA;   &amp;#34;function&amp;#34;: &amp;#34;handlers.RegistrationHandler&amp;#34;,&#xA;   &amp;#34;linenumber&amp;#34;: 61,&#xA;   &amp;#34;realerror&amp;#34;: null&#xA; }&#xA;  ]&#xA;}&lt;/code&gt;&lt;/pre&gt;&lt;h3 class=&#34;heading-element&#34; id=&#34;incorrect-email-format&#34;&gt;&lt;span&gt;Incorrect Email Format&lt;/span&gt;&#xA;  &lt;a href=&#34;#incorrect-email-format&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;{&#xA;  &amp;#34;placement&amp;#34;: &amp;#34;field&amp;#34;,&#xA;  &amp;#34;title&amp;#34;: &amp;#34;incorrect email format&amp;#34;,&#xA;  &amp;#34;detail&amp;#34;: &amp;#34;field email has incorrect value&amp;#34;,&#xA;  &amp;#34;location&amp;#34;: &amp;#34;email&amp;#34;,&#xA;  &amp;#34;field&amp;#34;: &amp;#34;email&amp;#34;,&#xA;  &amp;#34;code&amp;#34;: &amp;#34;validation.email&amp;#34;,&#xA;  &amp;#34;expression&amp;#34;: null,&#xA;  &amp;#34;argument&amp;#34;: null,&#xA;  &amp;#34;traceid&amp;#34;: &amp;#34;cecda6b8-7ce8-4054-8c06-9382320afd78&amp;#34;,&#xA;  &amp;#34;stacktraces&amp;#34;: [&#xA; {&#xA;   &amp;#34;file&amp;#34;: &amp;#34;model/response.go&amp;#34;,&#xA;   &amp;#34;function&amp;#34;: &amp;#34;model.(*ErrorMessage).LogStacktraceWithErr&amp;#34;,&#xA;   &amp;#34;linenumber&amp;#34;: 22,&#xA;   &amp;#34;realerror&amp;#34;: null&#xA; },&#xA; {&#xA;   &amp;#34;file&amp;#34;: &amp;#34;helpers/validator.go&amp;#34;,&#xA;   &amp;#34;function&amp;#34;: &amp;#34;helpers.Validator&amp;#34;,&#xA;   &amp;#34;linenumber&amp;#34;: 58,&#xA;   &amp;#34;realerror&amp;#34;: null&#xA; },&#xA; {&#xA;   &amp;#34;file&amp;#34;: &amp;#34;handlers/registration.go&amp;#34;,&#xA;   &amp;#34;function&amp;#34;: &amp;#34;handlers.RegistrationHandler&amp;#34;,&#xA;   &amp;#34;linenumber&amp;#34;: 61,&#xA;   &amp;#34;realerror&amp;#34;: null&#xA; }&#xA;  ]&#xA;}&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;p&gt;These error responses provide a consistent structure, making it easier for clients to handle errors programmatically and display meaningful messages to users.&lt;/p&gt;</description>
    </item>
    <item>
      <title>REST API Testing Strategy What Exactly Should You Test</title>
      <link>https://dimasmaulana.pages.dev/posts/development/rest-api-testing-strategy-what-exactly-should-you-test/</link>
      <pubDate>Sat, 19 Feb 2022 17:01:42 +0700</pubDate>
      <guid>https://dimasmaulana.pages.dev/posts/development/rest-api-testing-strategy-what-exactly-should-you-test/</guid>
      <category domain="https://dimasmaulana.pages.dev/categories/development/">Development</category>
      <description>&lt;p&gt;API testing is a crucial part of software quality assurance, ensuring that APIs function correctly, securely, and efficiently. This guide details key test actions, test scenario categories, and test flows to ensure a thorough validation of API behavior.&lt;/p&gt;&#xA;&lt;h2 class=&#34;heading-element&#34; id=&#34;api-test-actions&#34;&gt;&lt;span&gt;API Test Actions&lt;/span&gt;&#xA;  &lt;a href=&#34;#api-test-actions&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&lt;p&gt;Each API test involves several key actions:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
