Skip to main content

New API Endpoints, Permissions & Pagination!

· 3 min read
Albert Tiñena
Chief Technology Officer (CTO)
David Sancho
Principal Engineer & Technical Architect

We're back with another exciting update to the OpenTiendas API!
New endpoints, smarter permissions, and consistent pagination are here. 🎉

This release enhances the API with access to suppliers, brands, and categories — setting the foundation for deeper catalog management and greater automation capabilities.

New endpoints

You can now manage suppliers, brands, and categories directly through the OpenTiendas API.

Suppliers

New endpoints for managing your suppliers:

  • GET /api/v1/suppliers/: List all suppliers (paginated).
  • GET /api/v1/suppliers/{id}: Get a specific supplier.
  • POST /api/v1/suppliers/: Create a new supplier.
  • PATCH /api/v1/suppliers/{id}: Update supplier info.
  • DELETE /api/v1/suppliers/{id}: Permanently delete a supplier.

Each supplier has fields like name, internal_id, and description. The internal_id is unique per supplier and should be used for internal references.


Brands

Manage brand data with full i18n support:

  • GET /api/v1/brands/
  • GET /api/v1/brands/{id}
  • POST /api/v1/brands/
  • PATCH /api/v1/brands/{id}
  • DELETE /api/v1/brands/{id}

Brands include media, SEO metadata, and size guide files.
All translatable fields (e.g., name, description, body_html) must be provided inside the translations block — even for the store’s main language.


Categories

Categories are now fully accessible via API:

  • GET /api/v1/category/
  • GET /api/v1/category/{id}
  • POST /api/v1/category/
  • PATCH /api/v1/category/{id}
  • DELETE /api/v1/category/{id}

As with brands, category endpoints support multilingual data through the translations block.
Each category includes status (published/unpublished), image_url, and parent_id.


New global permissions

We’ve introduced a new permission system for API keys.

When creating or editing an API key, you’ll now see a Permissions section with two global scopes:

  • Read access
  • Write access

These apply across all current and future endpoints.
More granular domain-specific permissions (e.g., suppliers, brands, categories) will follow soon.


Consistent pagination

All list endpoints (GET requests returning multiple items) now include a unified pagination block:

{
"data": [...],
"pagination": {
"current_page": 2,
"per_page": 50,
"total": 250,
"total_pages": 5,
"next_page_url": "/api/v1/suppliers?page=3",
"previous_page_url": "/api/v1/suppliers?page=1"
}
}

This makes it easier to build consistent UIs or sync large datasets across pages.

👉 See the pagination section in our API docs for implementation details and best practices.


i18n contents

We’ve now published our first i18n-ready content. All translatable fields must be sent inside the translations block when creating or updating content through the API

{
"translations": [
{
"locale": "en",
"name": "New category",
"description": "Short text"
}
]
}

Any translatable field (name, description, body_html, etc.) sent at the root level will be ignored or rejected.
This applies to both create and update operations.

👉 Learn more in our i18n handling documentation


What’s next?

  • More endpoints for advanced catalog and order management.
  • Fine-grained permission scopes per domain.

Check out the updated API documentation and start integrating these new features today. 🚀