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.
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.
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.nulljos 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.
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.
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.
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:
- yhdistää Shopify- tai WooCommerce-kaupan tai luoda Integration API -kanavan;
- lisätä tuotteita sekä tarkistaa hinnat ja toimitusarviot;
- tuoda, luoda, päivittää ja peruuttaa tilauksia;
- varmistaa, ettei mitään näistä tilauksista valmisteta eikä veloiteta saldoltasi;
- tarkistaa webhookien toimituksen ja allekirjoitukset.
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.
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.
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
pagejalimit(enintään 100) - jakavat luettelon sivuihin. Ilman niitä koko katalogi palautetaan yhdessä vastauksessa.search- tuotteet, joiden nimi sisältää tekstin tai joiden slug tai versionSKUalkaa 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,populartaisold, järjestyksessäsort_orderasctaidesc. 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,codejaHS_code, tullitariffikoodi.is_sellable- onko tuote avoinna myyntiin. Suljettu tuote on yhä luettelossa, mutta tilaus sen versiolle hylätään.variants_min_selling_pricejavariants_max_selling_price- lueteltujen versioiden hintahaarukka.type- tuotetyyppi, joka määrää painokerrokset ja PDF-sivujärjestyksen;status- katalogissa ainaActive.categories- kategoriat, joihin tuote kuuluu, kullakin omaparent_category.images- tuotekuvat kenttineenurl,is_main,screen_type_sizejasort_number.variants- tuotteen tilattavat versiot:id,name,subtitle,SKU,selling_price, mitatwidth,height,lengthjaweightsekäoptions, vaihtoehtoarvot, jotka määrittävät tämän version, esimerkiksi sen koon.
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
pagejalimit(enintään 100) - jakavat luettelon sivuihin. Ilman niitä palautetaan kaikki kategoriat.search- kategoriat, joiden nimi sisältää tekstin.with_products_only-truejättää pois kategoriat, joissa ei ole yhtään katalogin tuotetta suoraan eikä alakategoriassa.sort_by-category_nametaicategory_created, järjestyksessäsort_orderasctaidesc. 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
}
]
}
]
}
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
pagejalimit(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 versionSKUalkaa 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,lengthjaweight.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.categoriesjacollections- kategoriat ja kokoelmat, joihin olet tilissäsi tuotteen lajitellut.images- tuotekuvat kenttineenurl,is_main,image_size,screen_type_sizejasort_number.variants- tuotteen tilattavat versiot, katso Tuoteversiot:id,name,subtitle,SKU,options,imagesja painokerrokset kentissäavailable_source_typesjarequired_source_types.
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,imagesjaproduct, 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ähdetiedostontypevoi 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 nimitype-arvona; rivi, josta jokin puuttuu, hylätään vastauksella400 Bad Requestja 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 taisku-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 Requestja 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.taiThe catalog variant is not active.
Tilaukset
Luo tilauksia Fabrixassa omalta myymälältäsi tai alustaltasi, liitä tarvittavat tulostustiedostot ja seuraa jokaista tuotetta sen eteneessä.
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 muodossaYYYY-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, muodossaCode 128.cart_item_key(pakollinen ilmansources) - yksilöllinen tunniste alustasta, joka upottaa Fabrixa Studion; käytetään yhdistämään tallennetut mukautukset tilaukseen.sources(pakollinen ilmancart_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- muodossaYYYY-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"
}
}
}
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 koodilla400 Bad Request. Jos haluat muuttaa tuotteita, peruuta tilaus ja luo uusi. - Tilassa
on holdolevaa tilausta ei voi päivittää; API vastaa koodilla412 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."
]
}
}
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,acceptedtaion holdja senfulfillment_statuson yhäunfulfilled. Kun se muuttuu tilaanscheduled, 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)."
]
}
}
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:
imported- tilaus on vastaanotettu API:n kautta. Jokainen tilaus alkaa tästä.on hold- saldo ei kata tilauksen kustannuksia. Kun saldo on täydennetty, tilaus palaa tilaanimportedja jatkuu.accepted- tilaus on hyväksytty ja lähetetään tuotantoon.completed(lopullinen) - kaikki tuotteet on valmistettu.canceled(lopullinen) - tilaus on peruttu. Se on mahdollista niin kauan kuin tilaus on tilassaimported,acceptedtaion holdeikä tuotanto ole vielä alkanut.
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:
unfulfilled- tuotanto ei ole alkanut.scheduled- tilaus on ajoitettu tuotantoerään. Tästä eteenpäin sitä ei voi enää perua.processing- tuotanto on käynnissä.partially fulfilled- osa tuotteista on valmiita, loput ovat vielä tuotannossa.fulfilled(lopullinen) - kaikki tuotteet ovat valmiita. Tilauksenstatusmuuttuu silloin arvooncompleted.
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:
pending- lähetystä valmistellaan.registered- osoitetarra on luotu kuljetusyhtiölle.collected- kuljetusyhtiö on noutanut paketin.in transit- paketti on matkalla.delivered(lopullinen) - paketti on toimitettu.
Poikkeukset:
failed- kuljetusyhtiö on ilmoittanut ongelmasta.returned(lopullinen) - paketti on palautettu meille.canceled(lopullinen) - lähetys on peruttu.
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_atjaupdated_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.
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ä.
| Tuote | PDF-sivujen järjestys |
|---|---|
| Duvet Cover |
|
| Curtains |
|
| T-shirt |
|
| Tanktop |
|
| Sweater |
|
| Hoodie |
|
| Sweatpants |
|
| Sweatshorts |
|
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.
Toimitus
Selvitä ennen tilauksen tekemistä, mitä sen toimitus maksaa ja kuinka kauan se on matkalla, samoilla säännöillä, joilla Fabrixa hinnoittelee itse tilauksen.
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_idtaisku- 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
codejaname- maa ja sen ISO 3166-1 alpha-2 -koodi, jonka voit antaa parametrinacountry_codearviota pyytäessäsi.min_shipping_pricejamax_shipping_price- vaihteluväli sille, mitä yhden lähetyspaketin toimitus kyseiseen maahan maksaa ilman arvonlisäveroacurrency-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_daysjamax_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.
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_idtaisku- 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, esimerkiksiNL.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,quantityjacountry_code- versio, määrä ja kohde, joita arvio koskee.origin_country- maa, josta versio lähetetään, kenttineencodejaname.packages_count- niiden lähetyspakettien määrä, joihin yksiköt pakataan.packages- itse paketit, yksi rivi pakettityyppiä kohden:package_type, senlength,widthjaheightsenttimetreinä, tällaisten pakettienquantity, yhden paketin toimituksenpriceja seneta_days. Hinnat kerrottuina määrillä antavat yhteensä summanshipping_price.shipping_price- kaikkien pakettien yhteenlaskettu toimitushinta ilman arvonlisäveroacurrency-kentän valuutassa. Jos reitillä ei ole toimitushintaa, toimitus on maksuton kuten tilauksessakin, ja hinnaksi merkitään0.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.
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ä.
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.
application_key- yksilöllinen avain Integration API -todennusta varten.product_sku- tuotevariantin SKU, joka haetaan Integration API:sta.cart_item_key- upottavan alustan yksilöllinen arvo, joka tunnistaa tuotteeseen liittyvän ostoskoririvin. Sitä käytetään käyttäjän mukautusten tallentamiseen; tilausta luotaessa se tunnistaa tallennetut mukautukset ja liittää ne tilaukseen. Katso esimerkki alta.locale(valinnainen) - Studion käyttöliittymän ja virheilmoitusten kieli, esim.de_DEtaide. Ilman sitä Studio avautuu ostajan selaimen kielellä, jos sitä tuetaan, muuten englanniksi.
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": {
"...": "..."
}
}
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.
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;" />
Live-demo
Räätälöinnin esikatselu tulee näkyviin tähän, kun suunnittelu on valmis.
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.
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
content-type- ainaapplication/jsonwebhooks-pyynnöissä.x-webhook-signature- HMAC-SHA256-allekirjoitus pyynnön varmistusta varten.x-webhook-topic- webhookin tapahtumatyyppi tai aihe. Esimerkiksi:order.created- käynnistyy, kun uusi tilaus luodaan.order.updated- käynnistyy, kun olemassa oleva tilaus päivitetään.
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.
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:
| Aihe | Kuvaus |
|---|---|
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. |
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.
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.
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.
2xx- osoittaa onnistuneen käsittelyn, esim.200 OK.301ja302- uudelleenohjausvastaukset, jotka osoittavat, että webhook on käsitelty tai lähetetty onnistuneesti.
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.