Morffeus Docs
ENSR morffeus.com

Atributi proizvoda

Atributi opisuju i grupišu vaše proizvode: boju, veličinu, brend, kategoriju. Svaki je definicija atributa, čvor u stablu kao što je Boja › Crvena. Proizvod je povezan sa definicijama koje ga opisuju, a prodavnica po tim vezama filtrira i grupiše proizvode.

Definicije i veze#

Kako se atributi uparuju#

U PUT /int/product_attributes proizvod i definicije navodite na svoj način, a mi ih pronalazimo:

Uz svaki atribut pošaljite external_ref, a uz svaku vrednost parent_external_ref. Atribut bez external_ref ili product_attribute_def_id pravi novu definiciju pri svakom pozivu. Vrednost poslata bez parent_external_ref gubi roditelja.

Objekat definicije atributa#

Ono što vraćaju endpointi za definicije.

PoljeOpis
idintegerNaš id definicije.
namestringNaziv koji kupci vide, na primer Crvena.
external_refstring · može biti nullVaš sopstveni id definicije. Jedinstven u vašoj aplikaciji.
codestring · može biti nullŠifra koju birate, jedinstvena u vašoj aplikaciji. Definiciju po njoj nalazite preko GET /product_attribute_defs?code=.
slugstring · može biti nullNaziv u URL-u koji prodavnica koristi, jedinstven u vašoj aplikaciji.
parent_product_attribute_def_idinteger · može biti nullNaš id roditelja. null za koren.
description, image_urlstring · može biti nullTekst i slika za prodavnicu.
defaultboolean · podrazumevano falseOznačava podrazumevanu definiciju aplikacije. Samo jedna može biti podrazumevana: kad je postavite na jednoj, briše se sa ostalih.
is_rollup_pivotboolean · podrazumevano falseOmogućava preporukama da grupišu proizvode na ovoj definiciji.
last_phoebe_syncdatetime · može biti nullInterno. Zanemarite ga.
app_idintegerVaša aplikacija.
inserted_at, updated_atdatetime · ISO 8601, UTCKad je definicija napravljena i poslednji put izmenjena. Šalje se bez pomaka.
PUT /api/v2/int/product_attributes

Za svaki proizvod koji navedete pravi ili menja definicije koje pošaljete i povezuje ih sa proizvodom. Veze koje ne pošaljete ostaju kakve jesu, pa možete da šaljete samo ono što se promenilo. Da biste uklonili vezu, pošaljite atribut sa delete: true.

Poziv prolazi ceo ili nikako. Ako jedan proizvod ne može da se nađe, ili jedna definicija nije ispravna, ništa se ne upisuje, a odgovor navodi prvu grešku.

Parametri tela zahteva

ParametarOpis
product_attributesobaveznoniz objekataJedan unos po proizvodu.
product_attributes[].codejedno odstringŠifra jedne od varijanti proizvoda.
product_attributes[].barcodejedno odstringBarkod jedne od njegovih varijanti.
product_attributes[].external_refjedno odstringVaš sopstveni id jedne od njegovih varijanti.
product_attributes[].attributesniz objekataDefinicije koje se povezuju ili razvezuju.
attributes[].external_refstringVaš id definicije. Pogledajte Kako se atributi uparuju.
attributes[].product_attribute_def_idintegerNaš id definicije, kad ga imate.
attributes[].namestringObavezno kad je definicija nova.
attributes[].code, attributes[].slug, attributes[].description, attributes[].image_urlstringUpisuju se u definiciju. Pogledajte objekat.
attributes[].parent_external_refstringVaš id roditelja, na primer Boje kad šaljete Crvenu.
attributes[].parent_attribute_def_namestringNaziv roditelja, koristi se kad roditelja pravimo.
attributes[].deletebooleantrue uklanja vezu. Šaljite ga samo za vezu koja postoji: za definiciju koja nije povezana, poziv je povezuje. Sama definicija ostaje u oba slučaja.

Vraća

data: jedan unos po atributu koji ste poslali, za sve proizvode zajedno, svaki sa id, product_id, product_attribute_def_id, inserted_at i updated_at veze. Uklonjena veza se vraća kakva je bila.

Uklanjanje veze menja proizvod u GET /products ubrzo posle poziva. Nova veza se tamo vidi posle sledećeg osvežavanja proizvoda, najkasnije noćnog.

Greške

StatusKada
400Telo zahteva nema ključ product_attributes.
401Token nedostaje ili je opozvan. Pogledajte Autentifikaciju.
422Nijedna varijanta ne odgovara unosu: product variant not found. Nova definicija nema naziv: API.ProductAttributeDefs.NameCantBeBlank. external_ref, code ili slug je zauzet drugom definicijom: API.ProductAttributeDefs.ExternalRefAlreadyExists, CodeAlreadyExists, SlugAlreadyExists.
PUT/int/product_attributes
curl -X PUT "https://api.morffeus.com/api/v2/int/product_attributes" \
  -H "Authorization: Bearer $MORFFEUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "product_attributes": [
      {
        "code": "SKU-1001",
        "attributes": [
          {
            "external_ref": "COLOR-RED",
            "name": "Red",
            "parent_external_ref": "COLOR",
            "parent_attribute_def_name": "Colour"
          },
          { "external_ref": "SALE", "name": "Sale", "delete": true }
        ]
      }
    ]
  }'
const res = await fetch('https://api.morffeus.com/api/v2/int/product_attributes', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.MORFFEUS_TOKEN}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    product_attributes: [{
      code: 'SKU-1001',
      attributes: [
        { external_ref: 'COLOR-RED', name: 'Red',
          parent_external_ref: 'COLOR',
          parent_attribute_def_name: 'Colour' },
        { external_ref: 'SALE', name: 'Sale', delete: true },
      ],
    }],
  }),
});
if (!res.ok) throw new Error(JSON.stringify(await res.json()));
Odgovor200 OK
{
  "data": [
    {
      "id": 88410,
      "product_id": 48377,
      "product_attribute_def_id": 512,
      "inserted_at": "2026-10-01T08:40:11",
      "updated_at": "2026-10-01T08:40:11"
    },
    {
      "id": 80002,
      "product_id": 48377,
      "product_attribute_def_id": 97,
      …
    }
  ]
}
Greška422 Unprocessable Entity
{
  "errors": {
    "message": ["product variant not found"]
  }
}

Čitanje definicija#

GET /api/v2/product_attribute_defs

Definicije vaše aplikacije u jednom od tri oblika. Lista nije podeljena na stranice: vraća se svaka definicija.

OblikOpis
?code=Definicija sa ovom šifrom, kao lista od jedne, ili prazna lista. Ima prednost nad ostalim parametrima.
?tree=trueCelo stablo: koreni poređani po nazivu, svaki sa svojom decom u children. Čvorovi nose id, name, external_ref, slug, description, image_url, default, parent_product_attribute_def_id i children.
bez ovihRavna lista objekata definicija, svaki sa nazivom roditelja u parent_name.

Parametri upita ravne liste

ParametarOpis
slugstringSamo definicija sa ovim slugom.
onlyParentsoznakaSamo koreni. Uključuje ga bilo koja vrednost, i false, pa ga izostavite da biste ga isključili.
numberOfProductsoznakaDodaje products_count: veze definicije i svih definicija ispod nje. Uključuje ga bilo koja vrednost.
GET/product_attribute_defs
curl "https://api.morffeus.com/api/v2/product_attribute_defs?tree=true" \
  -H "Authorization: Bearer $MORFFEUS_TOKEN"
Odgovor200 OK
{
  "data": [
    {
      "id": 96,
      "name": "Colour",
      "external_ref": "COLOR",
      "slug": "colour",
      "description": null,
      "image_url": null,
      "default": false,
      "parent_product_attribute_def_id": null,
      "children": [
        {
          "id": 512,
          "name": "Red",
          "external_ref": "COLOR-RED",
          "parent_product_attribute_def_id": 96,
          "children": [],
          …
        }
      ]
    }
  ]
}

Jedna po jedna definicija#

GET /api/v2/product_attribute_defs/{id}

Iste definicije po našem id-ju, bez povezivanja sa proizvodom.

PozivOpis
GET /product_attribute_defs/{id}Jedan objekat definicije u data.
POST /product_attribute_defsPravi jednu definiciju iz {"product_attribute_def": {…}}, sa poljima iz objekta; name je obavezan, a vrednost navodi roditelja u parent_product_attribute_def_id. Vraća 201 i novu definiciju.
DELETE /product_attribute_defs/{id}Briše definiciju i vraća 204 bez tela. Definicija koja još ima veze ili decu ne može da se obriše: prvo je razvežite i premestite ili obrišite njenu decu.

Greške

StatusKada
400Id nije broj, ili telo zahteva nema ključ product_attribute_def.
404U vašoj aplikaciji nema definicije sa ovim id-jem. Telo je prazno.
422Polje nedostaje ili nije ispravno, na primer {"errors": {"name": ["can't be blank"]}}, ili roditelj ne postoji. Zauzet external_ref, code ili slug prijavljuje se pod app_id.
POST/product_attribute_defs
curl -X POST "https://api.morffeus.com/api/v2/product_attribute_defs" \
  -H "Authorization: Bearer $MORFFEUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "product_attribute_def": {
      "name": "Blue",
      "external_ref": "COLOR-BLUE",
      "parent_product_attribute_def_id": 96
    }
  }'
Greška422 Unprocessable Entity
{
  "errors": {
    "app_id": ["API.ProductAttributeDefs.ExternalRefAlreadyExists"]
  }
}
Poslednja izmena 1. oktobra 2026. · API v2 Nešto nije u redu na ovoj stranici?