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. 🚀