Zum Inhalt springen
Dokumentationsmenü

REST API

Preisänderungen

Listenpreisänderungen und Voransicht einer, einschließlich dessen, was ein Kunde vor und nach der Änderung zahlt.

Massenänderungen, Terminplanung und E-Mails zu Kundenpreisänderungen erfordern Pro. Free kann Standard-Preis-Tabellenimporte sofort ohne E-Mails veröffentlichen. Bestehende vereinbarte Preise und veröffentlichte geplante Änderungen bleiben gültig, wenn Pro endet.

Listenpreise ändern sich in TradeCatalog nie unbemerkt. Neue Preise werden in eine Preisänderung für eine Preisliste aufgenommen: ein Entwurf, der von Mitarbeitern überprüft, datiert und veröffentlicht wird. Kunden erhalten nur dann eine E-Mail, wenn sich ihr eigener Preis ändert. Standard ist die Liste, wenn keine andere benannt wird. Ein Entwurf mischt niemals Listen.

Wie Preiserhöhungen vorgenommen werdenLink zu diesem Abschnitt#

  • Über die API: PUT /products mit einem neuen listPrice für ein vorhandenes Produkt fügt es einem Entwurf hinzu und gibt die priceChangeId des Entwurfs zurück.
  • Über die App: Tabellenimporte und Massenänderungen wie „+4 % auf die Bolzen-Kategorie“.

Veröffentlichen, Terminplanen und Stornieren erfolgen in der App unter Preisänderungen. Es gibt keine API dafür: eine Person überprüft immer eine Preisänderung, bevor Kunden sie sehen.

StatusLink zu diesem Abschnitt#

StatusBedeutung
draftNicht veröffentlicht. Es haben sich keine Preise geändert.
scheduledVeröffentlicht mit einem zukünftigen Datum. Die Preise ändern sich an diesem Datum.
liveIn Kraft.
cancelledStorniert, bevor es in Kraft trat.

Das PreisänderungsobjektLink zu diesem Abschnitt#

json
{
  "id": "c4d5e6f7-1234-4abc-9def-0123456789ab",
  "source": "import",
  "title": "API import (Sage stock sync)",
  "supplierNote": null,
  "status": "draft",
  "effectiveAt": null,
  "notifyCustomers": true,
  "raiseFixedPrices": false,
  "priceListId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "priceListName": "Standard",
  "createdBy": "Fq3L0cZ7tN1pW9aYx2Rk",
  "publishedAt": null,
  "cancelledAt": null,
  "createdAt": "2026-09-27T02:00:14.000Z",
  "items": 38
}
FeldTypBeschreibung
sourceZeichenketteimport (Tabellenimport oder API) oder bulk (eine prozentuale Änderung, die in der App vorgenommen wurde).
titleZeichenketteWird Mitarbeitern angezeigt. API-Entwürfe erhalten den Titel „API-Import (Schlüsselname)“.
supplierNoteZeichenkette oder nullNachricht an Kunden in der Preisänderungs-E-Mail.
statusZeichenketteSiehe Status.
effectiveAtZeichenkette oder nullWann die neuen Preise gelten.
notifyCustomersBooleschOb Kunden ihre neuen Preise per E-Mail erhalten.
raiseFixedPricesBooleschOb vereinbarte Preise um denselben Prozentsatz ansteigen. Diese Wahl ist unabhängig von der Liste.
priceListIdZeichenkette oder nullDie Liste, in die diese Änderung geschrieben wird. Null bedeutet Standard, einschließlich Änderungen, die vor dem Benennen von Listen vorgenommen wurden.
priceListNameZeichenketteDer Name dieser Liste. Standard, wenn priceListId null ist.
createdByZeichenkette oder nullDie ID der Person, die es erstellt hat. Bei API-Entwürfen ist dies die Person, die den Schlüssel erstellt hat.
itemsGanzzahlWie viele Produkte es ändert. Nur in der Liste.

ListenpreisänderungenLink zu diesem Abschnitt#

GET/api/v1/price-changes

Neueste zuerst. Deckt die 100 neuesten Preisänderungen ab.

NameTypErforderlichBeschreibung
limitGanzzahlnein1 bis 100. Standard 100.
offsetGanzzahlneinZeilen zu überspringen. Standard 0.
bash
curl https://tradecatalog.app/api/v1/price-changes \
  -H "Authorization: Bearer $TRADECATALOG_API_KEY"
js
const res = await fetch('https://tradecatalog.app/api/v1/price-changes', {
  headers: { Authorization: `Bearer ${process.env.TRADECATALOG_API_KEY}` },
})
const { data: changes } = await res.json()
const drafts = changes.filter((change) => change.status === 'draft')

Preisänderung vorab ansehenLink zu diesem Abschnitt#

GET/api/v1/price-changes/{id}

Alles, was Mitarbeiter vor der Veröffentlichung sehen: wie viele Preise steigen und fallen, die größten Veränderungen, Warnungen und wie viele vereinbarte Preise betroffen sind. Geben Sie customer an, um die eigenen Preise dieses Kunden vor und nach der Änderung zu sehen.

NameInTypErforderlichBeschreibung
idPfadZeichenkettejaPreisänderungs-ID.
customerAbfrageZeichenketteneinKunden-ID oder Kontonummer.
bash
curl "https://tradecatalog.app/api/v1/price-changes/c4d5e6f7-1234-4abc-9def-0123456789ab?customer=OAK01" \
  -H "Authorization: Bearer $TRADECATALOG_API_KEY"
js
const res = await fetch(
  `https://tradecatalog.app/api/v1/price-changes/${priceChangeId}?customer=OAK01`,
  { headers: { Authorization: `Bearer ${process.env.TRADECATALOG_API_KEY}` } },
)
const { data: preview } = await res.json()
if (preview.warnings.length)
  console.warn('Check these before publishing', preview.warnings)
json
{
  "data": {
    "change": {
      "id": "c4d5e6f7-1234-4abc-9def-0123456789ab",
      "source": "import",
      "title": "API import (Sage stock sync)",
      "supplierNote": null,
      "status": "draft",
      "effectiveAt": null,
      "notifyCustomers": true,
      "raiseFixedPrices": false,
      "priceListId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "priceListName": "Standard",
      "createdBy": "Fq3L0cZ7tN1pW9aYx2Rk",
      "publishedAt": null,
      "cancelledAt": null,
      "createdAt": "2026-09-27T02:00:14.000Z"
    },
    "counts": { "total": 38, "up": 36, "down": 2 },
    "biggest": [
      {
        "productId": "3f8a2c1e-9b4d-4e6f-a7c8-1d2e3f4a5b6c",
        "oldPrice": 1850,
        "newPrice": 1950,
        "sku": "HX-8510",
        "name": "Hex bolt M10 x 50 zinc",
        "changeBp": 541
      }
    ],
    "warnings": [],
    "fixedAffected": 3,
    "customer": {
      "name": "Oakfield Joinery",
      "rows": [
        {
          "sku": "HX-8510",
          "name": "Hex bolt M10 x 50 zinc",
          "before": 1573,
          "after": 1658,
          "label": "Brand discount −15%"
        }
      ]
    }
  },
  "currency": "GBP"
}
FeldBeschreibung
countsProdukte in der Änderung und wie viele steigen und fallen.
biggestBis zu 20 Artikel mit der größten prozentualen Veränderung. changeBp ist die Veränderung in Basispunkten (541 = +5,41 %).
warningsArtikel, die sich um mehr als 30 % verändern oder auf null fallen. Meistens Tippfehler.
fixedAffectedVereinbarte Preise für diese Produkte, die aktuell gültig sind. Sie ändern sich nur, wenn die Änderung vereinbarte Preise erhöht.
customerMit customer: die Einzelpreise dieses Kunden vor und nach der Änderung, aus ihrer eigenen Liste und dann ihrer Anpassung, für bis zu die ersten 50 Artikel. Ein Kunde auf einer anderen Liste bleibt unverändert. null ohne es.

404 not_found, wenn es in diesem Arbeitsbereich keine solche Preisänderung gibt.