KEHITTÄJÄT · Integration API -viite

Fabrixa Integration API -viite

27 min lukuaika Viimeksi päivitetty:06-11-2026 119 katselua

Integration API auttaa sinua luomaan ja hallitsemaan Fabrixa-tilauksia, käynnistämään Fabrixa Studion ja pysymään synkronoituna tuotannon ja toimitusten tilan kanssa webhookien avulla. API noudattaa REST-käytäntöjä ja käyttää JSON:ia kaikissa pyyntö- ja vastausosissa.

PERUS-URL-OSOITE

https://api.fabrixa.com/v2/integration

Lähetä kaikki pyynnöt tähän perus-URL-osoitteeseen, jota seuraa tietty päätepistepolku. Perus-URL-osoite on perusta vuorovaikutukselle Fabrixa API:n kanssa - resurssien noutamiseen, luomiseen, päivittämiseen tai poistamiseen.

ENNEN ENSIMMÄISTÄ ​​PYYNTÖÄSI

Todennus

Päästäksesi integraatiosovellusliittymään, todenna pyyntösi käyttämällä sekä Application Access Token-tunnusta että Application Key:

Valtuutusotsikko
Authorization: Bearer APPLICATION_ACCESS_TOKEN
Sovellusavaimen otsikko
X-Application-Key: APPLICATION_KEY
Esimerkki cURL-komento
curl -X 'GET' \
  'https://api.fabrixa.com/v2/integration/ping' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
  -H 'X-Application-Key: APPLICATION_KEY'

Korvaa APPLICATION_ACCESS_TOKEN todellisella käyttötunnuksellasi ja APPLICATION_KEY todellisella sovellusavaimellasi.

MITEN VASTAUKSET RAKENNEVAT

Päätepisteet ja pyynnöt

Integration API -päätepisteet on järjestetty resurssityypin mukaan ja noudattavat RESTful-arkkitehtuurityyliä. Jokainen päätepiste edustaa resurssia, ja näiden resurssien toiminnot suoritetaan tavallisilla HTTP-menetelmillä.

Kaikki Integration API -pyynnöt ja vastaukset ovat JSON-muodossa, mikä tarjoaa johdonmukaisen ja helppokäyttöisen käyttöliittymän vuorovaikutukseen API:n kanssa.

Katso täydelliset tiedot jokaisesta endpointista, mukaan lukien pyyntö- ja vastausesimerkit, Swagger-dokumentaatiosta.

Vastausmuoto

Kaikki päätepisteet palauttavat tiedot standardoidussa muodossa seuraavien objektien kanssa:

{
  "links": {
    "self": "https://api.fabrixa.com/v2/integration/products",
    "first_page": "https://api.fabrixa.com/v2/integration/products?page=1",
    "last_page": "https://api.fabrixa.com/v2/integration/products?page=2",
    "next_page": "https://api.fabrixa.com/v2/integration/products?page=2",
    "prev_page": null
  },
  "meta": {
    "total": 2,
    "current_page": 1,
    "per_page": 10
  },
  "data": [
    {
      "id": 1,
      "name": "Product 1",
      "description": "Description of Product 1"
    },
    {
      "id": 2,
      "name": "Product 2",
      "description": "Description of Product 2"
    }
  ]
}

Vastausobjektien kuvaus

links

Sisältää sivutuslinkkejä tulosten selailuun.

  • self — nykyisen sivun URL-osoite.
  • first_page — ensimmäisen tulossivun URL-osoite.
  • last_page — viimeisen tulossivun URL-osoite.
  • next_page — seuraavan sivun URL-osoite. null, jos seuraavaa sivua ei ole.
  • prev_page — edellisen sivun URL-osoite. null jos edellistä sivua ei ole.

meta

Sisältää metatiedot vastauksesta, kuten sivutustiedot.

  • total — kaikkien sivujen käytettävissä olevien kohteiden kokonaismäärä.
  • current_page — tulosten nykyinen sivunumero.
  • per_page — kohteiden määrä sivulla.

data

Vastauksen pääsisältö. data vaihtelee päätepisteen mukaan - se voi olla yksittäinen objekti, esimerkiksi yksi tuote, tai joukko objekteja, esimerkiksi tuoteluettelo.

KUN JOTAIN MENEE PIELEEN

Virheet ja tilakoodit

Kaikki API-pyynnöt palauttavat HTTP-tilakoodit, jotka antavat käsityksen vastauksesta.

400 Bad Request

Palvelin ei voi käsitellä pyyntöä vahvistusvirheiden vuoksi – puuttuvat tai virheelliset parametrit.

401 Unauthorized

Asiakas ei ole antanut kelvollisia todennustunnuksia. Palautetaan myös, kun käyttöoikeustunnus on peruutettu.

403 Forbidden

Palvelin hylkäsi pyynnön riittämättömien käyttöoikeuksien vuoksi, mikä johtuu tyypillisesti virheellisistä tai puuttuvista käyttöoikeuksista.

404 Not Found

Pyydettyä resurssia ei löytynyt palvelimelta.

412 Precondition Failed

Pyyntöä ei voi suorittaa resurssin nykyisessä tilassa, esimerkiksi tilaukselle, jota ei enää voi peruuttaa.

429 Too Many Requests

Asiakas on ylittänyt sallitun pyyntöjen määrän tietyllä aikavälillä. Katso Rate Limits.

5xx Errors

Tapahtui sisäinen palvelinvirhe. Ota yhteyttä Fabrixan tukeen ja kerro tiedot epäonnistuneesta pyynnöstä.

Error Response Body

Esimerkki virhevastauksen rungosta:

{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/ping"
    },
    "meta": [],
    "errors": {
        "messages": [
            "Application Key is not specified."
        ]
    }
}

errors sisältää tietoja siitä, mikä epäonnistui. messages-taulukko sisältää virhekuvaukset. Jos pyyntö on huono, saat niiden kenttien nimet, joiden vahvistus epäonnistui.

TIEDÄ PYYNTÖSI RAJAT

Rate Limits

Integration API tukee enintään 30 pyyntöä sovellusta kohti minuutissa.

Jos ylität tämän rajan, saat 429 Too Many Requests-vastauksen.

Kaikki Integration API -vastaukset sisältävät X-RateLimit-Remaining-otsikon, kuinka monta pyyntöä asiakas voi vielä tehdä, ja X-RateLimit-Limit-otsikon, joka on sallittu kokonaismäärä minuutissa.

TESTAA ENNEN KÄYTTÖÖNOTTOA

Hiekkalaatikkotila

Hiekkalaatikkotilassa voit testata integraatiota alusta loppuun ennen kuin yhtään oikeaa tilausta valmistetaan tai veloitetaan. Tila koskee koko tiliäsi: tilauksia kaikista myyntikanavista, myös Integration API:sta ja yhdistetyistä Shopify- ja WooCommerce-kaupoista, ei valmisteta eikä veloiteta saldoltasi. Tilisi on hiekkalaatikkotilassa, kun sen tila on odottaa aktivointia.

Hiekkalaatikkotilassa voit:

Voit testata tilauksia lisäämällä tuotteita Fabrixan tuotevalikoimasta: avaa tuote, valitse Myy tätä ja valitse variantit ja mallit. Ne näkyvät sen jälkeen kohdassa Omat tuotteet.

Voit siirtää tilisi hiekkalaatikkotilaan avaamalla Platformin, siirtymällä kohtaan Asetukset → Yritys → Hiekkalaatikkotila ja valitsemalla Siirry hiekkalaatikkotilaan. Sen voi ottaa käyttöön myös uutta myyntikanavaa, myös Integration API -kanavaa, lisättäessä, tai voit kirjoittaa osoitteeseen support@fabrixa.com, niin siirrämme tilisi puolestasi. Hiekkalaatikkotila on käytettävissä vain aktiivisille tileille.

Kun olet valmis, aktivoi tilisi itse Platformissa kohdassa Asetukset → Yritys → Hiekkalaatikkotila. Voit myös kirjoittaa osoitteeseen support@fabrixa.com, niin aktivoimme sen puolestasi. Yhdistetyt kaupat ja API-tunnukset toimivat edelleen, joten mitään ei tarvitse määrittää uudelleen.

Aktivoinnin jälkeen kaikki uudet tilaukset menevät tuotantoon ja veloitetaan saldoltasi. Ennen aktivointia luodut tilaukset pysyvät testitilauksina: niitä ei koskaan valmisteta eikä veloiteta, ei aktivoinninkaan jälkeen.

LÖYDÄ MYYTÄVÄÄ

Tuotteet

Katalogi on kaikki, mitä Fabrixa valmistaa. Omat tuotteesi ovat katalogin tuotteita, jotka olet lisännyt Fabrixa-tilillesi omilla nimilläsi, kuvauksillasi, kuvillasi ja SKU-koodeillasi. Tilausrivi viittaa tuoteversioon - tuotteen yhteen kokoon tai malliin - sen sku- tai variant_id-arvolla: jonkin oman tuotteesi versioon tai suoraan tilattavaan katalogin versioon.

MITÄ FABRIXA VALMISTAA

Selaa katalogia

Saat Fabrixan valmistamien tuotteiden luettelon lähettämällä GET-pyynnön osoitteeseen https://api.fabrixa.com/v2/integration/catalog/products tunnuksillasi. Se luettelee aktiiviset tuotteet, joilla on versio, jota painokumppani parhaillaan valmistaa, ja vain nämä versiot, kukin SKU-koodeineen, myyntihintoineen, mittoineen ja vaihtoehtoarvoineen.

Kyselyparametrit

  • page ja limit (enintään 100) - jakavat luettelon sivuihin. Ilman niitä koko katalogi palautetaan yhdessä vastauksessa.
  • search - tuotteet, joiden nimi sisältää tekstin tai joiden slug tai version SKU alkaa sillä.
  • category_id - kategorian tuotteet; parent_category_id - ylätason kategorian minkä tahansa alakategorian tuotteet. Katso Katalogin kategoriat.
  • group_id - katalogiryhmän tuotteet.
  • sort_by - name, created, updated, type, popular tai sold, järjestyksessä sort_order asc tai desc. Oletuksena uusimmat tuotteet tulevat ensin.

Esimerkkipyyntö

curl -X 'GET' \
  'https://api.fabrixa.com/v2/integration/catalog/products?category_id=19&limit=10' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
  -H 'X-Application-Key: APPLICATION_KEY'

Esimerkkivastaus

{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/catalog/products",
        "first_page": "https://api.fabrixa.com/v2/integration/catalog/products?page=1",
        "last_page": "https://api.fabrixa.com/v2/integration/catalog/products?page=1",
        "next_page": null,
        "prev_page": null
    },
    "meta": {
        "total": 1,
        "current_page": 1,
        "per_page": 10
    },
    "data": [
        {
            "id": 1305,
            "name": "Duvet Cover",
            "subtitle": "Duvet Cover with a pillow",
            "description": "

Soft personalized duvet cover.

", "slug": "duvet-cover", "code": "DUVET-001", "HS_code": "63023100", "created_at": "2024-08-16T09:32:07.000000Z", "updated_at": "2024-08-16T09:38:50.000000Z", "is_sellable": true, "variants_min_selling_price": "29.95", "variants_max_selling_price": "49.95", "type": { "id": 5, "name": "Duvet cover" }, "status": { "id": 2, "name": "Active" }, "categories": [ { "id": 19, "name": "Duvet covers", "description": "Personalized duvet covers", "parent_category": { "id": 8, "name": "Bedroom", "description": "Bedroom products" } } ], "images": [ { "id": 5566, "url": "https://storage.googleapis.com/example/catalog/duvet-cover.jpg", "is_main": true, "created_at": "2024-08-16T09:32:07.000000Z", "screen_type_size": "large", "sort_number": 1 } ], "variants": [ { "id": 2705, "name": "Duvet Cover", "subtitle": "140x200", "description": null, "SKU": "COT864311", "selling_price": "29.95", "width": "140.00", "height": "200.00", "length": "2.00", "weight": "1.20", "created_at": "2024-08-06T11:23:44.000000Z", "updated_at": "2024-08-16T09:36:37.000000Z", "options": [ { "id": 151, "name": "Duvet Size", "values": [ { "id": 471, "value": "140x200" } ] } ] }, { "id": 2708, "name": "Duvet Cover", "subtitle": "200x220", "description": null, "SKU": "COT864314", "selling_price": "49.95", "width": "200.00", "height": "220.00", "length": "2.00", "weight": "1.80", "created_at": "2024-08-06T11:23:44.000000Z", "updated_at": "2024-08-16T09:37:11.000000Z", "options": [ { "id": 151, "name": "Duvet Size", "values": [ { "id": 474, "value": "200x220" } ] } ] } ] } ] }

Vastauksen kentät

  • id, name, subtitle, description (HTML), slug, code ja HS_code, tullitariffikoodi.
  • is_sellable - onko tuote avoinna myyntiin. Suljettu tuote on yhä luettelossa, mutta tilaus sen versiolle hylätään.
  • variants_min_selling_price ja variants_max_selling_price - lueteltujen versioiden hintahaarukka.
  • type - tuotetyyppi, joka määrää painokerrokset ja PDF-sivujärjestyksen; status - katalogissa aina Active.
  • categories - kategoriat, joihin tuote kuuluu, kullakin oma parent_category.
  • images - tuotekuvat kenttineen url, is_main, screen_type_size ja sort_number.
  • variants - tuotteen tilattavat versiot: id, name, subtitle, SKU, selling_price, mitat width, height, length ja weight sekä options, vaihtoehtoarvot, jotka määrittävät tämän version, esimerkiksi sen koon.
LÖYDÄ TIESI KATALOGISSA

Katalogin kategoriat

Saat katalogin kategoriat lähettämällä GET-pyynnön osoitteeseen https://api.fabrixa.com/v2/integration/catalog/categories tunnuksillasi. Vastaus sisältää ylätason kategoriat, kullakin alakategoriat sisäkkäin kentässä sub_categories ja katalogin tuotteiden määrä kentässä products_count. Anna kategorian id parametrina category_id, kun selaat katalogia, tai ylätason kategorian id parametrina parent_category_id, niin saat kaikkien sen alakategorioiden tuotteet kerralla.

Kyselyparametrit

  • page ja limit (enintään 100) - jakavat luettelon sivuihin. Ilman niitä palautetaan kaikki kategoriat.
  • search - kategoriat, joiden nimi sisältää tekstin.
  • with_products_only - true jättää pois kategoriat, joissa ei ole yhtään katalogin tuotetta suoraan eikä alakategoriassa.
  • sort_by - category_name tai category_created, järjestyksessä sort_order asc tai desc. Oletuksena kategoriat tulevat katalogin järjestyksessä.

Esimerkkipyyntö

curl -X 'GET' \
  'https://api.fabrixa.com/v2/integration/catalog/categories?with_products_only=true' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
  -H 'X-Application-Key: APPLICATION_KEY'

Esimerkkivastaus

{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/catalog/categories"
    },
    "meta": {
        "total": 1
    },
    "data": [
        {
            "id": 8,
            "name": "Bedroom",
            "description": "Bedroom products",
            "sort_number": 1,
            "slug": "bedroom",
            "products_count": 12,
            "sub_categories": [
                {
                    "id": 19,
                    "name": "Duvet covers",
                    "description": "Personalized duvet covers",
                    "sort_number": 1,
                    "slug": "duvet-covers",
                    "products_count": 7,
                    "images": [],
                    "sub_categories": []
                },
                {
                    "id": 20,
                    "name": "Pillows",
                    "description": "Personalized pillows and pillowcases",
                    "sort_number": 2,
                    "slug": "pillows",
                    "products_count": 4,
                    "images": [],
                    "sub_categories": []
                }
            ],
            "parent_category": null,
            "images": [
                {
                    "id": 781,
                    "url": "https://storage.googleapis.com/example/catalog/bedroom.jpg",
                    "is_main": true,
                    "created_at": "2024-08-16T09:32:07.000000Z",
                    "screen_type_size": "large",
                    "sort_number": 1
                }
            ]
        }
    ]
}
OMA TILISI

Omat tuotteesi

Saat tilisi tuotteet lähettämällä GET-pyynnön osoitteeseen https://api.fabrixa.com/v2/integration/products tunnuksillasi. Omat tuotteesi ovat katalogin tuotteita, jotka olet lisännyt Fabrixa-tilillesi: niillä on siellä antamasi nimet, kuvaukset ja kuvat, ja niiden versioilla valitsemasi SKU-arvot. Luettelossa ovat vain aktiiviset tuotteet, kymmenen sivua kohden, ellet anna limit-arvoa.

Kyselyparametrit

  • page ja limit (enintään 100) - palautettava sivu ja sen koko; oletuksena ensimmäinen sivu ja kymmenen tuotetta.
  • search - tuotteet, joiden nimi sisältää tekstin tai joiden slug tai version SKU alkaa sillä.

Esimerkkipyyntö

curl -X 'GET' \
  'https://api.fabrixa.com/v2/integration/products?search=duvet' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
  -H 'X-Application-Key: APPLICATION_KEY'

Esimerkkivastaus

{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/products",
        "first_page": "https://api.fabrixa.com/v2/integration/products?page=1",
        "last_page": "https://api.fabrixa.com/v2/integration/products?page=1",
        "next_page": null,
        "prev_page": null
    },
    "meta": {
        "total": 1,
        "current_page": 1,
        "per_page": 10
    },
    "data": [
        {
            "id": 5321,
            "name": "Dreamy Duvet Cover",
            "subtitle": "Duvet cover with a matching pillowcase",
            "description": "

Our personalized duvet cover, printed on soft cotton sateen.

", "slug": "dreamy-duvet-cover", "width": "50.00", "height": "50.00", "length": "20.00", "weight": "100.00", "created_at": "2025-03-04T10:12:40.000000Z", "updated_at": "2025-03-04T10:15:02.000000Z", "type": { "id": 5, "name": "Duvet cover", "description": "Duvet cover with pillow" }, "available_options": [ { "id": 151, "name": "Duvet Size", "values": [ { "id": 471, "value": "140x200" }, { "id": 474, "value": "200x220" } ] } ], "categories": [ { "id": 912, "name": "Bedding" } ], "collections": [ { "id": 77, "name": "Spring 2025" } ], "images": [ { "id": 48120, "is_main": true, "image_size": "1200x1200", "url": "https://storage.googleapis.com/example/shop/dreamy-duvet-cover.jpg", "screen_type_size": "large", "sort_number": 1 } ], "variants": [ { "id": 32323, "name": "Dreamy Duvet Cover", "subtitle": "140x200", "description": null, "SKU": "DDC-140200", "created_at": "2025-03-04T10:12:41.000000Z", "updated_at": "2025-03-04T10:12:41.000000Z", "options": [ { "id": 151, "name": "Duvet Size", "values": [ { "id": 471, "value": "140x200" } ] } ], "images": [], "available_source_types": ["duvet", "pillow", "pillow-back"], "required_source_types": ["duvet", "pillow"] }, { "id": 32326, "name": "Dreamy Duvet Cover", "subtitle": "200x220", "description": null, "SKU": "DDC-200220", "created_at": "2025-03-04T10:12:41.000000Z", "updated_at": "2025-03-04T10:12:41.000000Z", "options": [ { "id": 151, "name": "Duvet Size", "values": [ { "id": 474, "value": "200x220" } ] } ], "images": [], "available_source_types": ["duvet", "pillow", "pillow-back"], "required_source_types": ["duvet", "pillow"] } ] } ] }

Yhden tuotteen luet lähettämällä GET-pyynnön osoitteeseen https://api.fabrixa.com/v2/integration/products/{product_id}, jossa {product_id} on sen id. Vastauksessa on samat kentät kuin luettelossa. Tuote, joka ei ole tililläsi, katalogin tuote mukaan lukien, vastaa 404 Not Found ja viestillä Product not found.

Vastauksen kentät

  • id, name, subtitle, description (HTML), slug, width, height, length ja weight.
  • type - tuotetyyppi, joka määrää painokerrokset ja PDF-sivujärjestyksen.
  • available_options - tuotteen jokainen vaihtoehto kaikkine arvoineen, esimerkiksi jokainen koko, jossa sitä on; kukin versio ottaa yhden arvon vaihtoehtoa kohden.
  • categories ja collections - kategoriat ja kokoelmat, joihin olet tilissäsi tuotteen lajitellut.
  • images - tuotekuvat kenttineen url, is_main, image_size, screen_type_size ja sort_number.
  • variants - tuotteen tilattavat versiot, katso Tuoteversiot: id, name, subtitle, SKU, options, images ja painokerrokset kentissä available_source_types ja required_source_types.
MIHIN TILAUSRIVI VIITTAA

Tuoteversiot

Versio on tuotteen yksi tilattava muoto - yksi koko, yksi väri - ja se, mihin tilausrivi viittaa sku- tai variant_id-arvolla. Oman tuotteesi version luet lähettämällä GET-pyynnön osoitteeseen https://api.fabrixa.com/v2/integration/variants/{variant_id}, jossa {variant_id} on sen id. Sellaisen tuotteen versio, joka ei ole tililläsi, vastaa 404 Not Found ja viestillä Variant not found.

Esimerkkipyyntö

curl -X 'GET' \
  'https://api.fabrixa.com/v2/integration/variants/32323' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
  -H 'X-Application-Key: APPLICATION_KEY'

Esimerkkivastaus

{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/variants/32323"
    },
    "meta": [],
    "data": {
        "id": 32323,
        "name": "Dreamy Duvet Cover",
        "subtitle": "140x200",
        "description": null,
        "SKU": "DDC-140200",
        "created_at": "2025-03-04T10:12:41.000000Z",
        "updated_at": "2025-03-04T10:12:41.000000Z",
        "width": "140.00",
        "height": "200.00",
        "length": "2.00",
        "weight": "1.20",
        "options": [
            {
                "id": 151,
                "name": "Duvet Size",
                "values": [
                    {
                        "id": 471,
                        "value": "140x200"
                    }
                ]
            }
        ],
        "images": [],
        "product": {
            "id": 5321,
            "name": "Dreamy Duvet Cover",
            "subtitle": "Duvet cover with a matching pillowcase",
            "description": "

Our personalized duvet cover, printed on soft cotton sateen.

", "description2": null, "slug": "dreamy-duvet-cover", "created_at": "2025-03-04T10:12:40.000000Z", "updated_at": "2025-03-04T10:15:02.000000Z" }, "available_source_types": ["duvet", "pillow", "pillow-back"], "required_source_types": ["duvet", "pillow"] } }

Vastauksen kentät

  • id, name, subtitle, description, SKU, width, height, length, weight, options, images ja product, tuote, johon versio kuuluu.
  • available_source_types - version painokerrokset nimettyinä niin kuin sen tuotantoprosessi ne tuntee. Arvon "file" lisäksi, jonka jokainen versio hyväksyy PDF-tiedostolle, nämä ovat arvot, joita lähdetiedoston type voi saada; yhden painokerroksen tuote luettelee arvon "print".
  • required_source_types - kerrokset, jotka painotiedoston on katettava. Arvolla "file" lähetetty PDF kattaa ne sivuillaan tuotetyypin sivujärjestyksessä. Muuten rivi tarvitsee JPEG-, PNG- tai TIFF-tiedoston jokaiselle niistä kerroksen nimi type-arvona; rivi, josta jokin puuttuu, hylätään vastauksella 400 Bad Request ja puuttuvien kerrosten nimillä.

Tilausrivi tälle versiolle PDF-tiedostolla, jonka sivut ovat sen kerrokset:

"rows": [
    {
        "sku": "DDC-140200",
        "quantity": 1,
        "sources": [
            {
                "type": "file",
                "url": "https://samples-files.com/samples/duvet-cover.pdf"
            }
        ]
    }
]

Mitä versioita voi tilata

  • Tilausrivi voi viitata tilisi tuotteen versioon tai suoraan katalogin versioon, ei koskaan toisen asiakkaan tuotteeseen. Versio haetaan variant_id-arvolla tai sku-arvolla kirjainkoosta riippumatta.
  • Version on oltava aktiivinen ja sen tuotteen aktiivinen ja avoinna myyntiin. Katalogin tuotteen kopiossasi myös katalogin tuotteen on oltava aktiivinen ja katalogin version käytössä.
  • Muuten tilaus hylätään vastauksella 400 Bad Request ja kyseisen rivin syyllä: The variant not found., The product is not active., The catalog product is not active., The product is not open for sales., The variant is not active. tai The catalog variant is not active.
LUO JA SEURAA TILAUKSIA

Tilaukset

Luo tilauksia Fabrixassa omalta myymälältäsi tai alustaltasi, liitä tarvittavat tulostustiedostot ja seuraa jokaista tuotetta sen eteneessä.

VALMISTA TILAUSTIEDOT

Luo tilaus

Luo tilaus Fabrixa Integration API:n kautta lähettämällä POST-pyyntö osoitteeseen https://api.fabrixa.com/v2/integration/orders. Pyyntöelimen tulee sisältää:

Pyydä kehon rakennetta

  • number (valinnainen) - tilausnumero. Jos sitä ei anneta, luodaan yksilöllinen numero.
  • comments (valinnainen) - tilaukseen liittyvät lisäkommentit tai huomautukset.
  • purchased_at - tilauksen ostopäivä ja -aika muodossa YYYY-MM-DD HH:MM:SS.
  • client_ip (valinnainen) - asiakkaan IP-osoite.
  • client_user_agent (valinnainen) - asiakkaan user-agent-merkkijono.
  • rows - tilausrivien array, joista jokainen sisältää:
    • sku - tuotevariantin SKU. Katso lisätiedot Swaggerista.
    • quantity - tilatun tuotevariantin määrä.
    • client_barcode (valinnainen) - yksilöllinen asiakaspuolen tunniste per tilausrivi, muodossa Code 128.
    • cart_item_key (pakollinen ilman sources) - yksilöllinen tunniste alustasta, joka upottaa Fabrixa Studion; käytetään yhdistämään tallennetut mukautukset tilaukseen.
    • sources (pakollinen ilman cart_item_key) - tuotteeseen liittyvien lähdetiedostojen array, jokainen sisältää:
      • type - "file" PDF-tiedostolle tai "print" JPEG-, PNG- tai TIFF-tiedostolle.
      • url - lähdetiedoston URL.
  • customer - asiakkaan tiedot:
    • first_name, last_name, email, phone.
  • shipping_address - toimitustiedot:
    • address, address2 (valinnainen), address3 (valinnainen).
    • city, country_code (ISO 3166-2), country, postal_code, state (valinnainen).
    • first_name, last_name, phone (valinnainen), company (valinnainen).
  • shipping_label (valinnainen) - lähetystarran tiedot:
    • method_name - esim. "Post NL".
    • tracking_number, tracking_url, label_pdf_url.
    • date_created - muodossa YYYY-MM-DD HH:MM:SS.

Esimerkkipyyntö

{
  "number": "NL2024010201",
  "comments": "Customer agrees with a low resolution file.",
  "purchased_at": "2024-06-26 21:12:22",
  "client_ip": "127.0.0.1",
  "client_user_agent": "Mozilla",
  "rows": [
    {
      "variant_id": 2705,
      "quantity": 1,
      "client_barcode": "1234567890",
      "sources": [
        {
          "type": "file",
          "url": "https://samples-files.com/samples/sample.pdf"
        }
      ]
    }
  ],
  "customer": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "3VJtP@example.com",
    "phone": "0612345678"
  },
  "shipping_address": {
    "address": "Voorbeeldstraat",
    "address2": "17",
    "city": "Amsterdam",
    "country_code": "NL",
    "country": "Netherlands",
    "postal_code": "1012 AB",
    "state": "North Holland",
    "first_name": "John",
    "last_name": "Doe",
    "phone": "0612345678"
  },
  "shipping_label": {
    "method_name": "Post NL",
    "tracking_number": "3SABCD1234567",
    "tracking_url": "https://postnl.nl/tracktrace/3SABCD1234567",
    "label_pdf_url": "https://api.fabrixa.com/storage/8966630826422f36d822f91680012141.pdf",
    "date_created": "2024-01-01 00:00:00"
  }
}

Esimerkkivastaus

{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/orders"
    },
    "meta": [],
    "data": {
        "id": 20338,
        "number": "NL2024010201",
        "comments": "Customer agrees with a low resolution file.",
        "is_archived": false,
        "status": "imported",
        "fulfillment_status": "unfulfilled",
        "purchased_at": "2024-06-26T21:12:22.000000Z",
        "created_at": "2024-06-26T21:15:03.000000Z",
        "updated_at": "2024-06-26T21:15:04.000000Z",
        "rows": [
            {
                "id": 41600,
                "quantity": 1,
                "client_barcode": "1234567890",
                "fulfillment_status": "unfulfilled",
                "variant": {
                    "id": 2705,
                    "name": "Duvet Cover",
                    "subtitle": "140x200",
                    "SKU": "COT864311",
                    "product": {
                        "id": 1305,
                        "name": "Duvet Cover",
                        "subtitle": "Duvet Cover with a pillow"
                    }
                },
                "sources": [
                    {
                        "type": "file",
                        "url": "https://samples-files.com/samples/sample.pdf",
                        "properties": null
                    }
                ]
            }
        ],
        "shipments": [],
        "customer": {
            "email": "3VJtP@example.com",
            "first_name": "John",
            "last_name": "Doe",
            "phone": "0612345678"
        },
        "shipping_address": {
            "address": "Voorbeeldstraat",
            "address2": "17",
            "address3": null,
            "city": "Amsterdam",
            "country": "Netherlands",
            "country_code": "NL",
            "company": null,
            "first_name": "John",
            "last_name": "Doe",
            "phone": "0612345678",
            "state": "North Holland",
            "postal_code": "1012 AB"
        }
    }
}
MUUTA TILAUKSEN TIETOJA

Tilauksen päivittäminen

Päivitä tilaus lähettämällä PATCH-pyyntö osoitteeseen https://api.fabrixa.com/v2/integration/orders/{order_id}, jossa {order_id} on tilauksen Fabrixa-tunnus. Vain lähettämäsi kentät muuttuvat, ja tilauksen tila pysyy ennallaan. Vastaus sisältää päivitetyn tilauksen. Voit muuttaa:

  • number, comments, purchased_at, client_ip, client_user_agent.
  • customer - first_name, last_name, email, phone.
  • shipping_address - samat kentät kuin tilausta luotaessa.

Esimerkkipyyntö

{
  "comments": "Deliver to the neighbours if nobody is home.",
  "shipping_address": {
    "address": "Voorbeeldstraat",
    "address2": "19",
    "city": "Amsterdam",
    "country_code": "NL",
    "country": "Netherlands",
    "postal_code": "1012 AB",
    "first_name": "John",
    "last_name": "Doe",
    "phone": "0612345678"
  }
}

Esimerkkivastaus

{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/orders/20338"
    },
    "meta": [],
    "data": {
        "id": 20338,
        "number": "NL2024010201",
        "comments": "Deliver to the neighbours if nobody is home.",
        "is_archived": false,
        "status": "imported",
        "fulfillment_status": "unfulfilled",
        "purchased_at": "2024-06-26T21:12:22.000000Z",
        "created_at": "2024-06-26T21:15:03.000000Z",
        "updated_at": "2024-06-27T09:41:18.000000Z",
        "rows": [
            {
                "id": 41600,
                "quantity": 1,
                "client_barcode": "1234567890",
                "fulfillment_status": "unfulfilled",
                "variant": {
                    "id": 2705,
                    "name": "Duvet Cover",
                    "subtitle": "140x200",
                    "SKU": "COT864311",
                    "product": {
                        "id": 1305,
                        "name": "Duvet Cover",
                        "subtitle": "Duvet Cover with a pillow"
                    }
                },
                "sources": [
                    {
                        "type": "file",
                        "url": "https://samples-files.com/samples/sample.pdf",
                        "properties": null
                    }
                ]
            }
        ],
        "shipments": [],
        "customer": {
            "email": "3VJtP@example.com",
            "first_name": "John",
            "last_name": "Doe",
            "phone": "0612345678"
        },
        "shipping_address": {
            "address": "Voorbeeldstraat",
            "address2": "19",
            "address3": null,
            "city": "Amsterdam",
            "country": "Netherlands",
            "country_code": "NL",
            "company": null,
            "first_name": "John",
            "last_name": "Doe",
            "phone": "0612345678",
            "state": "North Holland",
            "postal_code": "1012 AB"
        }
    }
}
  • Tilausrivejä ei voi muuttaa: pyyntö, jossa on rows, hylätään koodilla 400 Bad Request. Jos haluat muuttaa tuotteita, peruuta tilaus ja luo uusi.
  • Tilassa on hold olevaa tilausta ei voi päivittää; API vastaa koodilla 412 Precondition Failed.
{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/orders/20338"
    },
    "meta": [],
    "errors": {
        "rows": [
            "Order rows cannot be changed. Cancel the order and create a new one."
        ]
    }
}
PYSÄYTÄ TILAUS

Tilauksen peruuttaminen

Peruuta tilaus lähettämällä POST-pyyntö ilman runkoa osoitteeseen https://api.fabrixa.com/v2/integration/orders/{order_id}/cancel, jossa {order_id} on tilauksen Fabrixa-tunnus (tilauksen numeerinen id-kenttä), ei oma tilausnumerosi. Vastaus sisältää tilauksen tilassa canceled, ja order.updated-webhook lähetetään.

  • Tilauksen voi peruuttaa niin kauan kuin sen tila on created, imported, accepted tai on hold ja sen fulfillment_status on yhä unfulfilled. Kun se muuttuu tilaan scheduled, tuotanto on alkanut eikä tilausta voi enää peruuttaa.
  • Peruutetun tilauksen veloitukset palautetaan saldollesi.
  • Jo peruutetun tilauksen peruuttaminen palauttaa sen muuttumattomana, joten pyynnön voi turvallisesti toistaa.

Esimerkkivastaus

{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/orders/20338/cancel"
    },
    "meta": [],
    "data": {
        "id": 20338,
        "number": "NL2024010201",
        "comments": "Customer agrees with a low resolution file.",
        "is_archived": false,
        "status": "canceled",
        "fulfillment_status": "unfulfilled",
        "purchased_at": "2024-06-26T21:12:22.000000Z",
        "created_at": "2024-06-26T21:15:03.000000Z",
        "updated_at": "2024-06-27T10:02:45.000000Z",
        "rows": [
            {
                "id": 41600,
                "quantity": 1,
                "client_barcode": "1234567890",
                "fulfillment_status": "unfulfilled",
                "variant": {
                    "id": 2705,
                    "name": "Duvet Cover",
                    "subtitle": "140x200",
                    "SKU": "COT864311",
                    "product": {
                        "id": 1305,
                        "name": "Duvet Cover",
                        "subtitle": "Duvet Cover with a pillow"
                    }
                },
                "sources": [
                    {
                        "type": "file",
                        "url": "https://samples-files.com/samples/sample.pdf",
                        "properties": null
                    }
                ]
            }
        ],
        "shipments": [],
        "customer": {
            "email": "3VJtP@example.com",
            "first_name": "John",
            "last_name": "Doe",
            "phone": "0612345678"
        },
        "shipping_address": {
            "address": "Voorbeeldstraat",
            "address2": "17",
            "address3": null,
            "city": "Amsterdam",
            "country": "Netherlands",
            "country_code": "NL",
            "company": null,
            "first_name": "John",
            "last_name": "Doe",
            "phone": "0612345678",
            "state": "North Holland",
            "postal_code": "1012 AB"
        }
    }
}

Jos tilausta ei voi peruuttaa, API vastaa koodilla 412 Precondition Failed ja syyn kertovalla viestillä: tilauksen nykyinen tila ei salli sitä (tila mainitaan viestissä) tai tuotanto on jo alkanut.

{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/orders/20338/cancel"
    },
    "meta": [],
    "errors": {
        "messages": [
            "This order cannot be canceled in its current status (ready for shipping)."
        ]
    }
}
TUONNISTA TOIMITUKSEEN

Tilauksen elinkaari

Tilausta seurataan kolmen tilan avulla: tilauksen status, sen tuotannon tila fulfillment_status ja jokaisen shipments-luettelon lähetyksen status. Jokainen muutos lähetetään order.updated-webhookissa, ja GET /orders/{order_id} palauttaa sen.

Tilauksen tilat

Tilauksen status-kentän arvot siinä järjestyksessä kuin ne saavutetaan:

Toteutustilat

Tilauksen ja jokaisen tilausrivin fulfillment_status-kentän arvot siinä järjestyksessä kuin ne saavutetaan. Tila etenee vain eteenpäin, ei koskaan taaksepäin:

Tilausta kokonaisuutena ei koskaan hylätä. Yksittäinen tuote voidaan hylätä tuotannon laadunvalvonnassa. Se tulostetaan silloin uudelleen: se palaa tilaan unfulfilled ja kulkee tuotannon läpi vielä kerran, kun taas tilaus säilyttää tilansa ja jatkuu, kun tuote on valmis.

Lähetyksen tilat

Jokaisen shipments-luettelon lähetyksen status-kentän arvot siinä järjestyksessä kuin ne saavutetaan:

Poikkeukset:

SEURAA TILAUSTUOTTEITASI

Jäljen täyttyminen

Saat tietyn tilauksen toteutustilan lähettämällä GET-pyynnön numeroon https://api.fabrixa.com/v2/integration/orders/{order_id}/fulfillments. Vastauksessa on luettelo tilaukseen liittyvistä toimituksista, mukaan lukien kunkin tuotteen tila, tuotetiedot ja tuotantovaiheen edistyminen.

Esimerkkivastaus

{
    "data": [
        {
            "id": 1499,
            "barcode": "1200004169200",
            "status": "unfulfilled",
            "created_at": "2024-08-19T12:38:59.000000Z",
            "updated_at": "2024-08-19T12:39:00.000000Z",
            "variant": {
                "id": 32327,
                "name": "Test iAPI blanket product",
                "subtitle": "100 x 150 cm",
                "SKU": "COF099191"
            },
            "product": {
                "id": 1306,
                "name": "Test iAPI blanket product",
                "subtitle": "Test iAPI blanket product"
            },
            "production_steps": [
                {
                    "id": 5,
                    "name": "Print duvet",
                    "description": "Printing the duvet according to the specified design and dimensions.",
                    "status": {
                        "value": "pending",
                        "notes": null,
                        "updated_at": null
                    }
                },
                {
                    "id": 6,
                    "name": "Print pillow",
                    "description": "Printing the pillow cover with the assigned design.",
                    "status": {
                        "value": "pending",
                        "notes": null,
                        "updated_at": null
                    }
                }
            ]
        }
    ]
}

Vastaus sisältää luettelon suorituksista, joista jokainen sisältää:

  • id - fulfilmentin yksilöllinen tunniste.
  • barcode - viivakoodi sisäiseen seurantaan ja tunnistamiseen; voidaan myös tulostaa tuotteeseen.
  • status - nykyinen fulfilment-tila: unfulfilled tai fulfilled.
  • created_at ja updated_at - luonti- ja viimeisimmän päivityksen aikaleimat.
  • variant - yksityiskohtaiset tiedot tuotevariantista: nimi, alaotsikko, SKU.
  • product - tuotetiedot: nimi, alaotsikko.
  • production_steps - tuotantovaiheiden array. Vaihelista riippuu tuotetyypistä. Jokaiselle vaiheelle:
    • id - tuotantovaiheen yksilöllinen tunniste.
    • name - esim. "Print duvet".
    • description - mitä tuotantovaihe sisältää.
    • status - nykyinen tila:
      • pending - ei vielä aloitettu.
      • in progress - parhaillaan käynnissä.
      • rejected - vaiheessa tapahtui ongelma eikä sitä suoritettu onnistuneesti.
      • done - vaihe on valmis.
    • notes - vaiheeseen liittyvät lisähuomautukset.
    • updated_at - viimeisin aika, jolloin vaiheen tila päivitettiin.

Jokainen toimitustietue vastaa tiettyä tuotetta tai tuoteversiota tilauksen sisällä, ja jokaisella tilauksen tuotteen kopiolla on oma toimitustietue – jokaista tuotetta seurataan yksitellen koko tuotannon ajan.

Jos tilaukselle ei palauteta toimituksia, tilaus ei ole vielä siirtynyt käsittelyvaiheeseen.

TULOSTUSTIEDOSTOJEN TOIMITTAMINEN

Lähdetiedostovaatimukset

Kun sisällytät lähdetiedostoja tilaukseesi, varmista, että ne täyttävät seuraavat vaatimukset:

type

Ensisijainen lähdemuoto on PDF. Tuotteelle, jossa on yksi painokerros, kuten peitto tai pyyhe, käy myös JPEG-, PNG- tai TIFF-tiedosto. Monikerroksiselle tuotteelle toimita PDF-tiedosto, jossa jokainen kerros on omalla sivullaan: käsittelyssä jokaista sivua kohdellaan omana kerroksenaan, joten monikerroksinen suunnittelu lähetetään yhtenä tiedostona. Katso PDF-vaatimukset ja sivujärjestys.

Aseta type tiedostomuodon mukaan. PDF-tiedostolle käytä arvoa "file": jokainen sivu painetaan yhdelle tuotteen kerrokselle tuotteelle ilmoitetussa sivujärjestyksessä. JPEG-, PNG- tai TIFF-tiedostolle, joka sopii yhden painokerroksen tuotteelle, käytä arvoa "print".

"sources": [
    {
        "type": "file",
        "url": "https://samples-files.com/samples/source.pdf"
    }
]

Lisätietoja on Swagger-dokumentaatiossa.

url

Kentässä url on oltava suora linkki lähdetiedostoon. Varmista, että URL-osoite on käytettävissä ja että tiedosto voidaan ladata ilman todennusta. Linkin on oltava käytettävissä koko tuotantoprosessin ajan.

Miten lataamme tiedoston

Lataamme tiedoston palvelimeltasi kahdesti: Range: 0-0 -pyynnöllä tilausta validoitaessa ja sen jälkeen kokonaan. Molemmat pyynnöt lähettävät User-Agentin Fabrixa/2.0 (+https://api.fabrixa.com/docs/integration#sources; print file fetch); jos sivustosi suodattaa automaattista liikennettä, salli se. URL-osoitteen on käytettävä HTTPS:ää portissa 443 ja palautettava tiedosto suoraan, ilman uudelleenohjauksia, tiedoston todellisella Content-Type-arvolla, esim. application/pdf. Jokainen pyyntö aikakatkaistaan 60 sekunnin jälkeen.

Tiedostomuoto

Toimita PDF-tiedosto tai yksikerroksiselle tuotteelle JPEG-, PNG- tai TIFF-tiedosto, joka tarjoillaan sen todellisella Content-Type-arvolla. PNG-kuvan läpinäkyvät alueet tulostuvat valkoisina. Varmista, että kuvat ovat laadukkaita ja painokelpoisia.

Kuvan mitat

Maksimimitat ovat 15,000 pixels kummallakin puolella. Tämän rajan ylittävien kuvien kokoa voidaan muuttaa tai ne voidaan hylätä. Kuvan resoluution tulee vastata tuotteen mittoja; muuten kuvien kokoa voidaan muuttaa tai rajata sopivaksi.

Resoluutio

Ei erityisiä tarkkuusvaatimuksia - varmista vain, että kuvanlaatu on riittävä tulostukseen.

Väriavaruus

Kuvien tulee olla RGB väriavaruudessa, jotta värit esitetään tarkasti. Muut väriavaruudet muunnetaan käsittelyn aikana, mikä voi johtaa vääriin väreihin.

Tiedoston koko

Jokainen lähdetiedosto voi olla enintään 200 MB. Suurempi tiedosto hylätään: tilausta luotaessa, jos palvelimesi lähettää Content-Length-otsakkeen, muuten tiedostoa ladattaessa.

PDF-vaatimukset ja sivujärjestys

PDF:n sivujen järjestys on tärkeä. Sivut kohdistetaan tuotetasoihin sijainnin mukaan, ja odotettu sivujärjestys riippuu tuotetyypistä. Varmista, että PDF-tiedoston sivut noudattavat lähettämäsi tuotteen oikeaa kerrosjärjestystä.

TuotePDF-sivujen järjestys
Duvet Cover
  1. Duvet cover
  2. Pillow front
  3. Pillow back
Curtains
  1. Left curtain
  2. Right curtain
T-shirt
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Collar
Tanktop
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Collar
Sweater
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Left cuff
  6. Right cuff
  7. Collar
  8. Waistband
Hoodie
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Left cuff
  6. Right cuff
  7. Hood inside left
  8. Hood inside right
  9. Hood outside left
  10. Hood outside right
  11. Waistband
  12. Pocket lower left
  13. Pocket lower right
  14. Pocket upper right
  15. Pocket upper left
Sweatpants
  1. Front right
  2. Front left
  3. Back left
  4. Back right
  5. Left cuff
  6. Right cuff
  7. Waistband
  8. Right pocket
  9. Left pocket
  10. Back pocket
  11. Back pocket interfacing
Sweatshorts
  1. Front right
  2. Front left
  3. Back left
  4. Back right
  5. Waistband
  6. Right pocket
  7. Left pocket

Tärkeää: jokaisen PDF-sivun on vastattava tuotekerroksen vaadittuja mittoja ja oltava oikein suunnattu. Aseta taide niin, että kuvion yläreuna on kohdakkain sivun yläosan kanssa. Virheellinen sivun koko tai suunta voi aiheuttaa skaalaus-, kierto- tai kohdistusongelmia tuotannossa.

SUUNNITTELE TOIMITUS

Toimitus

Selvitä ennen tilauksen tekemistä, mitä sen toimitus maksaa ja kuinka kauan se on matkalla, samoilla säännöillä, joilla Fabrixa hinnoittelee itse tilauksen.

MIHIN MAIHIN TOIMITETAAN

Toimitusmaat

Saat selville, mihin maihin tuoteversion voi toimittaa, lähettämällä GET-pyynnön osoitteeseen https://api.fabrixa.com/v2/integration/shipping/countries tunnuksillasi. Luettelossa ovat nimen mukaan järjestettyinä ne maat, joihin versiota valmistavalla toimipisteellä on toimitushinta jollekin lähetyspaketille, johon versio voidaan pakata. Jos maata ei ole luettelossa, sinne ei ole toimitushintaa tälle versiolle.

Kyselyparametrit

  • variant_id tai sku - versio, johon viitataan samoin kuin tilausrivillä, kuten arviossa.

Esimerkkipyyntö

curl -X 'GET' \
  'https://api.fabrixa.com/v2/integration/shipping/countries?sku=DDC-140200' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
  -H 'X-Application-Key: APPLICATION_KEY'

Esimerkkivastaus

{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/shipping/countries"
    },
    "meta": {
        "total": 2
    },
    "data": [
        {
            "code": "BE",
            "name": "Belgium",
            "min_shipping_price": "7.75",
            "max_shipping_price": "9.85",
            "currency": "EUR",
            "min_eta_days": 1,
            "max_eta_days": 2
        },
        {
            "code": "NL",
            "name": "Netherlands",
            "min_shipping_price": "6.70",
            "max_shipping_price": "8.40",
            "currency": "EUR",
            "min_eta_days": 1,
            "max_eta_days": 1
        }
    ]
}

Vastauksen kentät

  • code ja name - maa ja sen ISO 3166-1 alpha-2 -koodi, jonka voit antaa parametrina country_code arviota pyytäessäsi.
  • min_shipping_price ja max_shipping_price - vaihteluväli sille, mitä yhden lähetyspaketin toimitus kyseiseen maahan maksaa ilman arvonlisäveroa currency-kentän valuutassa, kun huomioidaan kaikki lähetyspaketit, joihin versio voidaan pakata. Usean yksikön tilaus voi vaatia useita paketteja, joten pyydä arvio tietyn määrän hinnasta.
  • min_eta_days ja max_eta_days - vaihteluväli sille, montako päivää paketti on matkalla kuljetusyhtiölle luovuttamisen jälkeen, tuotantoaikaa mukaan laskematta; null, kun toimitushinnoissa ei ole toimitusaika-arviota.
ENNEN KUIN TILAAT

Arvioi toimitus

Saat selville, mitä tuoteversion toimitus maksaisi ja kauanko se olisi matkalla, lähettämällä GET-pyynnön osoitteeseen https://api.fabrixa.com/v2/integration/shipping/estimate tunnuksillasi. Arvio noudattaa samoja sääntöjä, joilla tilaus hinnoitellaan: yksiköt pakataan versiota valmistavan toimipisteen lähetyspaketteihin, ja jokainen paketti hinnoitellaan reitin mukaan kyseisestä toimipisteestä kohdemaahan. Mitään ei tilata eikä varata, ja tilaus hinnoitellaan vasta, kun se tehdään, joten sen toimituskulut voivat poiketa arviosta, jos toimitushinnat muuttuvat sillä välin.

Kyselyparametrit

  • variant_id tai sku - versio, johon viitataan samoin kuin tilausrivillä: jonkin tuotteesi versio tai katalogin versio. Sen on oltava versio, jonka voit tilata.
  • country_code - sen maan ISO 3166-1 alpha-2 -koodi, johon tilaus toimitetaan, esimerkiksi NL.
  • quantity - yksiköiden määrä väliltä 1–1000.

Esimerkkipyyntö

curl -X 'GET' \
  'https://api.fabrixa.com/v2/integration/shipping/estimate?sku=DDC-140200&country_code=NL&quantity=2' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
  -H 'X-Application-Key: APPLICATION_KEY'

Esimerkkivastaus

{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/shipping/estimate"
    },
    "meta": [],
    "data": {
        "variant_id": 32323,
        "sku": "DDC-140200",
        "quantity": 2,
        "country_code": "NL",
        "origin_country": {
            "code": "PT",
            "name": "Portugal"
        },
        "packages_count": 1,
        "packages": [
            {
                "package_type": "Small Box",
                "length": 30,
                "width": 20,
                "height": 10,
                "quantity": 1,
                "price": "7.45",
                "eta_days": 3
            }
        ],
        "shipping_price": "7.45",
        "currency": "EUR",
        "eta_days": 3
    }
}

Vastauksen kentät

  • variant_id, sku, quantity ja country_code - versio, määrä ja kohde, joita arvio koskee.
  • origin_country - maa, josta versio lähetetään, kenttineen code ja name.
  • packages_count - niiden lähetyspakettien määrä, joihin yksiköt pakataan.
  • packages - itse paketit, yksi rivi pakettityyppiä kohden: package_type, sen length, width ja height senttimetreinä, tällaisten pakettien quantity, yhden paketin toimituksen price ja sen eta_days. Hinnat kerrottuina määrillä antavat yhteensä summan shipping_price.
  • shipping_price - kaikkien pakettien yhteenlaskettu toimitushinta ilman arvonlisäveroa currency-kentän valuutassa. Jos reitillä ei ole toimitushintaa, toimitus on maksuton kuten tilauksessakin, ja hinnaksi merkitään 0.00.
  • eta_days - päivien määrä, jonka hitain paketti on matkalla kuljetusyhtiölle luovuttamisen jälkeen, tuotantoaikaa mukaan laskematta; null, kun reitillä ei ole toimitusaika-arviota.

Pyyntöön, joka ei läpäise validointia, vastataan koodilla 400 Bad Request ja kunkin kentän syyllä samoin viestein kuin tilausrivillä, esimerkiksi The variant not found. Jos yksiköille ei sovi mikään lähetyspaketti, vastaus on 400 Bad Request viestillä No shipping package can carry the variant.

TUOTTEEN MUKAUTUS

Fabrixa Studio

Fabrixa Studio on työkalu, jonka avulla käyttäjät voivat räätälöidä ja personoida tuotteita saumattomasti reaaliajassa intuitiivisen käyttöliittymän avulla, jossa käyttäjät voivat luoda tai lähettää omia mallejaan.

Fabrixa Studio on ihanteellinen yrityksille, jotka tarjoavat räätälöityjä tuotteita - mahdollistaen asiakkaiden visualisoinnin suunnittelussa ennen tilausten viimeistelyä.

LISÄÄ STUDIO KAUPPAASI

Upota Fabrixa Studio

Voit upottaa Fabrixa Studion verkkosivustollesi käyttämällä iframe-komentoa. Näin asiakkaasi voivat muokata tuotteita suoraan sivustollasi kassalla.

Esimerkki iframe-kehyksestä Fabrixa Studion upottamista varten:

<iframe id="fabrixa-studio"
    src="https://studio.fabrixa.com?application_key={application_key}&sku={product_sku}&cart_item_key={cart_item_key}"
    name="FabrixaStudio"
    scrolling="no"
    frameborder="1"
    width="100%"
    height="100%"
    allowfullscreen="">
</iframe>

Korvaa product_sku-, cart_item_key- ja application_key-arvot dynaamisilla arvoillasi.

Studion otsakkeessa näkyy tuotteen nimi sellaisena kuin se on kaupassasi - sama otsikko, jonka asiakkaasi näkevät - ja sen alla valitun muunnelman vaihtoehdot. Se on kauppasi oma kopio tuotteesta, joten Fabrixassa muokkaamasi nimi näkyy myös Studiossa; locale ei käännä sitä.

Pyydä luomaan tilaus cart_item_key

{
  "number": "NL2024010201",
  "purchased_at": "2024-06-26 21:12:22",
  "client_ip": "127.0.0.1",
  "client_user_agent": "Mozilla",
  "rows": [
    {
      "sku": "SB796162",
      "quantity": 1,
      "cart_item_key": "0cb76770-de2d-4524-aa48-47b6e5f0d8a5"
    }
  ],
  "customer": {
    "...": "..."
  },
  "shipping_address": {
    "...": "..."
  },
  "shipping_label": {
    "...": "..."
  }
}
KUULU ASIAKKAAN TOIMENPITEITÄ

Hallitse Studio-tapahtumia

Kun Lisää ostoskoriin -painiketta napsautetaan iframe-kehyksen sisällä, seuraava komento suoritetaan:

window.parent.postMessage('customizationFinished', '*');

Vastaavasti, kun Takaisin-painiketta napsautetaan:

window.parent.postMessage('closeButtonClicked', '*');

postMessage-menetelmä helpottaa lähteiden välistä viestintää iframe-kehyksen ja sen ylätason ikkunan välillä, jolloin se voi ilmoittaa ylätason käyttäjälle tietyistä käyttäjän toimista.

Ensimmäinen argumentti postMessage on tiedot, jotka haluat lähettää. Merkkijono 'customizationFinished' osoittaa, että käyttäjä on viimeistellyt mukauttamisen ja lisää tuotteen ostoskoriin. 'closeButtonClicked' osoittaa, että käyttäjä on päättänyt palata takaisin.

Kuuntele ylätason ikkunassa näitä viestejä käyttämällä message-tapahtuman kuuntelua:

window.addEventListener('message', function(event) {
    if (event.origin === 'https://studio.fabrixa.com') {
        if (event.data === 'customizationFinished') {
            // Handle the Add to Cart event
            console.log('Customization finished and item can be added to cart.');
        } else if (event.data === 'closeButtonClicked') {
            // Handle the Back button event
            console.log('Back button clicked.');
        }
    }
});

Tarkista aina saapuvien viestien origin varmistaaksesi, että ne tulevat luotettavasta lähteestä. Riippuen vastaanotetusta viestistä, suorita tarvittavat toimenpiteet - päivitä käyttöliittymä, käsittele ostoskori jne. origin-tarkistus on erittäin tärkeää turvallisuuden kannalta - se estää luvattomia komentosarjoja vuorovaikutuksessa sovelluksesi kanssa.

NÄYTÄ VALMIS SUUNNITELMA

Mukauttamisen esikatselu

Kun mukauttaminen on valmis, näytä lopullinen malli käyttämällä alla olevaa esikatselu-URL-osoitetta. Tämä URL-osoite palauttaa kuvan mukautetusta tuotteesta, joka sopii src-arvoksi <img>-tunnisteessa. Ihanteellinen mukautetun tuotteen näyttämiseen ostoskorissasi, tilausyhteenvedossa tai missä tahansa myymäläsi käyttöliittymässä.

https://api.fabrixa.com/v2/studio/customizations/{CART_ITEM_KEY}/preview?Application-Key={APPLICATION_KEY}

Korvaa {CART_ITEM_KEY} todellisella ostoskorin nimikeavaimella ja {APPLICATION_KEY} voimassa olevalla sovellusavaimellasi.

Esimerkki käytöstä kuvatunnisteessa:

<img
    src="https://api.fabrixa.com/v2/studio/customizations/{CART_ITEM_KEY}/preview?Application-Key={APPLICATION_KEY}"
    alt="Customized Product Preview"
    style="max-width: 100%; height: auto;" />
KOKEILE SITÄ ARVOJEN KANSSA

Live-demo

Räätälöinnin esikatselu tulee näkyviin tähän, kun suunnittelu on valmis.

Customization preview
VASTAA TAPAHTUMAPÄIVITYKSIÄ

Webhooks

Fabrixa käyttää Webhookeja ilmoittamaan järjestelmällesi reaaliaikaisista tapahtumista – tilauspäivityksistä tai luomuksista. Kun tapahtuma tapahtuu, Fabrixa lähettää palvelimellesi webhookin, joka sisältää tarvittavat tiedot. Palvelimesi on esitettävä julkinen POST-päätepiste saapuvien webhookien käsittelemiseksi.

TARKASTA SAAPUT OTSIKKOJASI

Webhook-pyyntöotsikot

Webhook-pyyntö sisältää seuraavat otsikot, jotka auttavat sinua tunnistamaan ja vahvistamaan saapuvan pyynnön:

{
  "content-type": "application/json",
  "user-agent": "Fabrixa/2.0 (+https://api.fabrixa.com/docs/integration#webhooks; webhook)",
  "x-webhook-signature": "YmEwNjBhMGMyMzE3ZWQ5NGQ5NDYwOGVhNzNhMjQ4M2MyODZkZmI3NTQ1YzYxYjdkMzNhZjgzYzBmMTkxYTAxMw==",
  "x-webhook-topic": "order.updated"
}
Otsikkojen erittely

Webhookit lähetetään User-Agentilla Fabrixa/2.0 (+https://api.fabrixa.com/docs/integration#webhooks; webhook); jos endpointisi suodattaa automaattista liikennettä, salli se. Varmistaaksesi, että pyyntö tulee Fabrixalta, tarkista x-webhook-signature.

VALITSE TAPAHTUMAN AIHEET

Webhook-tapahtumat

Fabrixa webhookit ilmoittavat järjestelmällesi tilauksen tilan tai toiminnan muutoksista. Jokainen webhook käynnistyy tietyllä x-webhook-topic-arvolla. Tällä hetkellä tuetut aiheet:

AiheKuvaus
order.created Käynnistyy, kun uusi tilaus tehdään Fabrixaan joko API-pyynnön kautta tai suoraan alustalla.
order.updated Käynnistyy, kun tilauksen tiedot, kuten tilauksen tila tai toteutustila, päivitetään.
TARKASTA TAPAHTUMASSI HYÖDYKUORMA

Esimerkki Webhook-hyötykuormasta

Esimerkki webhookin mukana lähetetystä hyötykuormasta. Tämä hyötykuorma edustaa tilauspäivitystä:

{
  "id": 23069,
  "number": "1250211835",
  "comments": null,
  "is_archived": false,
  "status": "accepted",
  "fulfillment_status": "fulfilled",
  "purchased_at": "2025-04-17T16:17:21.000000Z",
  "created_at": "2025-04-17T16:17:23.000000Z",
  "updated_at": "2025-04-18T07:43:52.000000Z",
  "rows": [
    {
      "id": 27954,
      "quantity": 1,
      "client_barcode": "1250211835",
      "fulfillment_status": "fulfilled",
      "variant": {
        "id": 293457,
        "name": "Sherpa fleece deken",
        "subtitle": "100x150",
        "SKU": "SFD787231",
        "product": {
          "id": 5319,
          "name": "Sherpa fleece deken",
          "subtitle": "Sherpa fleece deken"
        }
      },
      "sources": [
        {
          "type": "print",
          "url": "https://storage.googleapis.com/fabrixa-api/storage/99b10aaa-df4d-47e4-9bc9-b1d6a785df4c/orders/merchandise-sources/120002795400.pdf",
          "properties": {
            "fill_style": "contain"
          }
        }
      ]
    }
  ],
  "shipments": [
    {
      "id": 4182,
      "carrier": "PostNL",
      "method": "Standard",
      "status": "registered",
      "tracking_number": "3SABCD1234567",
      "tracking_url": "https://jouw.postnl.nl/track-and-trace/3SABCD1234567-NL-1012AB",
      "packages": [
        {
          "tracking_number": "3SABCD1234567",
          "tracking_url": "https://jouw.postnl.nl/track-and-trace/3SABCD1234567-NL-1012AB"
        }
      ],
      "expected_delivery_date": "2025-04-22",
      "created_at": "2025-04-18T07:43:50.000000Z"
    }
  ]
}

Kun tilaus on lähetetty, shipments listaa jokaisen lähetyksen kuljetusyhtiön (carrier), toimitustavan (method), tilan (status: pending, registered, collected, in transit, delivered, failed, returned tai canceled) ja seurannan: tracking_number ja tracking_url, sekä samat tiedot jokaisesta paketista kentässä packages, kun lähetyksessä on useita paketteja. order.updated-webhook lähetetään aina, kun lähetyksen tila tai seuranta muuttuu, ja GET /orders/{order_id} palauttaa saman kentän.

VAHVISTA WEBHOOK-LÄHDESI

Tarkista Webhook-allekirjoitukset

Varmista x-webhook-signature-otsikko varmistaaksesi, että webhook-pyyntö on aito ja vahingoittumaton. Tämä tarkoittaa, että HMAC-SHA256-allekirjoitus lasketaan uudelleen raakapyynnön hyötykuorman ja salaisen avaimen avulla, minkä jälkeen sitä verrataan vastaanotettuun allekirjoitukseen.

Raaka PHP esimerkki

$payload = file_get_contents('php://input');
$yourSecret = 'your-secret-key';
$expectedSignature = base64_encode(hash_hmac('sha256', $payload, $yourSecret, true));
$receivedSignature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';

if (!hash_equals($expectedSignature, $receivedSignature)) {
    http_response_code(403);
    exit('Invalid signature');
}

Laravel esimerkki

public function handle(Request $request)
{
    $yourSecret = 'your-secret-key';
    $payload = $request->getContent();
    $expectedSignature = base64_encode(hash_hmac('sha256', $payload, $yourSecret, true));
    $receivedSignature = $request->header('x-webhook-signature');

    if (!hash_equals($expectedSignature, $receivedSignature)) {
        abort(403, 'Invalid signature');
    }

    // Continue processing...
}

Korvaa $yourSecret jaetulla salaisella avaimellasi. Käytä aina hash_equals allekirjoitusten vertaamiseen ajoitushyökkäysten vähentämiseksi.

MITÄ JOS TOIMITUS EIVÄLLÄ?

Webhook-uudelleenyritykset

Webhookit poistetaan oletusarvoisesti käytöstä 10 epäonnistuneen toimitusyrityksen jälkeen. Jos päätepisteesi palauttaa epäonnistuneen tilan, kuten 404 tai minkä tahansa 5xx-virheen, webhook yrittää uudelleen yhteensä 10 kertaa. Jos se jatkaa ei-2xx- tai ei-3xx-vastauskoodin palauttamista, se poistetaan käytöstä. Onnistuneita vastauksia ovat mm.

PALAUTTA SELKEÄ VASTAUS

Webhook-vastaus

Suosittelemme, että päätepiste palauttaa 200 OK-tilakoodin mahdollisimman nopeasti vahvistaakseen webhookin onnistuneen vastaanottamisen. Vaikka mitä tahansa 2xx tai 3xx vastausta pidetään onnistuneena, 200 on yleisimmin käytetty ja luotettavin.

Toimituksen aikakatkaisujen tai uudelleenyritysten välttämiseksi palauta 200 OK välittömästi ja käsittele webhook-hyötykuorman käsittelyä asynkronisesti, esimerkiksi taustatyön tai jonon kautta. Jos päätepisteesi vastaaminen kestää liian kauan, sitä voidaan pitää epäonnistuneena, vaikka vastaus olisi lopulta onnistunut.

Vastaukset, joiden tilakoodit ovat alueella 4xx tai 5xx, tai aikakatkaisut, käynnistävät uudelleenyritykset uudelleenyritysmekanismin mukaisesti.