<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>OpenTiendas{.dev} Portal Blog</title>
        <link>https://opentiendas.dev/blog</link>
        <description>OpenTiendas{.dev} Portal Blog</description>
        <lastBuildDate>Tue, 07 Apr 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Webhook payload update & new order events]]></title>
            <link>https://opentiendas.dev/blog/webhook-envelope-and-order-events</link>
            <guid>https://opentiendas.dev/blog/webhook-envelope-and-order-events</guid>
            <pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[OpenTiendas webhooks have been updated to provide a more robust and scalable event model for external integrations.]]></description>
            <content:encoded><![CDATA[<p>OpenTiendas webhooks have been updated to provide a more robust and scalable event model for external integrations.</p>
<p>This release introduces a <strong>new webhook envelope format</strong> shared across all events, making it easier to implement <strong>idempotency</strong>, consume multiple event types from a single endpoint, and clearly separate event metadata from resource data.</p>
<p>It also adds the first <strong>Order webhooks</strong>, allowing external systems to react in real time to key order lifecycle changes.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-unified-webhook-envelope-for-all-events">A unified webhook envelope for all events<a href="https://opentiendas.dev/blog/webhook-envelope-and-order-events#a-unified-webhook-envelope-for-all-events" class="hash-link" aria-label="Direct link to A unified webhook envelope for all events" title="Direct link to A unified webhook envelope for all events" translate="no">​</a></h2>
<p>All OpenTiendas webhooks now use a common payload structure.</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"event_id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"evt_123"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"order.created"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"created_at"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2026-03-16T10:12:33Z"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"data"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>This new format introduces:</p>
<ul>
<li class=""><code>event_id</code>: a unique event identifier, useful for implementing <strong>idempotency</strong></li>
<li class=""><code>type</code>: the event type, allowing consumers to process multiple webhook types from the same destination URL</li>
<li class=""><code>created_at</code>: the timestamp indicating when the event was generated, useful for logging, debugging, and event tracing.</li>
<li class=""><code>data</code>: the resource payload associated with the event</li>
</ul>
<p>This change applies to <strong>all webhooks</strong>, including already existing ones such as:</p>
<ul>
<li class=""><code>review.created</code></li>
<li class=""><code>review.published</code></li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-this-change-matters">Why this change matters<a href="https://opentiendas.dev/blog/webhook-envelope-and-order-events#why-this-change-matters" class="hash-link" aria-label="Direct link to Why this change matters" title="Direct link to Why this change matters" translate="no">​</a></h2>
<p>The new envelope structure makes webhook integrations more reliable and easier to scale.</p>
<p>It allows integrators to:</p>
<ul>
<li class="">Detect and ignore duplicate deliveries using the <code>event_id</code></li>
<li class="">Route logic based on <code>type</code> without requiring separate endpoints</li>
<li class="">Keep event metadata separated from the actual business resource</li>
<li class="">Standardize webhook handling across all current and future event types</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-order-webhooks">New order webhooks<a href="https://opentiendas.dev/blog/webhook-envelope-and-order-events#new-order-webhooks" class="hash-link" aria-label="Direct link to New order webhooks" title="Direct link to New order webhooks" translate="no">​</a></h2>
<p>With the Orders resource now available, OpenTiendas also introduces new webhook events related to the order lifecycle.</p>
<p>These events allow external systems such as ERPs, fulfillment tools, or automation workflows to react in real time to key order state changes.</p>
<p>The following events are now available:</p>
<ul>
<li class=""><code>order.created</code></li>
<li class=""><code>order.paid</code></li>
<li class=""><code>order.fulfilled</code></li>
<li class=""><code>order.canceled</code></li>
</ul>
<p>You can find the full list of available Order events, payload examples, and event-specific notes in the webhook reference:</p>
<p>👉 <a class="" href="https://opentiendas.dev/docs/webhooks/events-reference">Webhook Events Reference</a></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="documentation-updates">Documentation updates<a href="https://opentiendas.dev/blog/webhook-envelope-and-order-events#documentation-updates" class="hash-link" aria-label="Direct link to Documentation updates" title="Direct link to Documentation updates" translate="no">​</a></h2>
<p>The developer documentation has been updated accordingly.</p>
<p>👉 <a class="" href="https://opentiendas.dev/docs/webhooks">Webhooks</a></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next">What's next<a href="https://opentiendas.dev/blog/webhook-envelope-and-order-events#whats-next" class="hash-link" aria-label="Direct link to What's next" title="Direct link to What's next" translate="no">​</a></h2>
<p>With the webhook system now standardized and Order events available, upcoming improvements will focus on:</p>
<ul>
<li class="">Expanding API coverage to support broader ERP and integration use cases</li>
<li class="">Continuing to evolve the API as a robust integration platform</li>
</ul>
<p>👉 <a class="" href="https://opentiendas.dev/docs/api">API Overview</a></p>]]></content:encoded>
            <category>Webhooks</category>
        </item>
        <item>
            <title><![CDATA[Orders API & advanced catalog operations]]></title>
            <link>https://opentiendas.dev/blog/api-orders-and-advanced-catalog-operations</link>
            <guid>https://opentiendas.dev/blog/api-orders-and-advanced-catalog-operations</guid>
            <pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The OpenTiendas API continues to expand with a new set of capabilities focused on order retrieval and advanced catalog management workflows.]]></description>
            <content:encoded><![CDATA[<p>The OpenTiendas API continues to expand with a new set of capabilities focused on <strong>order retrieval and advanced catalog management workflows</strong>.</p>
<p>This release introduces Orders endpoints, enabling integrations of order data with external systems, extends the catalog API with new bulk operations, improved filtering, and better integration tools for PIMs and ERPs, and makes the API available in <strong>OpenAPI format</strong> for use with AI tools and standard API tooling.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="orders-api-retrieve-and-synchronize-orders">Orders API: retrieve and synchronize orders<a href="https://opentiendas.dev/blog/api-orders-and-advanced-catalog-operations#orders-api-retrieve-and-synchronize-orders" class="hash-link" aria-label="Direct link to Orders API: retrieve and synchronize orders" title="Direct link to Orders API: retrieve and synchronize orders" translate="no">​</a></h2>
<p>OpenTiendas now provides endpoints to <strong>retrieve orders from external systems</strong>, enabling integrations with ERPs, logistics platforms, and other management tools.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="get-order">Get Order<a href="https://opentiendas.dev/blog/api-orders-and-advanced-catalog-operations#get-order" class="hash-link" aria-label="Direct link to Get Order" title="Direct link to Get Order" translate="no">​</a></h3>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">GET /api/v1/orders/{id}</span><br></span></code></pre></div></div>
<p>Retrieve a specific order with detailed information, including:</p>
<ul>
<li class="">Customer data</li>
<li class="">Billing and shipping addresses</li>
<li class="">Product lines</li>
<li class="">Amounts and totals</li>
<li class="">Payment status</li>
<li class="">Fulfillment status</li>
</ul>
<p>This endpoint is designed for systems that need to <strong>consult individual orders in real time</strong>.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="list-orders">List Orders<a href="https://opentiendas.dev/blog/api-orders-and-advanced-catalog-operations#list-orders" class="hash-link" aria-label="Direct link to List Orders" title="Direct link to List Orders" translate="no">​</a></h3>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">GET /api/v1/orders</span><br></span></code></pre></div></div>
<p>Retrieve a <strong>paginated list of orders</strong> with support for filtering and sorting.</p>
<p>Supported filters include:</p>
<ul>
<li class="">Creation date</li>
<li class="">Payment date</li>
<li class="">Fulfillment date</li>
<li class="">Payment status</li>
<li class="">Payment method</li>
<li class="">Delivery method</li>
</ul>
<p>This enables <strong>order synchronization workflows</strong> with external systems.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bulk-updates-at-variant-level">Bulk updates at variant level<a href="https://opentiendas.dev/blog/api-orders-and-advanced-catalog-operations#bulk-updates-at-variant-level" class="hash-link" aria-label="Direct link to Bulk updates at variant level" title="Direct link to Bulk updates at variant level" translate="no">​</a></h2>
<p>To improve catalog synchronization, a new endpoint allows <strong>bulk updates directly on product variants</strong>.</p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">POST /api/v1/variants/bulk-update</span><br></span></code></pre></div></div>
<p>Key characteristics:</p>
<ul>
<li class="">Operates directly at <strong>variant level</strong></li>
<li class="">Designed for updating <strong>price, stock, and variant-specific attributes</strong></li>
<li class="">Supports multiple matching strategies:<!-- -->
<ul>
<li class=""><code>id</code></li>
<li class=""><code>internal_id</code></li>
<li class=""><code>ean</code></li>
<li class=""><code>sku + supplier</code></li>
</ul>
</li>
</ul>
<p>Unlike the product bulk upsert, this endpoint allows updating specific variant data (such as price or stock) without modifying the overall product structure.</p>
<p>As with other bulk operations, processing is <strong>asynchronous</strong>, generating a background Job.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="link-products-with-external-systems">Link products with external systems<a href="https://opentiendas.dev/blog/api-orders-and-advanced-catalog-operations#link-products-with-external-systems" class="hash-link" aria-label="Direct link to Link products with external systems" title="Direct link to Link products with external systems" translate="no">​</a></h2>
<p>A new endpoint allows linking existing OpenTiendas catalog products/variants with external systems.</p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">POST /api/v1/catalog/link-ids</span><br></span></code></pre></div></div>
<p>This endpoint enables updating the <code>internal_id</code> of products and variants using matching strategies such as:</p>
<ul>
<li class=""><code>ean</code></li>
<li class=""><code>sku + supplier</code></li>
</ul>
<p>It is especially useful for:</p>
<ul>
<li class="">Initial ERP or PIM integrations</li>
<li class="">Migrating existing catalogs without recreating products</li>
<li class="">Establishing a persistent mapping between systems</li>
</ul>
<p>Once linked, external systems can rely on <code>internal_id</code> for future updates.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="improvements-in-product-filtering">Improvements in product filtering<a href="https://opentiendas.dev/blog/api-orders-and-advanced-catalog-operations#improvements-in-product-filtering" class="hash-link" aria-label="Direct link to Improvements in product filtering" title="Direct link to Improvements in product filtering" translate="no">​</a></h2>
<p>The <strong>List Products</strong> endpoint now includes enhanced filtering capabilities.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="filter-by-slug">Filter by slug<a href="https://opentiendas.dev/blog/api-orders-and-advanced-catalog-operations#filter-by-slug" class="hash-link" aria-label="Direct link to Filter by slug" title="Direct link to Filter by slug" translate="no">​</a></h3>
<p>Products can now be retrieved using their public identifier:</p>
<ul>
<li class="">Filter by a single slug</li>
<li class="">Filter by multiple slugs in a single request</li>
</ul>
<p>This improvement also applies to other resources that support slug filtering, such as <strong>categories and brands</strong>.</p>
<p>This makes it easier to integrate with systems that rely on <strong>public URLs as identifiers</strong>.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="openapi-documentation-for-ai-tools">OpenAPI documentation for AI tools<a href="https://opentiendas.dev/blog/api-orders-and-advanced-catalog-operations#openapi-documentation-for-ai-tools" class="hash-link" aria-label="Direct link to OpenAPI documentation for AI tools" title="Direct link to OpenAPI documentation for AI tools" translate="no">​</a></h2>
<p>The OpenTiendas API documentation can now be downloaded in <strong>OpenAPI format</strong>, making it easier to use with AI-assisted development tools and standard API tooling.</p>
<p>👉 <a class="" href="https://opentiendas.dev/docs/api/api-reference">API Reference</a></p>
<p>This enables:</p>
<ul>
<li class="">Using the API specification as context in tools like ChatGPT or Claude to generate code, queries, or integrations</li>
<li class="">Importing the API into tools such as Postman or Insomnia to explore and test endpoints</li>
<li class="">Automatically generating client code</li>
</ul>
<p>This improvement is designed to <strong>accelerate integration development</strong>, allowing AI tools and developers to understand the API precisely and generate valid requests based on its specification.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="slug-management-via-api">Slug management via API<a href="https://opentiendas.dev/blog/api-orders-and-advanced-catalog-operations#slug-management-via-api" class="hash-link" aria-label="Direct link to Slug management via API" title="Direct link to Slug management via API" translate="no">​</a></h2>
<p>It is now possible to <strong>modify the base slug (<code>slug_base</code>)</strong> via API for:</p>
<ul>
<li class="">Products</li>
<li class="">Categories</li>
<li class="">Brands</li>
</ul>
<p>Keep in mind:</p>
<p>Updating the slug will modify the public URL and may impact SEO (existing links and indexed pages).</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="background-jobs">Background Jobs<a href="https://opentiendas.dev/blog/api-orders-and-advanced-catalog-operations#background-jobs" class="hash-link" aria-label="Direct link to Background Jobs" title="Direct link to Background Jobs" translate="no">​</a></h2>
<p>All bulk operations continue to rely on the <strong>background Jobs system</strong>, ensuring safe processing of large updates without affecting store performance.</p>
<p>Jobs provide:</p>
<ul>
<li class="">Asynchronous execution</li>
<li class="">Status tracking</li>
<li class="">Logs and result inspection</li>
</ul>
<p>You can monitor Jobs in the backoffice:</p>
<p><strong>Settings → Advanced Options → Jobs</strong></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next">What's next<a href="https://opentiendas.dev/blog/api-orders-and-advanced-catalog-operations#whats-next" class="hash-link" aria-label="Direct link to What's next" title="Direct link to What's next" translate="no">​</a></h2>
<p>With Orders now available and catalog operations becoming more flexible, upcoming improvements will focus on:</p>
<ul>
<li class="">Expanding order management capabilities</li>
<li class="">Improving real-time synchronization flows</li>
<li class="">Enhancing bulk operations performance and coverage</li>
<li class="">Continuing to evolve the API as a robust integration platform</li>
</ul>
<p>👉 <a class="" href="https://opentiendas.dev/docs/api">API Overview</a></p>]]></content:encoded>
            <category>API</category>
        </item>
        <item>
            <title><![CDATA[Product listing & bulk product updates]]></title>
            <link>https://opentiendas.dev/blog/api-products-listing-and-first-bulk-operations</link>
            <guid>https://opentiendas.dev/blog/api-products-listing-and-first-bulk-operations</guid>
            <pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The OpenTiendas API continues to evolve with a major step forward for catalog integrations.]]></description>
            <content:encoded><![CDATA[<p>The OpenTiendas API continues to evolve with a major step forward for catalog integrations.</p>
<p>This release introduces several foundational capabilities that significantly expand what can be built on top of the API: <strong>product listing with filtering and sorting and bulk catalog updates prepared for ERP and PIM integrations</strong>.</p>
<p>Alongside these endpoints, we’re also introducing a <strong>new background Jobs system</strong>, allowing the platform to safely process large asynchronous tasks such as mass catalog updates.</p>
<p>Together, these changes represent an important milestone in making the OpenTiendas API <strong>scalable, predictable, and ready for large external system integrations</strong>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="list-products-with-filtering-and-sorting">List Products with filtering and sorting<a href="https://opentiendas.dev/blog/api-products-listing-and-first-bulk-operations#list-products-with-filtering-and-sorting" class="hash-link" aria-label="Direct link to List Products with filtering and sorting" title="Direct link to List Products with filtering and sorting" translate="no">​</a></h2>
<p>A new endpoint allows retrieving products from the catalog with <strong>pagination, filtering, and sorting</strong>.</p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">GET /api/v1/products</span><br></span></code></pre></div></div>
<p>It supports filtering by common catalog attributes such as brand, category, supplier or product structure.</p>
<p>For the complete list of supported filters, sorting options, and query parameters, see the <a class="" href="https://opentiendas.dev/docs/api/api-reference#tag/Products/operation/List%20Products">List Products API reference</a>.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bulk-product-upsert">Bulk product upsert<a href="https://opentiendas.dev/blog/api-products-listing-and-first-bulk-operations#bulk-product-upsert" class="hash-link" aria-label="Direct link to Bulk product upsert" title="Direct link to Bulk product upsert" translate="no">​</a></h2>
<p>Large catalogs are often managed in external systems such as <strong>PIMs or ERPs</strong>.</p>
<p>To support these workflows, we've introduced the <strong>bulk product upsert endpoint</strong>:</p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">POST /api/v1/products_bulk_upsert</span><br></span></code></pre></div></div>
<p>This endpoint allows clients to <strong>create or update products and variants in bulk</strong>.</p>
<p>Important characteristics:</p>
<ul>
<li class="">Asynchronous processing</li>
<li class="">Supports both product and variant updates</li>
<li class="">Suitable for full or partial catalog synchronization from external systems</li>
</ul>
<p>Instead of processing the entire request synchronously, the API creates a <strong>background job</strong> that performs the operation.</p>
<p>For the complete request structure and supported fields, see the <a class="" href="https://opentiendas.dev/docs/api/api-reference#tag/Products/operation/Bulk%20Upsert%20Products">Bulk Product Upsert operation in the API reference</a>.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="background-jobs-system">Background Jobs system<a href="https://opentiendas.dev/blog/api-products-listing-and-first-bulk-operations#background-jobs-system" class="hash-link" aria-label="Direct link to Background Jobs system" title="Direct link to Background Jobs system" translate="no">​</a></h2>
<p>Bulk operations through the API require a safe way to process large tasks without affecting store performance.</p>
<p>OpenTiendas now includes a <strong>background Jobs system</strong> designed to support <strong>API-triggered asynchronous operations</strong>.</p>
<p>When an asynchronous operation is triggered (such as <code>products_bulk_upsert</code>), the API creates a <strong>Job</strong> responsible for executing the task.</p>
<p>Jobs provide:</p>
<ul>
<li class="">Background execution of heavy operations</li>
<li class="">Status monitoring</li>
<li class="">Execution logs</li>
<li class="">Result inspection</li>
</ul>
<p>A new <strong>Jobs section</strong> is available in the backoffice under: Settings → Advanced Options → Jobs</p>
<p>From this interface, administrators can inspect running tasks, review logs, and check the outcome of these async API operations.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next">What's next<a href="https://opentiendas.dev/blog/api-products-listing-and-first-bulk-operations#whats-next" class="hash-link" aria-label="Direct link to What's next" title="Direct link to What's next" translate="no">​</a></h2>
<p>With product retrieval and bulk catalog updates in place, the next steps focus on:</p>
<ul>
<li class="">Direct access to list product variants.</li>
<li class="">Improving catalog synchronization workflows.</li>
<li class="">Bulk updates at the variant level to support additional integration scenarios.</li>
<li class="">Expanding the API with Orders.</li>
</ul>
<p>👉 <a class="" href="https://opentiendas.dev/docs/api">API Overview</a></p>]]></content:encoded>
            <category>API</category>
        </item>
        <item>
            <title><![CDATA[First Products Endpoint, Clear Localization Rules & Predictable API Responses]]></title>
            <link>https://opentiendas.dev/blog/api-products-localization-fields</link>
            <guid>https://opentiendas.dev/blog/api-products-localization-fields</guid>
            <pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[After a few months of groundwork and internal alignment, we’re shipping one of the most important milestones of the OpenTiendas API so far: the first Products endpoint is live.]]></description>
            <content:encoded><![CDATA[<p>After a few months of groundwork and internal alignment, we’re shipping one of the most important milestones of the OpenTiendas API so far: <strong>the first Products endpoint is live</strong>.</p>
<p>Alongside it, we’ve formalized and documented the core rules around <strong>localization, markets, field selection, and response shape</strong> that apply consistently across the API.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="first-catalog-endpoint-get-product">First catalog endpoint: Get Product<a href="https://opentiendas.dev/blog/api-products-localization-fields#first-catalog-endpoint-get-product" class="hash-link" aria-label="Direct link to First catalog endpoint: Get Product" title="Direct link to First catalog endpoint: Get Product" translate="no">​</a></h2>
<p>We’ve released the first Products API endpoint:</p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">GET /api/v1/products/{id}</span><br></span></code></pre></div></div>
<p>This endpoint supports both <strong>simple products</strong> and <strong>products with variants</strong>.</p>
<p>Key characteristics:</p>
<ul>
<li class="">One endpoint for simple and multi-variant products</li>
<li class="">Explicit and unambiguous schema</li>
<li class="">Deterministic localization and pricing behavior</li>
<li class="">Safe defaults for performance (variants preview capped at 50)</li>
</ul>
<p>This endpoint establishes the baseline design for all future catalog endpoints.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="no-more-accept-language">No more <code>Accept-Language</code><a href="https://opentiendas.dev/blog/api-products-localization-fields#no-more-accept-language" class="hash-link" aria-label="Direct link to no-more-accept-language" title="Direct link to no-more-accept-language" translate="no">​</a></h2>
<p>The <code>Accept-Language</code> header has been removed.</p>
<p>Localization is now controlled exclusively via the <strong><code>locales</code> query parameter</strong>:</p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">GET /api/v1/products/123?locales=es-ES,fr-FR</span><br></span></code></pre></div></div>
<ul>
<li class="">Multiple locales can be requested in a single call</li>
<li class="">All translatable fields are returned <strong>only</strong> under <code>translations</code></li>
<li class="">This behavior is consistent across Products, Categories, Brands, and Reviews</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="locale--market--prices">Locale → Market → Prices<a href="https://opentiendas.dev/blog/api-products-localization-fields#locale--market--prices" class="hash-link" aria-label="Direct link to Locale → Market → Prices" title="Direct link to Locale → Market → Prices" translate="no">​</a></h2>
<p>In OpenTiendas, a locale represents more than language.</p>
<ul>
<li class="">Each locale deterministically resolves to <strong>one pricing market</strong></li>
<li class="">Prices are returned under <code>prices</code>, keyed by market identifiers (<code>market_es</code>, <code>market_fr</code>, …)</li>
<li class="">Multiple locales may resolve to the same market</li>
</ul>
<p>This relationship is now explicitly documented and enforced.</p>
<p>👉 <a class="" href="https://opentiendas.dev/docs/api/i18n-content">Localization &amp; Markets</a></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixed-fields-default-fields-explicit-expansion">Fixed fields, default fields, explicit expansion<a href="https://opentiendas.dev/blog/api-products-localization-fields#fixed-fields-default-fields-explicit-expansion" class="hash-link" aria-label="Direct link to Fixed fields, default fields, explicit expansion" title="Direct link to Fixed fields, default fields, explicit expansion" translate="no">​</a></h2>
<p>All API resources now follow the same field model:</p>
<ul>
<li class=""><strong>Fixed fields</strong> are always returned (e.g. <code>id</code>)</li>
<li class=""><strong>Default fields</strong> form the minimal canonical representation</li>
<li class="">When <code>fields</code> is specified, only:<!-- -->
<ul>
<li class="">fixed fields, and</li>
<li class="">explicitly requested fields<br>
<!-- -->are returned</li>
</ul>
</li>
</ul>
<p>Each resource documents its fixed fields, default fields, and navigable relationships.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="one-rule-for-missing-empty-and-null">One rule for missing, empty, and null<a href="https://opentiendas.dev/blog/api-products-localization-fields#one-rule-for-missing-empty-and-null" class="hash-link" aria-label="Direct link to One rule for missing, empty, and null" title="Direct link to One rule for missing, empty, and null" translate="no">​</a></h2>
<p>The API enforces a single data presence contract everywhere:</p>
<ul>
<li class=""><strong>Missing field</strong> → not applicable</li>
<li class=""><strong>Empty value</strong> (<code>""</code>, <code>[]</code>, <code>{}</code>) → applicable but empty</li>
<li class=""><strong><code>null</code></strong> → explicitly unset or unknown</li>
</ul>
<p>This removes ambiguity and simplifies client-side logic.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next">What’s next<a href="https://opentiendas.dev/blog/api-products-localization-fields#whats-next" class="hash-link" aria-label="Direct link to What’s next" title="Direct link to What’s next" translate="no">​</a></h2>
<ul>
<li class="">Product list endpoints</li>
<li class="">Expanded variants access</li>
<li class="">Continued alignment across resources for filtering</li>
</ul>
<p>These changes lay the foundation for a predictable, scalable catalog API.</p>
<p>👉 <a class="" href="https://opentiendas.dev/docs/api">API Overview</a><br>
<!-- -->👉 <a class="" href="https://opentiendas.dev/docs/api/i18n-content">Localization &amp; Markets</a></p>]]></content:encoded>
            <category>API</category>
        </item>
        <item>
            <title><![CDATA[Reviews Filtering, Google Merchant Category & New API Docs Section]]></title>
            <link>https://opentiendas.dev/blog/api-reviews-filters-google-merchant-category</link>
            <guid>https://opentiendas.dev/blog/api-reviews-filters-google-merchant-category</guid>
            <pubDate>Fri, 23 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[We’re excited to be working on the OpenTiendas API again after a few busy months.]]></description>
            <content:encoded><![CDATA[<p>We’re excited to be working on the OpenTiendas API again after a few busy months.<br>
<!-- -->This update adds <strong>powerful filtering for Reviews</strong>, exposes <strong>Google Merchant Category on Categories</strong>, and introduces a <strong>new documentation section</strong> focused on Filtering &amp; sorting.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="reviews-filtering--sorting-on-list-endpoint">Reviews: Filtering &amp; sorting on list endpoint<a href="https://opentiendas.dev/blog/api-reviews-filters-google-merchant-category#reviews-filtering--sorting-on-list-endpoint" class="hash-link" aria-label="Direct link to Reviews: Filtering &amp; sorting on list endpoint" title="Direct link to Reviews: Filtering &amp; sorting on list endpoint" translate="no">​</a></h2>
<p>The <strong>List Reviews</strong> endpoint now supports <strong>filtering and sorting</strong> through explicit query parameters.</p>
<p>This makes it easier to:</p>
<ul>
<li class="">Build moderation and backoffice tooling</li>
<li class="">Sync subsets of reviews reliably</li>
<li class="">Query large datasets without extra client-side processing</li>
</ul>
<p>Filtering remains fully compatible with <strong>pagination</strong> and <strong>ordering</strong>.</p>
<p>Example:</p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">GET /api/v1/reviews?type=product&amp;product_id=2532&amp;status=published&amp;sort=rating_desc</span><br></span></code></pre></div></div>
<p>If you’re implementing filters, refer to our conventions and supported parameters in:</p>
<p>👉 <a class="" href="https://opentiendas.dev/docs/api/filtering-and-querying">Filtering &amp; Sorting</a></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="categories-google-merchant-category-field">Categories: Google Merchant Category field<a href="https://opentiendas.dev/blog/api-reviews-filters-google-merchant-category#categories-google-merchant-category-field" class="hash-link" aria-label="Direct link to Categories: Google Merchant Category field" title="Direct link to Categories: Google Merchant Category field" translate="no">​</a></h2>
<p>The Categories endpoint now exposes the <strong>Google Merchant Category</strong> field.</p>
<p>This improves catalog management for:</p>
<ul>
<li class="">Merchant Center feeds</li>
<li class="">Ads campaigns</li>
<li class="">External integrations that require taxonomy mapping</li>
</ul>
<p>By providing this field directly from the API, you can reduce external dependencies and avoid duplicating category mapping logic outside OpenTiendas.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next">What’s next?<a href="https://opentiendas.dev/blog/api-reviews-filters-google-merchant-category#whats-next" class="hash-link" aria-label="Direct link to What’s next?" title="Direct link to What’s next?" translate="no">​</a></h2>
<ul>
<li class="">More list endpoints adopting the same filtering conventions.</li>
<li class="">First version of the products endpoint.</li>
</ul>
<hr>
<p>Check out the updated <a class="" href="https://opentiendas.dev/docs/api">API documentation</a> and start using these improvements in your integrations.</p>]]></content:encoded>
            <category>API</category>
        </item>
        <item>
            <title><![CDATA[New API Endpoints, Permissions & Pagination!]]></title>
            <link>https://opentiendas.dev/blog/api-new-endpoints-permissions</link>
            <guid>https://opentiendas.dev/blog/api-new-endpoints-permissions</guid>
            <pubDate>Thu, 19 Jun 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[We're back with another exciting update to the OpenTiendas API!]]></description>
            <content:encoded><![CDATA[<p>We're back with another exciting update to the OpenTiendas API!<br>
<strong>New endpoints, smarter permissions, and consistent pagination are here.</strong> 🎉</p>
<p>This release enhances the API with access to suppliers, brands, and categories — setting the foundation for deeper catalog management and greater automation capabilities.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-endpoints">New endpoints<a href="https://opentiendas.dev/blog/api-new-endpoints-permissions#new-endpoints" class="hash-link" aria-label="Direct link to New endpoints" title="Direct link to New endpoints" translate="no">​</a></h2>
<p>You can now manage <strong>suppliers</strong>, <strong>brands</strong>, and <strong>categories</strong> directly through the OpenTiendas API.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="suppliers">Suppliers<a href="https://opentiendas.dev/blog/api-new-endpoints-permissions#suppliers" class="hash-link" aria-label="Direct link to Suppliers" title="Direct link to Suppliers" translate="no">​</a></h3>
<p>New endpoints for managing your suppliers:</p>
<ul>
<li class=""><code>GET /api/v1/suppliers/</code>: List all suppliers (paginated).</li>
<li class=""><code>GET /api/v1/suppliers/{id}</code>: Get a specific supplier.</li>
<li class=""><code>POST /api/v1/suppliers/</code>: Create a new supplier.</li>
<li class=""><code>PATCH /api/v1/suppliers/{id}</code>: Update supplier info.</li>
<li class=""><code>DELETE /api/v1/suppliers/{id}</code>: Permanently delete a supplier.</li>
</ul>
<p>Each supplier has fields like <code>name</code>, <code>internal_id</code>, and <code>description</code>.
The <code>internal_id</code> is unique per supplier and should be used for internal references.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="brands">Brands<a href="https://opentiendas.dev/blog/api-new-endpoints-permissions#brands" class="hash-link" aria-label="Direct link to Brands" title="Direct link to Brands" translate="no">​</a></h3>
<p>Manage brand data with full i18n support:</p>
<ul>
<li class=""><code>GET /api/v1/brands/</code></li>
<li class=""><code>GET /api/v1/brands/{id}</code></li>
<li class=""><code>POST /api/v1/brands/</code></li>
<li class=""><code>PATCH /api/v1/brands/{id}</code></li>
<li class=""><code>DELETE /api/v1/brands/{id}</code></li>
</ul>
<p>Brands include media, SEO metadata, and size guide files.<br>
<!-- -->All translatable fields (e.g., <code>name</code>, <code>description</code>, <code>body_html</code>) must be provided <strong>inside the <code>translations</code> block</strong> — even for the store’s main language.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="categories">Categories<a href="https://opentiendas.dev/blog/api-new-endpoints-permissions#categories" class="hash-link" aria-label="Direct link to Categories" title="Direct link to Categories" translate="no">​</a></h3>
<p>Categories are now fully accessible via API:</p>
<ul>
<li class=""><code>GET /api/v1/category/</code></li>
<li class=""><code>GET /api/v1/category/{id}</code></li>
<li class=""><code>POST /api/v1/category/</code></li>
<li class=""><code>PATCH /api/v1/category/{id}</code></li>
<li class=""><code>DELETE /api/v1/category/{id}</code></li>
</ul>
<p>As with brands, category endpoints support multilingual data through the <code>translations</code> block.<br>
<!-- -->Each category includes status (<code>published</code>/<code>unpublished</code>), <code>image_url</code>, and <code>parent_id</code>.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-global-permissions">New global permissions<a href="https://opentiendas.dev/blog/api-new-endpoints-permissions#new-global-permissions" class="hash-link" aria-label="Direct link to New global permissions" title="Direct link to New global permissions" translate="no">​</a></h2>
<p>We’ve introduced a new <strong>permission system</strong> for API keys.</p>
<p>When creating or editing an API key, you’ll now see a <strong>Permissions</strong> section with two global scopes:</p>
<ul>
<li class="">✅ <strong>Read access</strong></li>
<li class="">✅ <strong>Write access</strong></li>
</ul>
<p>These apply across all current and future endpoints.<br>
<!-- -->More granular domain-specific permissions (e.g., suppliers, brands, categories) will follow soon.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="consistent-pagination">Consistent pagination<a href="https://opentiendas.dev/blog/api-new-endpoints-permissions#consistent-pagination" class="hash-link" aria-label="Direct link to Consistent pagination" title="Direct link to Consistent pagination" translate="no">​</a></h2>
<p>All list endpoints (<code>GET</code> requests returning multiple items) now include a unified <code>pagination</code> block:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"data"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">...</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"pagination"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"current_page"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"per_page"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">50</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"total"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">250</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"total_pages"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"next_page_url"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"/api/v1/suppliers?page=3"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"previous_page_url"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"/api/v1/suppliers?page=1"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>This makes it easier to build consistent UIs or sync large datasets across pages.</p>
<p>👉 See the <a class="" href="https://opentiendas.dev/docs/api/pagination">pagination section in our API docs</a> for implementation details and best practices.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="i18n-contents">i18n contents<a href="https://opentiendas.dev/blog/api-new-endpoints-permissions#i18n-contents" class="hash-link" aria-label="Direct link to i18n contents" title="Direct link to i18n contents" translate="no">​</a></h2>
<p>We’ve now published our first i18n-ready content.
<strong>All translatable fields must be sent inside the <code>translations</code> block when creating or updating content through the API</strong></p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"translations"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"locale"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"en"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"New category"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"description"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Short text"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<p>Any translatable field (<code>name</code>, <code>description</code>, <code>body_html</code>, etc.) <strong>sent at the root level will be ignored or rejected</strong>.<br>
<!-- -->This applies to both create and update operations.</p>
<p>👉 Learn more in our <a class="" href="https://opentiendas.dev/docs/api/i18n-content">i18n handling documentation </a></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next">What’s next?<a href="https://opentiendas.dev/blog/api-new-endpoints-permissions#whats-next" class="hash-link" aria-label="Direct link to What’s next?" title="Direct link to What’s next?" translate="no">​</a></h2>
<ul>
<li class="">More endpoints for advanced catalog and order management.</li>
<li class="">Fine-grained permission scopes per domain.</li>
</ul>
<hr>
<p>Check out the updated <a class="" href="https://opentiendas.dev/docs/api">API documentation</a> and start integrating these new features today. 🚀</p>]]></content:encoded>
            <category>API</category>
        </item>
        <item>
            <title><![CDATA[OpenTiendas API is Here!]]></title>
            <link>https://opentiendas.dev/blog/api-infrastructure</link>
            <guid>https://opentiendas.dev/blog/api-infrastructure</guid>
            <pubDate>Sat, 07 Jun 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[We’re excited to announce an important milestone for OpenTiendas:]]></description>
            <content:encoded><![CDATA[<p>We’re excited to announce an important milestone for OpenTiendas:<br>
<strong>The OpenTiendas API infrastructure is now live!</strong> 🚀</p>
<p>This marks the beginning of a journey towards a more connected and automated e-commerce platform. While the initial endpoints are limited, the underlying infrastructure sets the stage for rapid future expansion.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-this-means">What this means<a href="https://opentiendas.dev/blog/api-infrastructure#what-this-means" class="hash-link" aria-label="Direct link to What this means" title="Direct link to What this means" translate="no">​</a></h2>
<p>The OpenTiendas API provides the foundation for developers to build integrations and automate workflows with their stores.<br>
<!-- -->With a RESTful design, standard HTTP methods, and JSON responses, it’s designed for simplicity and flexibility.</p>
<p>This initial release is focused on laying the groundwork. Expect more comprehensive endpoints, actions, and features in upcoming releases.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-highlights">Key highlights<a href="https://opentiendas.dev/blog/api-infrastructure#key-highlights" class="hash-link" aria-label="Direct link to Key highlights" title="Direct link to Key highlights" translate="no">​</a></h2>
<ul>
<li class=""><strong>Robust infrastructure</strong>: Built to support scalable and secure integrations.</li>
<li class=""><strong>API key authentication</strong>: Secure access to store data with role-based controls.</li>
<li class=""><strong>Shop-specific endpoints</strong>: Use <code>{SHOP_ID}</code> in the URL to target your store’s data.</li>
<li class=""><strong>RESTful design</strong>: Predictable URLs and standard HTTP methods.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next">What’s next?<a href="https://opentiendas.dev/blog/api-infrastructure#whats-next" class="hash-link" aria-label="Direct link to What’s next?" title="Direct link to What’s next?" translate="no">​</a></h2>
<p>This is just the beginning. Over the coming weeks, we plan to:</p>
<ul>
<li class="">Expand the available endpoints and actions (including POST, PATCH, DELETE).</li>
<li class="">Introduce fine-grained permissions and scopes for more control.</li>
<li class="">Improve performance and increase rate limits.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-get-started">How to get started<a href="https://opentiendas.dev/blog/api-infrastructure#how-to-get-started" class="hash-link" aria-label="Direct link to How to get started" title="Direct link to How to get started" translate="no">​</a></h2>
<p>1️⃣ Generate your <strong>API key</strong> in the OpenTiendas admin panel.<br>
<!-- -->2️⃣ Replace <code>{SHOP_ID}</code> with your store’s unique identifier.<br>
<!-- -->3️⃣ Start making requests to <code>https://{SHOP_ID}.opentiendas.app/api/v1</code>.<br>
<!-- -->4️⃣ Handle responses and errors according to best practices.</p>
<p>Check out our <a class="" href="https://opentiendas.dev/docs/api">API documentation</a> to get started.</p>
<hr>
<p>Stay tuned for updates as we expand the OpenTiendas API. 🚀</p>]]></content:encoded>
            <category>API</category>
        </item>
        <item>
            <title><![CDATA[Real-Time Integrations with Webhooks]]></title>
            <link>https://opentiendas.dev/blog/webhooks-infrastructure</link>
            <guid>https://opentiendas.dev/blog/webhooks-infrastructure</guid>
            <pubDate>Thu, 05 Jun 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[We’re thrilled to announce a major milestone for OpenTiendas:]]></description>
            <content:encoded><![CDATA[<p>We’re thrilled to announce a major milestone for OpenTiendas:<br>
<strong>The Webhooks Infrastructure is now live!</strong> 🚀</p>
<p>This means developers can now <strong>subscribe to real-time notifications</strong> of key events happening in their stores, paving the way for dynamic integrations and seamless workflows.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-are-webhooks">What are Webhooks?<a href="https://opentiendas.dev/blog/webhooks-infrastructure#what-are-webhooks" class="hash-link" aria-label="Direct link to What are Webhooks?" title="Direct link to What are Webhooks?" translate="no">​</a></h2>
<p>Webhooks allow OpenTiendas to notify your applications automatically when certain events occur.<br>
<!-- -->You can now <strong>receive instant updates via HTTP POST requests</strong> whenever relevant events happen.</p>
<p>This opens up a world of possibilities: syncing data, triggering workflows, sending alerts, and more.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="first-webhooks-a-test-launch">First Webhooks: A test launch<a href="https://opentiendas.dev/blog/webhooks-infrastructure#first-webhooks-a-test-launch" class="hash-link" aria-label="Direct link to First Webhooks: A test launch" title="Direct link to First Webhooks: A test launch" translate="no">​</a></h2>
<p>To kick things off, we’re launching with two initial webhook events for testing:</p>
<ul>
<li class=""><code>review.create</code>: triggered when a new review is created.</li>
<li class=""><code>review.publish</code>: triggered when a review is published.</li>
</ul>
<p>These events allow you to build features like:</p>
<ul>
<li class="">Notifying teams about new reviews.</li>
<li class="">Automatically updating your analytics or moderation systems.</li>
<li class="">Building integrations with other platforms based on review activity.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-this-is-important">Why this is important<a href="https://opentiendas.dev/blog/webhooks-infrastructure#why-this-is-important" class="hash-link" aria-label="Direct link to Why this is important" title="Direct link to Why this is important" translate="no">​</a></h2>
<p>This initial launch isn’t just about the two events—it’s about the <strong>infrastructure</strong>.<br>
<!-- -->We now have a <strong>robust webhook system</strong> in place, and we’re planning to <strong>rapidly expand</strong> the list of available events in the near future.</p>
<p>Expect support for orders, products, customers, inventory, and more, all with the same real-time capabilities.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="getting-started">Getting Started<a href="https://opentiendas.dev/blog/webhooks-infrastructure#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<p>1️⃣ <strong>Set up your webhook endpoint</strong> (a URL in your system to receive events).<br>
<!-- -->2️⃣ <strong>Register the webhook</strong> via the OpenTiendas dashboard.<br>
<!-- -->3️⃣ <strong>Listen for the <code>review.create</code> and <code>review.publish</code> events</strong>.<br>
<!-- -->4️⃣ <strong>Validate webhook signatures</strong> to ensure security.</p>
<p>For detailed setup instructions, visit our <a class="" href="https://opentiendas.dev/docs/webhooks">Webhooks Guide</a>.</p>
<hr>
<p>Stay tuned for more updates from the OpenTiendas team. Happy coding! 🎉</p>]]></content:encoded>
            <category>Webhooks</category>
        </item>
        <item>
            <title><![CDATA[Welcome developer]]></title>
            <link>https://opentiendas.dev/blog/welcome-opentiendas-developer-portal</link>
            <guid>https://opentiendas.dev/blog/welcome-opentiendas-developer-portal</guid>
            <pubDate>Fri, 30 May 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[OpenTiendas Banner]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="OpenTiendas Banner" src="data:image/png;base64,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" width="477" height="189" class="img_ev3q"></p>
<p>Welcome to the <strong>OpenTiendas Developer Portal</strong>! 🚀</p>
<p>We're excited to launch this platform to provide comprehensive documentation, developer resources, and updates for the <strong>OpenTiendas</strong> ecosystem.</p>
<p>Whether you're a merchant looking to integrate with OpenTiendas, a developer exploring the APIs, or a partner building custom solutions, this portal will be your go-to hub.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-opentiendas">What is OpenTiendas?<a href="https://opentiendas.dev/blog/welcome-opentiendas-developer-portal#what-is-opentiendas" class="hash-link" aria-label="Direct link to What is OpenTiendas?" title="Direct link to What is OpenTiendas?" translate="no">​</a></h2>
<p><strong>OpenTiendas</strong> is a <strong>hosted no-code All-in-One eCommerce platform</strong> that empowers businesses to create, manage, and grow successful online stores—without plugins, technical complexity or worrying about infrastructure.</p>
<p>As a <strong>SaaS (Software-as-a-Service)</strong> solution, OpenTiendas offers:</p>
<ul>
<li class="">🚀 Advanced eCommerce features ready to use</li>
<li class="">🔗 Native integrations with leading applications (Klaviyo, Stripe, PayPal, and more)</li>
<li class="">🌐 Robust APIs and webhooks for seamless integrations and expansion</li>
<li class="">🤝 A Partner-friendly ecosystem designed for agencies and developers</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="about-this-portal">About This Portal<a href="https://opentiendas.dev/blog/welcome-opentiendas-developer-portal#about-this-portal" class="hash-link" aria-label="Direct link to About This Portal" title="Direct link to About This Portal" translate="no">​</a></h2>
<p>This portal provides:</p>
<ul>
<li class="">🔗 <strong>Versioned API documentation</strong> and developer guides</li>
<li class="">📝 <strong>Dynamic blog posts</strong> with product announcements, API updates, and tips</li>
<li class="">📢 <strong>News and updates</strong> from the OpenTiendas engineering team</li>
<li class="">💡 <strong>Best practices and tutorials</strong> to help you succeed with OpenTiendas</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="getting-involved">Getting Involved<a href="https://opentiendas.dev/blog/welcome-opentiendas-developer-portal#getting-involved" class="hash-link" aria-label="Direct link to Getting Involved" title="Direct link to Getting Involved" translate="no">​</a></h2>
<p>Want to contribute or suggest content?<br>
<!-- -->Feel free to open a pull request or contact us via <a href="https://www.opentiendas.com/contacto" target="_blank" rel="noopener noreferrer" class="">our support channels</a>.</p>
<p>We’re building this platform <strong>for you</strong>, so your feedback is always welcome!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tags-and-more">Tags and More<a href="https://opentiendas.dev/blog/welcome-opentiendas-developer-portal#tags-and-more" class="hash-link" aria-label="Direct link to Tags and More" title="Direct link to Tags and More" translate="no">​</a></h2>
<p>This blog post is tagged with:</p>
<ul>
<li class=""><code>api</code></li>
<li class=""><code>webhooks</code></li>
<li class=""><code>updates</code></li>
<li class=""><code>css</code></li>
<li class=""><code>tips</code></li>
</ul>
<p>Stay tuned for more updates and happy coding! 🎉</p>]]></content:encoded>
            <category>Updates</category>
            <category>API</category>
            <category>Webhooks</category>
        </item>
    </channel>
</rss>