Sari la conținut

Documentatie API

Aceasta sectiune contine documentatia tehnica a API-ului REST Planograma pentru integratori si parteneri: endpoint-uri, metode HTTP, parametri, structuri de date si exemple de cereri si raspunsuri. API-ul este folosit de sistemele externe (ERP-uri, platforme de e-commerce).

Note

Numele campurilor, parametrii, caile si exemplele JSON sunt prezentate exact asa cum apar in aplicatie. Textul explicativ este in limba romana, dar denumirile tehnice raman neschimbate.

Autentificare

Toate cererile catre /api/** necesita antetul Authorization; lipsa lui returneaza 401 Unauthorized cu mesajul Invalid API KEY.

Endpoint-urile de integrare (produse, stoc, comenzi, NIR-uri etc.) folosesc credentialele de utilizator Planograma trimise in antetul Authorization, sub forma utilizator:parola:

Authorization: Bearer <utilizator>:<parola>

Sistemul desparte valoarea dupa caracterul : si autentifica utilizatorul in cadrul tenantului curent (determinat din subdomeniu/host). Daca formatul nu este corect sau credentialele sunt invalide, raspunsul este 401 Unauthorized.

Warning

Foloseste un cont dedicat de integrare cu permisiunile minime necesare. Credentialele se transmit doar pe HTTPS.

Forma raspunsurilor

Majoritatea endpoint-urilor de integrare returneaza un plic standard BaseApiResponse:

Camp Tip Descriere
error Boolean true daca cererea a esuat
errorMessage String? mesajul de eroare (cand error=true)
status Int? codul de status
data T? datele utile (lista sau obiect, in functie de endpoint)

Endpoint-urile de tip "read" returneaza in data o lista de obiecte info (de exemplu ProductInfo, OrderInfo).

Note

Cheile de identificare externa (thirdPartyReference, externalReference, externalOrderId, externalLineId) permit integratorilor sa lege documentele din Planograma de propriile lor inregistrari, fara a depinde de ID-urile interne Planograma.


API de integrare

Produse

Resursa de baza: /api/product.

Metoda Cale Descriere
POST /api/product/read listare produse cu filtre
PUT /api/product/add adaugare produs
POST /api/product/update actualizare produse
DELETE /api/product/delete stergere produse
GET /api/product/third-party-reference/{thirdPartyReference}/check verifica existenta unui produs dupa referinta externa (returneaza Boolean)

Citirea (POST /api/product/read) primeste ReadProductsFilterRequest (paginare prin page implicit 1 si limit implicit 100, plus filtre: productIds, models, categoryIds, thirdPartyReferenceIds, active etc.) si returneaza ProductApiResponse cu o lista de ProductInfo.

Campuri principale ProductInfo:

productId, productName, productCode, sku, thirdPartyReference,
categoryId, categoryName, vatId, vatPercentage,
purchasePrice, sellingPrice, minimumStock,
totalQuantityInStock, totalReservedQuantity, totalFreeQuantity, stockInfo,
requiresSerialNumber, requiresBatchCode, requiresBatchDetails,
requiresProductionDate, requiresExpirationDate,
width, height, length, weight, volume, diameter, material, color, active

Adaugarea (PUT /api/product/add) primeste AddProductApiRequest (camp obligatoriu name, code; categoria se indica prin categoryId sau categoryExternalReference; plus atributele de trasabilitate requiresSerialNumber, requiresBatchCode etc.). Actualizarea (EditProductApiRequest) tinteste produsele prin productIds, iar stergerea (DeleteProductApiRequest) prin productIds sau productModels.

Stoc

Resursa de baza: api/stock.

Metoda Cale Descriere
POST api/stock/remaining-stock/{productId} stocul disponibil pentru un produs
POST api/stock/all listare paginata a stocurilor
POST api/stock/detailed-report raport detaliat de stoc

POST api/stock/remaining-stock/{productId} primeste CheckStockClientRequest (source, includeReservations, location). Daca location=true, stocul este defalcat pe locatii; altfel se returneaza totalul agregat.

POST api/stock/all accepta parametrii de paginare page (implicit 0) si size (implicit 10) si corpul GetStocksRequest:

{
  "includeReservations": false,
  "isActive": true,
  "location": false
}

Raspuns PagedStockResponse:

content: [ StockResponse ], totalElements, totalPages, size, number

unde StockResponse are: productId, productName, productCode, remainingQuantity si, cand location=true, locationCode si locationName.

POST api/stock/detailed-report accepta parametrii page (0), size (50), sortBy (productName), sortDirection (asc) si returneaza un raport detaliat.

Comenzi

Resursa de baza: /api/order.

Metoda Cale Descriere
POST /api/order/read listare comenzi cu filtre
PUT /api/order/add adaugare comanda
POST /api/order/update actualizare comenzi
POST /api/order/order-ready verifica daca o comanda este gata
DELETE /api/order/delete stergere comenzi
PUT /api/order/print-document tiparire document comanda
POST /api/order/picking-info informatii de picking
POST /api/order/start-picking pornire picking
PATCH /api/order/update-status actualizare status comanda
PATCH /api/order/update-awb-link actualizare link AWB extern
POST /api/order/check-orders-in-waiting-for-supply reverificare comenzi in asteptarea stocului

Citirea (ReadOrdersFilterRequest) filtreaza dupa orderIds, externalOrderIds, companyExternalReferences, warehouseIds, statuses, orderType, thirdPartyReferenceIds si returneaza OrderApiResponse cu o lista de OrderInfo.

Campuri principale OrderInfo:

orderId, externalOrderId, thirdPartyReference,
warehouseId, warehouseName, warehouseCode, status, orderType,
requiresValidation, dateAdded, isReady, picked, comment,
awbExternalLink, invoiceExternalLink,
numberOfEnvelopes, numberOfPackages, totalWeight, fulfilledWeight,
orderProducts, orderRequirements,
companyThirdPartyReference, companyExternalReference

Adaugarea (PUT /api/order/add) primeste CreateOrderApiRequest. Exemplu simplificat:

{
  "externalOrderId": "WEB-1001",
  "warehouseId": 1,
  "orderType": 1,
  "validationRequired": 1,
  "company": { "name": "Client SRL", "cui": "RO123" },
  "orderProducts": [
    { "productModel": "ABC-123", "quantity": 2, "externalLineId": "L1", "locationCode": "A-01" }
  ]
}

externalOrderId este obligatoriu si trebuie sa fie unic. Liniile (CreateOrderProductApiRequest) identifica produsul prin productModel (sau productId); locationCode rezerva stocul dintr-o anumita locatie.

Actualizarea (UpdateOrderApiRequest) tinteste comenzile prin orderIds, externalOrderIds sau thirdPartyReferenceIds, iar campurile noi se trec in updateFields. PATCH /api/order/update-status (UpdateOrderStatusRequest: orderId, status, awbExternalLink) schimba statusul unei comenzi.

POST /api/order/picking-info raspunde cu PickingInfoApiResponse: picked, numberOfPackages, numberOfEnvelopes, totalWeight, pickerId, pickerUsername.

Receptii (NIR)

Resursa de baza: /api/nir.

Metoda Cale Descriere
PUT /api/nir/add adaugare NIR
PATCH /api/nir/update actualizare NIR
POST /api/nir/read listare NIR-uri cu filtre
POST /api/nir/validation-info informatii de validare
DELETE /api/nir/delete stergere NIR-uri
PATCH /api/nir/update-external-reference actualizare referinta externa
PATCH /api/nir/update-packaging-type actualizare tip ambalaj

Adaugarea (CreateNirApiRequest) cere externalReference (obligatoriu), warehouseId, supplierId, lista nirProducts (NirProductApiInfo: code si quantity obligatorii, externalLineId) si validationRequired (implicit true).

Citirea (ReadNirsFilterRequest) filtreaza dupa nirIds, externalOrderIds, externalClientIds, warehouseIds, thirdPartyReferenceIds si returneaza NirApiResponse cu lista de NirInfo (nirId, externalReference, warehouseId, validated, status, nirProducts, thirdPartyReference, purchaseOrders).

POST /api/nir/validation-info (NirValidationInfoApiRequest: nirId sau externalReference) returneaza NirValidationInfoApiResponse cu validated, scanInfoList, userUsername etc.

Retururi

Resursa de baza: /api/return.

Metoda Cale Descriere
PUT /api/return/add adaugare retur
POST /api/return/read listare retururi cu filtre
POST /api/return/validation-info informatii de validare retur

PUT /api/return/add primeste CreateReturnApiRequest: externalReference si externalClientId (obligatorii), warehouseId, initialExternalOrderId, lista returnedProducts (ReturnProductApiInfo: code, quantity).

Transferuri

Resurse: /api/transfer si /api/transfer-product.

Metoda Cale Descriere
POST /api/transfer/validate-transfer/{transferId} validare transfer
POST /api/transfer/change-transfer-status/{transferId}/{transferStatus} schimbare status transfer
DELETE /api/transfer/delete-transfer/{transferId} stergere transfer
POST /api/transfer-product/add-transfer-product adaugare produs in transfer
DELETE /api/transfer-product/delete-transfer-product/{transferProductId} stergere produs din transfer

Adaugarea unui produs (ScanClientRequest) include: documentId, productId, quantity, sourceLocationCode, destinationLocationCode, batchCode, sn, ssccCode etc. Raspunsul este ClientBaseResponse (message, status).

Inventar

Resursa de baza: /api/inventory.

Metoda Cale Descriere
POST /api/inventory/stock-adjustment ajustare de stoc
GET /api/inventory/{id} informatii inventar
GET /api/inventory/{id}/delta diferentele (delta) inventarului

POST /api/inventory/stock-adjustment primeste StockAdjustmentRequest: locationCode, inventoryId, model, quantity, recordedQuantity, stockBatchId, snList, stockBatchCode, expirationDate, productionDate, validate.

Comenzi de achizitie

Resursa de baza: /api/purchase-order (necesita permisiunea PURCHASE_ORDER).

Metoda Cale Descriere
POST /api/purchase-order/add adaugare comanda de achizitie
GET /api/purchase-order/{purchaseOrderId} detalii comanda de achizitie
PATCH /api/purchase-order/update actualizare
PATCH /api/purchase-order/{purchaseOrderId}/status/{status} schimbare status
PATCH /api/purchase-order/{purchaseOrderId}/close inchidere
DELETE /api/purchase-order/{purchaseOrderId} stergere
POST /api/purchase-order/add-product adaugare produs
DELETE /api/purchase-order/remove-product/{id} stergere produs

CreatePurchaseOrderDTO: date (obligatoriu, format dd.MM.yyyy), arrivalDate, supplier (obligatoriu), warehouseId, nirs, comment, documentNumber.

Productie

Resursa de baza: /api/production.

Metoda Cale Descriere
POST /api/production/read listare ordine de productie cu filtre
PUT /api/production/add adaugare ordin de productie
POST /api/production/close-simplified-production/order/{orderId} inchidere productie simplificata

Adaugarea (AddProductionOrderRequest) cere productId, quantity si thirdPartyReference. Raspunsul (ProductionOrderApiResponse) contine o lista de ProductionOrderInfo.

Nomenclatoare

Categorii (/api/category)

Metoda Cale Descriere
POST /api/category/read listare categorii
PUT /api/category/add adaugare
POST /api/category/update actualizare
DELETE /api/category/delete stergere

CategoryInfo: categoryId, externalReference, categoryName, categoryDetails, thirdPartyReference, active.

Unitati de masura (/api/measurement-unit)

Metoda Cale Descriere
PUT /api/measurement-unit/add adaugare
POST /api/measurement-unit/read listare
POST /api/measurement-unit/update actualizare
DELETE /api/measurement-unit/delete stergere

MeasurementUnitInfo: muId, name, code, details, status, thirdPartyReference.

Companii (/api/company)

Metoda Cale Descriere
POST /api/company/read listare companii (clienti/furnizori)
PUT /api/company/add adaugare
POST /api/company/update actualizare
DELETE /api/company/delete stergere
GET /api/company/third-party-reference/{thirdPartyReference}/check verifica existenta dupa referinta externa

CompanyInfo: companyId, externalReference, name, cui, regNo, bank, iban, address, phone, email, website, type, active, thirdPartyReference.

Metadate

Resursa de baza: /api/metadata. Endpoint-uri usoare pentru verificarea existentei/maparii inregistrarilor, inainte de o sincronizare completa.

Metoda Cale Descriere
POST /api/metadata/category metadate categorii
POST /api/metadata/product metadate produse
POST /api/metadata/product/by_model metadate produse dupa model
POST /api/metadata/order metadate comenzi

Toate primesc ReadMetadataApiRequest (active, thirdPartyReferenceIds, models).

Notificari, documente si triggere

Metoda Cale Descriere
POST /api/notifies trimite o notificare interna (ExternalNotifyRequest: title, message, recipientId)
POST /api/printable-document/notice/{orderId} genereaza avizul comenzii in format PDF (application/pdf)
GET /softone/trigger/order/{id} declanseaza sincronizarea unei comenzi
GET /softone/trigger/nir/{id} declanseaza sincronizarea unui NIR
GET /softone/trigger/delete/order/{id} declanseaza stergerea unei comenzi

Note

Aceasta documentatie acopera structura curenta a API-ului. Pentru integrari noi, contacteaza echipa Planograma pentru un cont de integrare si pentru maparea statusurilor specifice sistemului tau.