SEO History Endpoint: 301 Redirects
v2.6.0 · CRUD · SEO Redirects
SEO History
Manage 301 redirects via API. SEO history entries are also automatically created when the ` seo_name` changes during a product or category import.
GET /Export/JSON/seohistory
POST /Import/JSON/seohistory
PUT /Import/JSON/seohistory
DELETE /Delete/JSON/seohistory/{id}Endpoints
| Method | Endpoint | Scope | Description |
|---|---|---|---|
| GET | /Export/JSON/seohistory | seohistory:read | List all SEO redirects |
| GET | /Export/JSON/seohistory/{id} | seohistory:read | Single Redirect |
| POST | /Import/JSON/seohistory | seohistory:write | Create a new redirect |
| PUT | /Import/JSON/seohistory | seohistory:write | Update existing redirect |
| DELETE | /Delete/JSON/seohistory/{id} | seohistory:delete | Delete individually by ID |
| DELETE | /Delete/JSON/seohistory | seohistory:delete | Bulk/Filter Deletion |
Query Filter (GET)
| Parameter | Description | Example |
|---|---|---|
?type= | Entity type (p=Product, c=Category, m=Manufacturer, s=CMS, n=News) | ?type=p |
?base_id= | Source entity ID | ?base_id=70 |
?language= | Language (ISO code or ID) | ?language=de |
Data Structure
Fields
| Field | Type | Description |
|---|---|---|
sh_id | INT | Primary Key |
sh_base_id | INT | ID of the source entity |
sh_base_type | ENUM | c=Category, s=CMS, m=Manufacturer, p=Product, n=News, o=Other |
sh_item_id | INT | ID of the target entity |
sh_item_type | ENUM | Type of the target entity (same values) |
sh_deletestamp | DATETIME | Automatic deletion (default: +1 year) |
Language fields
| Field | Type | Description |
|---|---|---|
sh_seo_string | VARCHAR(255) | Old SEO path (without domain, without leading slash) |
Request Examples
POST — New Redirect
{
"type": "seohistory",
"data": [{
"sh_base_id": 70,
"sh_base_type": "c",
"sh_item_id": 102,
"sh_item_type": "c",
"sh_deletestamp": "2027-02-24 00:00:00",
"languages": {
"de": {"sh_seo_string": "alte-kategorie/alte-unterkat"},
"en": {"sh_seo_string": "old-category/old-subcat"}
}
}]
}DELETE — Bulk & Filter
# Bulk via JSON body
DELETE /Delete/JSON/seohistory
{"sh_id": [42, 43, 44]}
# Clean up expired entries
DELETE /Delete/JSON/seohistory?expired=1
# Filter by type and source ID
DELETE /Delete/JSON/seohistory?type=p&base_id=123Auto-Redirect
Automatic SEO History Entries During Import
Automatic: If the
`seo_name` (or the name itself, with corresponding auto-regeneration) changes during a JSON import (PUT), an SEO history entry is automatically created for the old path—similar to an XML import. Expiration: 1 year. Duplicates are detected and prevented (idempotent).Supported since v2.13.0: All five entity types with SEO URLs:
- Products (
p) — language-specific - Categories (
c) — language-specific - Manufacturers (
m) — language-independent (one entry, one “description” line per language) - News (
n) — language-specific - CMS (
s) — language-specific
Manage SEO History
Create an OAuth2 client with the scopes seohistory:read, seohistory:write, and seohistory:delete.