Créer ou modifier une entité
POST ou PUT ?
- POST
/api/Entity/{Entité}: création exclusivement. Réponse201 Createdavec l'entité complète (leNoUniqueSystemeSourceest attribué par l'ERP). - PUT
/api/Entity/{Entité}/{id}: selon le standard REST, crée OU remplace la ressource à cette adresse. Dans ERPConnector, le PUT fait une mise à jour partielle : seuls les champs fournis sont modifiés. Réponse200 OK.
Contrôler le comportement : les préconditions HTTP
If-Match: *→ mise à jour uniquement (erreur si la ressource n'existe pas). Recommandé sur les PUT.If-None-Match: *→ création uniquement (erreur si elle existe déjà). Recommandé sur les POST.
Champs requis par entité (exemples documentés)
- Customer (POST) :
NoClient(requis Acomba ; optionnel QuickBooks — auto-généré) etNomClient(requis partout). - CustomerInvoice (POST) :
NoFacture(requis Acomba, optionnel QuickBooks),DateFacture,InfoClientFacturerA(objet),LigneFacture(tableau, minimum 1 ligne). Chaque ligne :strNoProduit,QteFacture,PrixFinalrequis ;DescriptionLigneoptionnel. - Product (POST, Acomba seulement) :
NoProduitetDescription1obligatoires. - GLJournalEntry (POST, Acomba et Sage 50) :
DateEcritureet les lignes d'écriture (minimum 2 lignes ; chaque ligne :ComptesGL.NoCompteGL,Direction_DebitCredit(« Debit » / « Credit »), montant). L'écriture doit être balancée (total débits = total crédits), sinon erreur. - CustomerInvoicePayment (POST, Acomba seulement) :
Client_No,DatePaiement, plus les listes de paiements et de factures réglées.
Exemple : créer un client
POST https://gateway.erpconnector.ca/api/Entity/Customer
Authorization: Basic {base64(CodeLicence:CléSecrète)}
Content-Type: application/json
If-None-Match: *
{ "NoClient": "C999", "NomClient": "XYZ Corp" }
À vérifier avant de créer
Toutes les entités ne sont pas créables sur tous les systèmes (ex. CustomerInvoicePayment en POST = Acomba seulement ; GLAccount = lecture seule partout). Voir l'article Liste des entités supportées, et pour un champ précis, la matrice SDK Capabilities.