Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
3.7 KiB
3.7 KiB
Live export channels (Google Shopping / Meta / custom)
When: 2026-08-04T03:17+02:00
Tenant: Local Demo Co (ee246275-dec0-4446-9e83-58d0c16c258a)
API: http://127.0.0.1:8080
Web: http://127.0.0.1:5174/export-feeds
Auth: Authorization: Bearer dk_demo_local_descrybe_test_key_v1
What shipped
Export Feeds create menu + dialog expose clear channel presets:
| Preset | Format | Purpose |
|---|---|---|
| Google Shopping (CSV) | CSV | Merchant Center scheduled fetch |
| Google Shopping (XML) | XML (g:* elements) |
Merchant Center XML feed |
| Meta catalog (CSV) | CSV | Meta Commerce Manager data feed |
| Custom CSV / XML | CSV or XML | Any partner / webhook |
UI copy explains where to paste the public URL (Merchant Center → Products → Feeds, or Meta Commerce Manager → Catalog → Data sources). Templates store channel (google_shopping | meta | custom) with field mappings.
Aug-8: Wrong extension on a valid public token → opaque 404 (was 400). BREAKING for clients that branched on format-mismatch 400. Only the matching .xml/.csv URL is advertised.
Live create + public curl (this run)
Created feeds
| Name | ID | Token | Generate |
|---|---|---|---|
| Google Shopping CSV (live) | ae8bd969-4bff-4520-9572-bffda0ebc98a |
c06f5f17afcf1f26a4295931947140ce |
4328 products, completed |
| Google Shopping XML (live) | 799ba83a-6a7e-4e1d-b5de-c02182aacec5 |
9bf8905985e4c2bb2e5f6a0f89ddc1b6 |
4328 products, completed |
Public URLs (no auth)
http://127.0.0.1:8080/api/public/export-feeds/c06f5f17afcf1f26a4295931947140ce.csv
http://127.0.0.1:8080/api/public/export-feeds/9bf8905985e4c2bb2e5f6a0f89ddc1b6.xml
curl results
| URL | HTTP | Content-Type | Size |
|---|---|---|---|
| CSV | 200 | text/csv; charset=utf-8 |
~9.1 MB |
| XML | 200 | application/xml; charset=utf-8 |
~10.6 MB |
CSV header:
id,title,description,link,image_link,availability,price,brand,gtin,google_product_category,condition
XML sample (namespace elements preserved):
<?xml version="1.0" encoding="UTF-8"?>
<products feed="Google Shopping XML (live)">
<product>
<g:title>Sample Gadget</g:title>
<g:description>...</g:description>
<g:gtin>8700000000002</g:gtin>
<g:google_product_category>Gadgets</g:google_product_category>
</product>
...
Reproduce
$H = @{ Authorization = "Bearer dk_demo_local_descrybe_test_key_v1"; "Content-Type" = "application/json" }
$base = "http://127.0.0.1:8080"
# Create (template.channel + Google fields) → POST /api/v1/export-feeds
# Generate → POST /api/v1/export-feeds/{id}/generate
# Public → GET /api/public/export-feeds/{token}.csv|.xml
curl.exe -s -o NUL -w "CSV %{http_code}\n" "$base/api/public/export-feeds/c06f5f17afcf1f26a4295931947140ce.csv"
curl.exe -s -o NUL -w "XML %{http_code}\n" "$base/api/public/export-feeds/9bf8905985e4c2bb2e5f6a0f89ddc1b6.xml"
# Preview headers only (GET — HEAD returns 405):
curl.exe -s "$base/api/public/export-feeds/c06f5f17afcf1f26a4295931947140ce.csv" | Select-Object -First 2
curl.exe -s "$base/api/public/export-feeds/9bf8905985e4c2bb2e5f6a0f89ddc1b6.xml" | Select-Object -First 8
UI path
- Login as
demo@descrybe.local/DemoPass123! - Open Export Feeds
- Create Export Feed → pick Google Shopping / Meta / Custom
- Save → Refresh Feed → Copy public URL
Notes
- Missing store attributes (
link,price, …) export as empty cells/elements until mapped on the product; Google/Meta still accept the feed shape. gtin/eansources resolve from product attributes (not SKU/id).- XML output keys may use a single namespace colon (
g:id) for Merchant Center.