IZSTRĀDĀTĀJIEM · Integration API dokumentācija

Fabrixa Integration API dokumentācija

29 min lasīšanas Pēdējoreiz atjaunināts: 06-11-2026 119 skatījumi

Integration API palīdz izveidot un pārvaldīt Fabrixa pasūtījumus, atvērt Fabrixa Studio un ar tīmekļa āķu palīdzību sekot līdzi ražošanas un izpildes statusam. API atbilst REST principiem un visos pieprasījumu un atbilžu ķermeņos izmanto JSON.

BĀZES URL

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

Sūtiet visus pieprasījumus uz šo bāzes URL, kam seko konkrētā galapunkta ceļš. Bāzes URL ir pamats darbam ar Fabrixa API - resursu iegūšanai, izveidei, atjaunināšanai vai dzēšanai.

PIRMS PIRMĀ PIEPRASĪJUMA

Autentifikācija

Lai piekļūtu Integration API, autentificējiet savus pieprasījumus gan ar lietotnes piekļuves pilnvaru (access token), gan ar lietotnes atslēgu:

Authorization galvene
Authorization: Bearer APPLICATION_ACCESS_TOKEN
Lietotnes atslēgas galvene
X-Application-Key: APPLICATION_KEY
cURL komandas piemērs
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'

Aizstājiet APPLICATION_ACCESS_TOKEN ar savu faktisko piekļuves pilnvaru un APPLICATION_KEY ar savu faktisko lietotnes atslēgu.

KĀ VEIDOTAS ATBILDES

Galapunkti un pieprasījumi

Integration API galapunkti ir sakārtoti pēc resursa veida un atbilst REST arhitektūras stilam. Katrs galapunkts pārstāv resursu, un darbības ar šiem resursiem tiek veiktas, izmantojot standarta HTTP metodes.

Visi Integration API pieprasījumi un atbildes ir JSON formātā, nodrošinot konsekventu un viegli lietojamu saskarni darbam ar API.

Pilnu informāciju par katru galapunktu, tostarp pieprasījumu un atbilžu piemērus, skatiet mūsu Swagger dokumentācijā.

Atbildes formāts

Visi galapunkti atgriež datus standartizētā formātā ar šādiem objektiem:

{
  "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"
    }
  ]
}

Atbildes objektu apraksts

links

Satur lapošanas saites, ar kurām pārvietoties pa rezultātiem.

  • self — pašreizējās lapas URL.
  • first_page — rezultātu pirmās lapas URL.
  • last_page — rezultātu pēdējās lapas URL.
  • next_page — nākamās lapas URL. null, ja nākamās lapas nav.
  • prev_page — iepriekšējās lapas URL. null, ja iepriekšējās lapas nav.

meta

Satur atbildes metadatus, piemēram, informāciju par lapošanu.

  • total — kopējais pieejamo vienību skaits visās lapās.
  • current_page — rezultātu pašreizējās lapas numurs.
  • per_page — vienību skaits lapā.

data

Atbildes galvenais saturs. data atšķiras atkarībā no galapunkta - tas var būt viens objekts, piemēram, viens produkts, vai objektu masīvs, piemēram, produktu saraksts.

KAD KAS NOIET NE TĀ

Kļūdas un statusa kodi

Visi API pieprasījumi atgriež HTTP statusa kodus, kas sniedz ieskatu atbildē.

400 Bad Request

Serveris nevar apstrādāt pieprasījumu validācijas kļūdu dēļ - trūkstoši vai nederīgi parametri.

401 Unauthorized

Klients nav norādījis derīgus autentifikācijas datus. Tiek atgriezts arī tad, ja piekļuves pilnvara ir atsaukta.

403 Forbidden

Serveris noraidīja pieprasījumu nepietiekamu piekļuves tiesību dēļ, parasti tāpēc, ka tiesības ir nepareizas vai to nav.

404 Not Found

Pieprasītais resurss serverī netika atrasts.

412 Precondition Failed

Pieprasījumu nevar izpildīt resursa pašreizējā stāvoklī, piemēram, pasūtījumam, ko vairs nevar atcelt.

429 Too Many Requests

Klients ir pārsniedzis pieļaujamo pieprasījumu skaitu noteiktā laika posmā. Skatiet Pieprasījumu ierobežojumi.

5xx Errors

Notikusi iekšēja servera kļūda. Lūdzu, sazinieties ar Fabrixa atbalstu, norādot neveiksmīgā pieprasījuma detaļas.

Kļūdas atbildes ķermenis

Kļūdas atbildes ķermeņa piemērs:

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

errors satur informāciju par to, kas neizdevās. Masīvs messages uzskaita kļūdu aprakstus. Bad Request gadījumā jūs saņemsiet to lauku nosaukumus, kuri neizturēja validāciju.

IEPAZĪSTIET PIEPRASĪJUMU IEROBEŽOJUMUS

Pieprasījumu ierobežojumi

Integration API atbalsta ierobežojumu 30 pieprasījumi vienai lietotnei minūtē.

Ja pārsniegsiet šo ierobežojumu, saņemsiet atbildi 429 Too Many Requests.

Visas Integration API atbildes ietver galveni X-RateLimit-Remaining, kas norāda, cik pieprasījumus klients vēl var veikt, un galveni X-RateLimit-Limit, kas norāda kopējo minūtē pieļaujamo skaitu.

PĀRBAUDI PIRMS PALAIŠANAS

Smilškastes režīms

Smilškastes režīms ļauj pārbaudīt integrāciju no sākuma līdz beigām, pirms kāds īsts pasūtījums tiek izgatavots vai apmaksāts. Tas attiecas uz visu jūsu kontu: pasūtījumi no visiem pārdošanas kanāliem, tostarp Integration API un pieslēgtajiem Shopify un WooCommerce veikaliem, netiek izgatavoti un netiek norakstīti no jūsu atlikuma. Jūsu konts ir smilškastes režīmā, kamēr tā statuss ir gaida aktivizēšanu.

Smilškastes režīmā varat:

Lai pārbaudītu pasūtījumus, pievienojiet produktus no Fabrixa kataloga: atveriet produktu, noklikšķiniet uz Pārdot un izvēlieties variantus un dizainus. Pēc tam tie parādās sadaļā Mani produkti.

Lai pārslēgtu kontu smilškastes režīmā, atveriet Platform, dodieties uz Iestatījumi → Uzņēmums → Smilškastes režīms un noklikšķiniet uz Pārslēgt smilškastes režīmā. To var ieslēgt arī, pievienojot jaunu pārdošanas kanālu, tostarp Integration API kanālu, vai rakstīt uz support@fabrixa.com, un mēs pārslēgsim jūsu kontu jūsu vietā. Smilškastes režīms ir pieejams tikai aktīviem kontiem.

Kad esat gatavs, aktivizējiet kontu pats Platform sadaļā Iestatījumi → Uzņēmums → Smilškastes režīms. Varat arī rakstīt uz support@fabrixa.com, un mēs to aktivizēsim jūsu vietā. Pieslēgtie veikali un API akreditācijas dati turpina darboties, tāpēc nekas nav jākonfigurē no jauna.

Pēc aktivizēšanas visi jaunie pasūtījumi tiek nodoti ražošanā un norakstīti no jūsu atlikuma. Pirms aktivizēšanas izveidotie pasūtījumi paliek testa pasūtījumi: tie nekad netiek izgatavoti vai apmaksāti, arī pēc aktivizēšanas.

ATRODIET, KO PĀRDOT

Produkti

Katalogs ir viss, ko ražo Fabrixa. Jūsu produkti ir kataloga produkti, kurus esat pievienojis savam Fabrixa kontam, ar saviem nosaukumiem, aprakstiem, attēliem un SKU. Pasūtījuma rinda norāda uz produkta variantu - vienu produkta izmēru vai versiju - pēc tā sku vai variant_id: uz kāda jūsu produkta variantu vai uz tieši pasūtītu kataloga variantu.

KO RAŽO FABRIXA

Kataloga pārlūkošana

Lai iegūtu Fabrixa ražoto produktu sarakstu, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/catalog/products ar saviem piekļuves datiem. Tajā ir aktīvie produkti, kuriem ir variants, ko pašlaik ražo drukas partneris, un tikai šie varianti - katrs ar savu SKU, pārdošanas cenu, izmēriem un opciju vērtībām.

Vaicājuma parametri

  • page un limit (līdz 100) - sadala sarakstu lapās. Bez tiem viss katalogs tiek atgriezts vienā atbildē.
  • search - produkti, kuru nosaukumā ir teksts vai kuru slug vai varianta SKU ar to sākas.
  • category_id - kategorijas produkti; parent_category_id - jebkuras augstākā līmeņa kategorijas apakškategorijas produkti. Skatiet Kataloga kategorijas.
  • group_id - kataloga grupas produkti.
  • sort_by - name, created, updated, type, popular vai sold, sort_order secībā asc vai desc. Pēc noklusējuma jaunākie produkti ir pirmie.

Pieprasījuma piemērs

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'

Atbildes piemērs

{
    "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" } ] } ] } ] } ] }

Atbildes lauki

  • id, name, subtitle, description (HTML), slug, code un HS_code - muitas tarifa kods.
  • is_sellable - vai produkts ir atvērts pārdošanai. Slēgts produkts joprojām ir sarakstā, bet pasūtījums kādam no tā variantiem tiek noraidīts.
  • variants_min_selling_price un variants_max_selling_price - uzskaitīto variantu cenu diapazons.
  • type - produkta tips, kas nosaka drukas slāņus un PDF lapu secību; status - katalogā vienmēr Active.
  • categories - kategorijas, kurās ir produkts, katra ar savu parent_category.
  • images - produkta attēli ar url, is_main, screen_type_size un sort_number.
  • variants - pasūtāmās produkta versijas: id, name, subtitle, SKU, selling_price, izmēri width, height, length un weight, kā arī options - opciju vērtības, kas nosaka šo variantu, piemēram, tā izmērs.
ORIENTĒJIETIES KATALOGĀ

Kataloga kategorijas

Lai iegūtu kategoriju sarakstu, kurās katalogs ir sakārtots, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/catalog/categories ar saviem piekļuves datiem. Atbildē ir augstākā līmeņa kategorijas, katra ar apakškategorijām, kas ligzdotas laukā sub_categories, un kataloga produktu skaitu tajā laukā products_count. Pārlūkojot katalogu, nododiet kategorijas id kā category_id vai augstākā līmeņa kategorijas id kā parent_category_id, lai uzreiz iegūtu visu tās apakškategoriju produktus.

Vaicājuma parametri

  • page un limit (līdz 100) - sadala sarakstu lapās. Bez tiem tiek atgrieztas visas kategorijas.
  • search - kategorijas, kuru nosaukumā ir teksts.
  • with_products_only - true izlaiž kategorijas, kurās nav neviena kataloga produkta ne tieši, ne apakškategorijā.
  • sort_by - category_name vai category_created, sort_order secībā asc vai desc. Pēc noklusējuma kategorijas ir kataloga secībā.

Pieprasījuma piemērs

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'

Atbildes piemērs

{
    "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
                }
            ]
        }
    ]
}
JŪSU KONTS

Jūsu produkti

Lai iegūtu sava konta produktu sarakstu, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/products ar saviem piekļuves datiem. Jūsu produkti ir kataloga produkti, kurus esat pievienojis savam Fabrixa kontam: tiem ir nosaukumi, apraksti un attēli, ko tur tiem piešķīrāt, un to variantiem - jūsu izvēlētās SKU vērtības. Sarakstā ir tikai aktīvie produkti, pa desmit lapā, ja vien nenododat limit.

Vaicājuma parametri

  • page un limit (līdz 100) - kuru lapu atgriezt un tās izmērs; pēc noklusējuma pirmā lapa ar desmit produktiem.
  • search - produkti, kuru nosaukumā ir teksts vai kuru slug vai varianta SKU ar to sākas.

Pieprasījuma piemērs

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'

Atbildes piemērs

{
    "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"] } ] } ] }

Lai nolasītu vienu produktu, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/products/{product_id}, kur {product_id} ir tā id. Atbildē ir tie paši lauki, kas sarakstā. Produkts, kura nav jūsu kontā, arī kataloga produkts, atbild ar 404 Not Found un ziņojumu Product not found.

Atbildes lauki

  • id, name, subtitle, description (HTML), slug, width, height, length un weight.
  • type - produkta tips, kas nosaka drukas slāņus un PDF lapu secību.
  • available_options - katra produkta opcija ar visām tās vērtībām, piemēram, katrs izmērs, kādā tas ir pieejams; katrs variants ņem vienu vērtību uz opciju.
  • categories un collections - kategorijas un kolekcijas, kurās savā kontā esat iedalījis produktu.
  • images - produkta attēli ar url, is_main, image_size, screen_type_size un sort_number.
  • variants - pasūtāmās produkta versijas, skatiet Produktu varianti: id, name, subtitle, SKU, options, images un drukas slāņi laukos available_source_types un required_source_types.
UZ KO NORĀDA PASŪTĪJUMA RINDA

Produktu varianti

Variants ir viena pasūtāma produkta versija - viens izmērs, viena krāsa - un tieši uz to norāda pasūtījuma rinda pēc sku vai variant_id. Lai nolasītu kāda sava produkta variantu, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/variants/{variant_id}, kur {variant_id} ir tā id. Tāda produkta variants, kura nav jūsu kontā, atbild ar 404 Not Found un ziņojumu Variant not found.

Pieprasījuma piemērs

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'

Atbildes piemērs

{
    "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"] } }

Atbildes lauki

  • id, name, subtitle, description, SKU, width, height, length, weight, options, images un product - produkts, kuram variants pieder.
  • available_source_types - varianta drukas slāņi, nosaukti tā, kā tos pazīst tā ražošanas process. Papildus "file", ko katrs variants pieņem PDF failam, tās ir vērtības, kādas var būt avota faila laukam type; produkts ar vienu drukas slāni norāda "print".
  • required_source_types - slāņi, kas drukas failam jānosedz. PDF, kas nosūtīts kā "file", nosedz tos ar savām lapām produkta tipa lapu secībā. Citādi rindai katram no tiem nepieciešams JPEG, PNG vai TIFF fails ar slāņa nosaukumu kā type; rinda, kurā kāda trūkst, tiek noraidīta ar 400 Bad Request un trūkstošo slāņu nosaukumiem.

Pasūtījuma rinda šim variantam ar PDF, kura lapas ir tā slāņi:

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

Kurus variantus var pasūtīt

  • Pasūtījuma rinda var norādīt uz jūsu konta produkta variantu vai tieši uz kataloga variantu, nekad uz cita klienta produktu. Variants tiek atrasts pēc variant_id vai pēc sku neatkarīgi no burtu reģistra.
  • Variantam jābūt aktīvam, un tā produktam - aktīvam un atvērtam pārdošanai. Jūsu kataloga produkta kopijai arī kataloga produktam jābūt aktīvam un kataloga variantam - ieslēgtam.
  • Citādi pasūtījums tiek noraidīts ar 400 Bad Request un attiecīgās rindas iemeslu: 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. vai The catalog variant is not active.
PASŪTĪJUMU IZVEIDE UN IZSEKOŠANA

Pasūtījumi

Izveidojiet Fabrixa pasūtījumus no sava veikala vai platformas, pievienojiet nepieciešamos apdrukas failus un sekojiet katrai vienībai, tai virzoties caur izpildi.

SAGATAVOJIET PASŪTĪJUMA DATUS

Pasūtījuma izveide

Lai izveidotu pasūtījumu, izmantojot Fabrixa Integration API, nosūtiet POST pieprasījumu uz https://api.fabrixa.com/v2/integration/orders. Pieprasījuma ķermenī jāiekļauj:

Pieprasījuma ķermeņa struktūra

  • number (neobligāts) - pasūtījuma numurs. Ja tas nav norādīts, tiek ģenerēts unikāls numurs.
  • comments (neobligāts) - jebkādi papildu komentāri vai piezīmes par pasūtījumu.
  • purchased_at - pasūtījuma pirkuma datums un laiks formātā YYYY-MM-DD HH:MM:SS.
  • client_ip (neobligāts) - klienta IP adrese.
  • client_user_agent (neobligāts) - klienta user-agent virkne.
  • rows - pasūtījuma vienību masīvs, katra no tām satur:
    • sku - produkta varianta SKU. Sīkāku informāciju skatiet Swagger.
    • quantity - pasūtītā produkta varianta daudzums.
    • client_barcode (neobligāts) - unikāls klienta puses identifikators katrai pasūtījuma rindai formātā Code 128.
    • cart_item_key (obligāts bez sources) - unikāls identifikators no platformas, kas iegulda Fabrixa Studio, un tiek izmantots, lai saglabātos pielāgojumus sasaistītu ar pasūtījumu.
    • sources (obligāts bez cart_item_key) - ar produktu saistīto avota failu masīvs, katrs no tiem satur:
      • type - "file" PDF failam vai "print" JPEG, PNG vai TIFF failam.
      • url - avota faila URL.
  • customer - klienta dati:
    • first_name, last_name, email, phone.
  • shipping_address - piegādes dati:
    • address, address2 (neobligāts), address3 (neobligāts).
    • city, country_code (ISO 3166-2), country, postal_code, state (neobligāts).
    • first_name, last_name, phone (neobligāts), company (neobligāts).
  • shipping_label (neobligāts) - uzlīmes dati:
    • method_name - piemēram, "Post NL".
    • tracking_number, tracking_url, label_pdf_url.
    • date_created - formātā YYYY-MM-DD HH:MM:SS.

Pieprasījuma piemērs

{
  "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"
  }
}

Atbildes piemērs

{
    "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"
        }
    }
}
MAINIET PASŪTĪJUMA DATUS

Pasūtījuma atjaunināšana

Lai atjauninātu pasūtījumu, nosūtiet PATCH pieprasījumu uz https://api.fabrixa.com/v2/integration/orders/{order_id}, kur {order_id} ir pasūtījuma Fabrixa ID. Mainās tikai nosūtītie lauki, un pasūtījuma statuss paliek nemainīgs. Atbildē ir atjauninātais pasūtījums. Varat mainīt:

  • number, comments, purchased_at, client_ip, client_user_agent.
  • customer - first_name, last_name, email, phone.
  • shipping_address - tos pašus laukus kā, veidojot pasūtījumu.

Pieprasījuma piemērs

{
  "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"
  }
}

Atbildes piemērs

{
    "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"
        }
    }
}
  • Pasūtījuma rindas mainīt nevar: pieprasījums ar rows tiek noraidīts ar 400 Bad Request. Lai mainītu preces, atceliet pasūtījumu un izveidojiet jaunu.
  • Pasūtījumu statusā on hold nevar atjaunināt; API atbild ar 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."
        ]
    }
}
APTURIET PASŪTĪJUMU

Pasūtījuma atcelšana

Lai atceltu pasūtījumu, nosūtiet POST pieprasījumu bez ķermeņa uz https://api.fabrixa.com/v2/integration/orders/{order_id}/cancel, kur {order_id} ir pasūtījuma Fabrixa ID (pasūtījuma skaitliskais lauks id), nevis jūsu pasūtījuma numurs. Atbildē ir pasūtījums ar statusu canceled, un tiek nosūtīts order.updated webhook.

  • Pasūtījumu var atcelt, kamēr tā statuss ir created, imported, accepted vai on hold un tā fulfillment_status joprojām ir unfulfilled. Kad tas kļūst scheduled, ražošana ir sākusies, un pasūtījumu vairs nevar atcelt.
  • Atcelta pasūtījuma maksājumi tiek atmaksāti jūsu bilancē.
  • Jau atcelta pasūtījuma atcelšana atgriež to nemainītu, tāpēc pieprasījumu var droši atkārtot.

Atbildes piemērs

{
    "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"
        }
    }
}

Ja pasūtījumu nevar atcelt, API atbild ar 412 Precondition Failed un ziņojumu ar iemeslu: tā pašreizējais statuss to neļauj (statuss ir norādīts ziņojumā) vai ražošana jau ir sākusies.

{
    "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)."
        ]
    }
}
NO IMPORTA LĪDZ PIEGĀDEI

Pasūtījuma dzīves cikls

Pasūtījumu izseko pēc trim statusiem: pasūtījuma lauka status, tā ražošanas statusa fulfillment_status un katra sūtījuma lauka status sarakstā shipments. Katra izmaiņa tiek nosūtīta tīmekļa āķī order.updated, un to atgriež GET /orders/{order_id}.

Pasūtījuma statusi

Pasūtījuma lauka status vērtības tādā secībā, kādā tās iestājas:

Izpildes statusi

Pasūtījuma un katras pasūtījuma rindas lauka fulfillment_status vērtības tādā secībā, kādā tās iestājas. Statuss mainās tikai uz priekšu, nekad atpakaļ:

Pasūtījums kopumā nekad netiek noraidīts. Atsevišķa prece var tikt noraidīta kvalitātes kontrolē ražošanas laikā. Tad to izdrukā vēlreiz: tā atgriežas statusā unfulfilled un vēlreiz iziet ražošanu, bet pasūtījums saglabā savu statusu un turpinās, tiklīdz prece ir gatava.

Sūtījuma statusi

Katra sūtījuma lauka status vērtības sarakstā shipments tādā secībā, kādā tās iestājas:

Izņēmumi:

IZSEKOJIET PASŪTĪJUMA VIENĪBAS

Izpildes izsekošana

Lai iegūtu konkrēta pasūtījuma izpildes statusu, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/orders/{order_id}/fulfillments. Atbilde sniedz ar pasūtījumu saistīto izpilžu sarakstu, tostarp katras vienības statusu, produkta informāciju un ražošanas soļu gaitu.

Atbildes piemērs

{
    "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
                    }
                }
            ]
        }
    ]
}

Atbilde ietver izpilžu sarakstu, un katra no tām sniedz:

  • id - izpildes unikālais identifikators.
  • barcode - svītrkods iekšējai izsekošanai un identifikācijai; to var arī uzdrukāt uz produkta.
  • status - pašreizējais izpildes statuss: unfulfilled vai fulfilled.
  • created_at un updated_at - izpildes izveides un pēdējās atjaunināšanas laika zīmogi.
  • variant - detalizēta informācija par produkta variantu: nosaukums, apakšvirsraksts, SKU.
  • product - produkta dati: nosaukums, apakšvirsraksts.
  • production_steps - ražošanas soļu masīvs. Soļu saraksts atkarīgs no produkta veida. Katram solim:
    • id - ražošanas soļa unikālais identifikators.
    • name - piemēram, "Segas pārvalka apdruka".
    • description - ko ražošanas solis ietver.
    • status - pašreizējais statuss:
      • pending - vēl nav sākts.
      • in progress - pašlaik notiek.
      • rejected - solī radās problēma, un tas netika veiksmīgi pabeigts.
      • done - solis ir pabeigts.
    • notes - jebkādas papildu piezīmes par soli.
    • updated_at - kad soļa statuss pēdējoreiz atjaunināts.

Katrs izpildes ieraksts atbilst konkrētam produktam vai produkta variantam pasūtījumā, un katram produkta eksemplāram pasūtījumā ir savs izpildes ieraksts - katra vienība ražošanas laikā tiek izsekota atsevišķi.

Ja pasūtījumam netiek atgriezta neviena izpilde, pasūtījums vēl nav nonācis apstrādes posmā.

KĀ IESNIEGT APDRUKAS FAILUS

Avota failu prasības

Pievienojot pasūtījumam avota failus, pārliecinieties, ka tie atbilst šādām prasībām:

type

Vēlamais avota formāts ir PDF. Produktam ar vienu drukas slāni, piemēram, segai vai dvielim, der arī JPEG, PNG vai TIFF fails. Produktam ar vairākiem slāņiem iesniedziet PDF failu, kurā katrs slānis ir atsevišķa lappuse: apstrādes laikā katra lappuse tiek uzskatīta par atsevišķu slāni, tāpēc vairākslāņu dizains tiek iesniegts kā viens fails. Skatiet PDF prasības un lappušu secību.

Iestatiet type atbilstoši faila formātam. PDF gadījumā izmantojiet "file": katra lappuse tiek drukāta uz viena produkta slāņa šim produktam norādītajā lappušu secībā. JPEG, PNG vai TIFF failam, kas piemērots produktam ar vienu drukas slāni, izmantojiet "print".

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

Sīkāku informāciju skatiet Swagger dokumentācijā.

url

Laukā url jābūt tiešai saitei uz avota failu. Pārliecinieties, ka URL ir pieejams un failu var lejupielādēt bez autentifikācijas. Saitei jāpaliek pieejamai visā ražošanas procesa laikā.

Kā mēs lejupielādējam failu

Failu no jūsu servera lejupielādējam divreiz: ar Range: 0-0 pieprasījumu pasūtījuma validācijas laikā un pēc tam visu failu. Abi pieprasījumi sūta User-Agent Fabrixa/2.0 (+https://api.fabrixa.com/docs/integration#sources; print file fetch); ja jūsu vietne filtrē automatizēto trafiku, atļaujiet to. URL jāizmanto HTTPS uz porta 443, un tam jāatgriež fails tieši, bez novirzīšanas, ar faila īsto Content-Type, piemēram, application/pdf. Katram pieprasījumam iestājas taimauts pēc 60 sekundēm.

Faila formāts

Iesniedziet PDF failu vai, produktam ar vienu slāni, JPEG, PNG vai TIFF failu, kas tiek pasniegts ar tā īsto Content-Type. PNG caurspīdīgās zonas tiek drukātas baltā krāsā. Pārliecinieties, ka attēli ir augstas kvalitātes un piemēroti drukai.

Attēla izmēri

Maksimālie izmēri ir 15 000 pikseļu katrā pusē. Attēli, kas pārsniedz šo ierobežojumu, var tikt samazināti vai noraidīti. Attēla izšķirtspējai jāatbilst produkta izmēriem; pretējā gadījumā attēli var tikt samazināti vai apgriezti, lai iekļautos.

Izšķirtspēja

Konkrētas izšķirtspējas prasības nav - vienīgi pārliecinieties, ka attēla kvalitāte ir pietiekama apdrukai.

Krāsu telpa

Attēliem jābūt RGB krāsu telpā, lai krāsas tiktu atveidotas precīzi. Citas krāsu telpas apstrādes laikā tiek konvertētas, kas var radīt nepareizas krāsas.

Faila izmērs

Katrs avota fails var būt līdz 200 MB. Lielāks fails tiek noraidīts: veidojot pasūtījumu, ja jūsu serveris sūta Content-Length, citādi faila lejupielādes laikā.

PDF prasības un lappušu secība

Lappušu secība PDF failā ir svarīga. Lappuses tiek piekārtotas produkta slāņiem pēc pozīcijas, un gaidītā lappušu secība atkarīga no produkta veida. Pārliecinieties, ka jūsu PDF lappuses atbilst pareizajai iesniedzamā produkta slāņu secībai.

ProduktsPDF lappušu secība
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

Svarīgi: katrai PDF lappusei jāatbilst tās produkta slānim noteiktajiem izmēriem un jābūt pareizi orientētai. Izvietojiet dizainu tā, lai tā augšpuse sakristu ar lappuses augšpusi. Nepareizs lappuses izmērs vai orientācija ražošanā var radīt mērogošanas, pagriešanas vai izlīdzināšanas problēmas.

PLĀNOJIET PIEGĀDI

Piegāde

Uzziniet, cik maksās pasūtījuma piegāde un cik ilgi tas būs ceļā, pirms to veicat, pēc tiem pašiem noteikumiem, pēc kuriem Fabrixa aprēķina paša pasūtījuma cenu.

UZ KURIENI TO VAR PIEGĀDĀT

Piegādes valstis

Lai uzzinātu, uz kurām valstīm produkta variantu var piegādāt, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/shipping/countries ar saviem piekļuves datiem. Saraksts, sakārtots pēc nosaukuma, ietver valstis, uz kurām varianta ražošanas vietai ir piegādes tarifs kādam piegādes iepakojumam, kurā variantu var sapakot. Ja valsts sarakstā nav, šim variantam uz to nav piegādes tarifa.

Vaicājuma parametri

  • variant_id vai sku - variants, norādīts tāpat kā pasūtījuma rindā un aplēses pieprasījumā.

Pieprasījuma piemērs

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'

Atbildes piemērs

{
    "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
        }
    ]
}

Atbildes lauki

  • code un name - valsts ar ISO 3166-1 alpha-2 kodu, kas jānorāda kā country_code, pieprasot aplēsi.
  • min_shipping_price un max_shipping_price - diapazons, cik maksā vienas pakas piegāde uz šo valsti, bez PVN, valūtā, kas norādīta laukā currency, ņemot vērā visus piegādes iepakojumus, kuros variantu var sapakot. Vairāku vienību pasūtījumam var būt vajadzīgas vairākas pakas, tāpēc, lai uzzinātu konkrēta daudzuma cenu, pieprasiet aplēsi.
  • min_eta_days un max_eta_days - diapazons, cik dienu paka ir ceļā pēc nodošanas pārvadātājam, neskaitot ražošanas laiku; null, ja tarifos nav piegādes laika aplēses.
PIRMS PASŪTĪŠANAS

Piegādes aplēse

Lai uzzinātu, cik maksātu produkta varianta piegāde un cik ilgi sūtījums būtu ceļā, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/shipping/estimate ar saviem piekļuves datiem. Aplēse ievēro tos pašus noteikumus, pēc kuriem tiek aprēķināta pasūtījuma cena: vienības tiek sapakotas varianta ražošanas vietas piegādes iepakojumos, un katras pakas cena tiek aprēķināta maršrutam no šīs vietas līdz galamērķa valstij. Nekas netiek pasūtīts vai rezervēts, un pasūtījuma cena tiek aprēķināta brīdī, kad pasūtījums tiek veikts, tāpēc tā piegādes cena var atšķirties, ja tarifi pa to laiku mainās.

Vaicājuma parametri

  • variant_id vai sku - variants, norādīts tāpat kā pasūtījuma rindā: kāda jūsu produkta variants vai kataloga variants. Tam jābūt variantam, ko varat pasūtīt.
  • country_code - tās valsts ISO 3166-1 alpha-2 kods, uz kuru pasūtījums tiek nosūtīts, piemēram, NL.
  • quantity - vienību skaits, no 1 līdz 1000.

Pieprasījuma piemērs

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'

Atbildes piemērs

{
    "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
    }
}

Atbildes lauki

  • variant_id, sku, quantity un country_code - variants, daudzums un galamērķis, kam aplēse paredzēta.
  • origin_country - valsts, no kuras variants tiek nosūtīts, ar tās code un name.
  • packages_count - paku skaits, kurās tiek sapakotas vienības.
  • packages - pašas pakas, pa vienam ierakstam katram paku veidam: package_type, tās length, width un height centimetros, šādu paku quantity, vienas pakas piegādes price un tās eta_days. Cenas, reizinātas ar daudzumiem, kopā veido shipping_price.
  • shipping_price - visu paku kopējā piegādes cena bez PVN, valūtā, kas norādīta laukā currency. Maršrutā bez piegādes tarifa piegāde ir bezmaksas, tāpat kā pasūtījumam, un tās cena ir 0.00.
  • eta_days - dienu skaits, cik ilgi lēnākā paka ir ceļā pēc nodošanas pārvadātājam, neskaitot ražošanas laiku; null, ja maršrutam nav piegādes laika aplēses.

Uz pieprasījumu, kas neiztur validāciju, tiek atbildēts ar 400 Bad Request un iemeslu katram laukam, ar tiem pašiem ziņojumiem kā pasūtījuma rindai, piemēram, The variant not found. Ja neviens piegādes iepakojums nevar ietvert vienības, atbilde ir 400 Bad Request ar ziņojumu No shipping package can carry the variant.

PRODUKTA PIELĀGOŠANA

Fabrixa Studio

Fabrixa Studio ir rīks, kas ļauj lietotājiem reāllaikā ērti pielāgot un personalizēt produktus intuitīvā saskarnē, kurā viņi var izveidot vai augšupielādēt savus dizainus.

Fabrixa Studio ir lieliski piemērots uzņēmumiem, kas piedāvā pielāgotus produktus - klienti var redzēt savu dizainu vēl pirms pasūtījuma noformēšanas.

PIEVIENOJIET STUDIO SAVAM VEIKALAM

Fabrixa Studio iegulšana

Fabrixa Studio varat iegult savā vietnē, izmantojot iframe. Tas ļauj klientiem personalizēt produktus tieši jūsu vietnē pirkuma noformēšanas laikā.

Iframe piemērs Fabrixa Studio iegulšanai:

<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>

Aizstājiet vērtības product_sku, cart_item_key un application_key ar savām dinamiskajām vērtībām.

Studio galvenē redzams produkta nosaukums tāds, kāds tas ir jūsu veikalā - tas pats nosaukums, ko redz jūsu klienti, - un zem tā izvēlētā varianta opcijas. Tā ir jūsu veikala produkta kopija, tāpēc Fabrixa mainīts nosaukums redzams arī Studio; locale to netulko.

Pasūtījuma izveides pieprasījums ar 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": {
    "...": "..."
  }
}
KLAUSIETIES KLIENTU DARBĪBAS

Studio notikumu apstrāde

Kad iframe iekšpusē tiek nospiesta poga Pievienot grozam, tiek izpildīta šāda komanda:

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

Tāpat, kad tiek nospiesta poga Atpakaļ:

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

Metode postMessage nodrošina saziņu starp iframe un tā vecāklogu ar atšķirīgu izcelsmi, ļaujot informēt vecāklogu par konkrētām lietotāja darbībām.

Pirmais postMessage arguments ir dati, kurus vēlaties nosūtīt. Virkne 'customizationFinished' norāda, ka lietotājs ir pabeidzis pielāgošanu un pievieno produktu grozam. 'closeButtonClicked' norāda, ka lietotājs ir izvēlējies atgriezties.

Vecāklogā klausieties šos ziņojumus, izmantojot message notikuma klausītāju:

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.');
        }
    }
});

Vienmēr pārbaudiet ienākošo ziņojumu origin, lai pārliecinātos, ka tie nāk no uzticama avota. Atkarībā no saņemtā ziņojuma veiciet nepieciešamās darbības - atjauniniet lietotāja saskarni, apstrādājiet grozu un tā tālāk. origin validācija ir būtiska drošībai - tā neļauj nesankcionētiem skriptiem mijiedarboties ar jūsu lietotni.

PARĀDIET PABEIGTO DIZAINU

Pielāgojuma priekšskatījums

Kad pielāgošana ir pabeigta, parādiet galīgo dizainu, izmantojot zemāk norādīto priekšskatījuma URL. Šis URL atgriež pielāgotā produkta attēlu, kas piemērots kā src vērtība <img> tagā. Ideāli piemērots pielāgotā produkta rādīšanai grozā, pasūtījuma kopsavilkumā vai jebkur citur jūsu veikala saskarnē.

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

Aizstājiet {CART_ITEM_KEY} ar faktisko groza vienības atslēgu un {APPLICATION_KEY} ar savu derīgo lietotnes atslēgu.

Lietojuma piemērs attēla tagā:

<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;" />
IZMĒĢINIET AR SAVĀM VĒRTĪBĀM

Tiešraides demonstrācija

Pielāgojuma priekšskatījums parādīsies šeit, kad dizains būs pabeigts.

Customization preview
SAŅEMIET NOTIKUMU ATJAUNINĀJUMUS

Tīmekļa āķi

Fabrixa izmanto tīmekļa āķus, lai reāllaikā informētu jūsu sistēmu par notikumiem - pasūtījumu atjauninājumiem vai izveidi. Kad notikums iestājas, Fabrixa nosūta uz jūsu serveri tīmekļa āķi ar attiecīgo informāciju. Jūsu serverim jānodrošina publisks POST galapunkts, kas apstrādā ienākošos tīmekļa āķus.

PĀRSKATIET IENĀKOŠĀS GALVENES

Tīmekļa āķa pieprasījuma galvenes

Tīmekļa āķa pieprasījums ietver šādas galvenes, kas palīdz identificēt un validēt ienākošo pieprasījumu:

{
  "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"
}
Galveņu skaidrojums

Webhooks tiek sūtīti ar User-Agent Fabrixa/2.0 (+https://api.fabrixa.com/docs/integration#webhooks; webhook); ja jūsu endpoint filtrē automatizēto trafiku, atļaujiet to. Lai pārliecinātos, ka pieprasījums nāk no Fabrixa, pārbaudiet x-webhook-signature.

IZVĒLIETIES NOTIKUMU TĒMAS

Tīmekļa āķu notikumi

Fabrixa tīmekļa āķi informē jūsu sistēmu par izmaiņām pasūtījuma statusā vai darbībās. Katru tīmekļa āķi izraisa konkrēta x-webhook-topic vērtība. Pašlaik atbalstītās tēmas:

TēmaApraksts
order.created Tiek izraisīts, kad Fabrixa tiek veikts jauns pasūtījums - vai nu ar API pieprasījumu, vai tieši platformā.
order.updated Tiek izraisīts, kad tiek atjaunināta pasūtījuma informācija, piemēram, pasūtījuma statuss vai izpildes statuss.
IZPĒTIET NOTIKUMA DATUS

Tīmekļa āķa datu piemērs

Piemērs datiem, kas tiek nosūtīti ar tīmekļa āķi. Šie dati atspoguļo pasūtījuma atjauninājumu:

{
  "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"
    }
  ]
}

Kad pasūtījums ir nosūtīts, shipments uzskaita katru sūtījumu ar tā pārvadātāju (carrier), piegādes veidu (method), statusu (status: pending, registered, collected, in transit, delivered, failed, returned vai canceled) un izsekošanu: tracking_number un tracking_url, kā arī to pašu katrai pakai laukā packages, ja sūtījumā ir vairākas pakas. Katru reizi, kad mainās sūtījuma statuss vai izsekošana, tiek nosūtīts order.updated webhook, un GET /orders/{order_id} atgriež to pašu lauku.

PĀRBAUDIET TĪMEKĻA ĀĶA AVOTU

Tīmekļa āķu parakstu pārbaude

Lai pārliecinātos, ka tīmekļa āķa pieprasījums ir autentisks un nav mainīts, pārbaudiet galveni x-webhook-signature. Tas nozīmē no jauna aprēķināt HMAC-SHA256 parakstu, izmantojot pieprasījuma neapstrādātos datus un savu slepeno atslēgu, un pēc tam salīdzināt to ar saņemto parakstu.

Tīra PHP piemērs

$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 piemērs

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...
}

Aizstājiet $yourSecret ar savu koplietoto slepeno atslēgu. Parakstu salīdzināšanai vienmēr izmantojiet hash_equals, lai mazinātu laika mērīšanas uzbrukumu risku.

KAS NOTIEK, JA PIEGĀDE NEIZDODAS?

Tīmekļa āķu atkārtotie mēģinājumi

Pēc noklusējuma tīmekļa āķi tiek atspējoti pēc 10 neveiksmīgiem piegādes mēģinājumiem. Ja jūsu galapunkts atgriež neveiksmīgu statusu, piemēram, 404 vai jebkuru 5xx kļūdu, tīmekļa āķis tiks mēģināts nosūtīt kopumā 10 reizes. Ja tas turpinās atgriezt atbildes kodu, kas nav 2xx vai 3xx, tas tiks deaktivizēts. Par veiksmīgām atbildēm uzskata:

ATGRIEZIET SKAIDRU ATBILDI

Tīmekļa āķa atbilde

Mēs stingri iesakām, lai jūsu galapunkts pēc iespējas ātrāk atgrieztu statusa kodu 200 OK, apliecinot tīmekļa āķa veiksmīgu saņemšanu. Lai gan par veiksmīgu tiek uzskatīta jebkura 2xx vai 3xx atbilde, 200 ir visbiežāk lietotā un uzticamākā.

Lai izvairītos no piegādes noildzēm vai atkārtotiem mēģinājumiem, nekavējoties atgrieziet 200 OK un tīmekļa āķa datus apstrādājiet asinhroni, piemēram, ar fona uzdevumu vai rindu. Ja jūsu galapunkta atbilde aizņem pārāk ilgu laiku, to var uzskatīt par neveiksmi pat tad, ja atbilde galu galā ir veiksmīga.

Atbildes ar statusa kodiem 4xx vai 5xx diapazonā, kā arī noildzes izraisa atkārtotus mēģinājumus atbilstoši atkārtošanas mehānismam.