Documentation de l’API v1

Une API REST en JSON pour lire et écrire clients, produits, fournisseurs, charte de comptes et factures, et pour accéder aux 90 ressources du SDK, dans Acomba ou Avantage.

01 Démarrage

Toutes les routes sont servies en HTTPS sous l’adresse de base suivante :

https://api.ponteo.ca/v1

Pour appeler l’API, il vous faut :

  1. une clé de licence Ponteo Connect (format PTEO1-…), liée à une compagnie précise, obtenue avec un forfait Essentiel ou Illimité ;
  2. l’agent Ponteo Connect installé sur le serveur où tourne Acomba ou Avantage, configuré avec cette clé et en écoute.

Vérifiez ensuite que la chaîne complète répond, en ligne de commande ou directement dans le playground :

Terminal
export PONTEO_KEY="PTEO1-VOTRE-CLE"
curl https://api.ponteo.ca/v1/health -H "Authorization: Bearer $PONTEO_KEY"

Les requêtes et réponses sont en JSON encodé en UTF-8. Envoyez Content-Type: application/json avec tout corps de requête. Les dates suivent le format AAAA-MM-JJ et les montants sont des nombres décimaux à deux décimales au plus.

Développez sans risque. Commencez avec la clé de démo (données générées, aucune écriture), validez vos écritures en mode simulation, puis testez sur une copie de votre compagnie reliée à l’agent avant de passer en production.

Clé de démo publique

Pour essayer l’API tout de suite, sans licence ni agent, utilisez la clé de démo :

Terminal
curl "https://api.ponteo.ca/v1/customers?limit=5" \
  -H "Authorization: Bearer PTEO1-DEMOPONTEOPLAYGROUND234567-QEX5"

Elle renvoie des données générées et n’écrit jamais rien : les réponses portent l’en-tête X-Ponteo-Demo: true.

Les valeurs des exemples de cette page sont fictives et données à titre indicatif.

02 Authentification

Chaque appel porte la clé de licence dans l’en-tête Authorization, selon le schéma Bearer :

Authorization: Bearer PTEO1-VOTRE-CLE

La clé désigne à la fois l’appelant autorisé et la compagnie visée : une licence correspond à une compagnie. Pour interroger plusieurs compagnies, utilisez la clé de chacune.

La licence est validée à chaque appel. Une clé absente, inconnue, révoquée, suspendue ou expirée produit LICENSE_INVALID (HTTP 401). Selon la configuration de la licence, deux protections supplémentaires peuvent s’appliquer : la restriction d’adresse IP (FORBIDDEN) et la signature HMAC des requêtes (SIGNATURE_INVALID).

Traitez la clé comme un mot de passe. Quiconque la détient peut appeler l’API de la compagnie. Ne l’intégrez jamais dans du code exécuté par un navigateur ou une application mobile ; conservez-la côté serveur.

03 Enveloppe et en-têtes

Toutes les réponses partagent la même enveloppe. Le champ ok indique le succès ; requestId (un UUID) identifie l’appel de façon unique et figure aussi dans l’en-tête X-Request-Id, présent sur toutes les réponses. Communiquez-le au support en cas de besoin.

Succès
{
  "ok": true,
  "data": { },
  "requestId": "3f6c2a1e-8b7d-4c5e-9a0f-1b2c3d4e5f60"
}
Erreur
{
  "ok": false,
  "error": {
    "code": "BAD_REQUEST",
    "message": "Facture invalide : date est requise au format AAAA-MM-JJ.",
    "details": [
      "date est requise au format AAAA-MM-JJ."
    ]
  },
  "requestId": "9c1d7e3a-2b4f-4a6c-8d0e-5f7a9b1c3d25"
}

Selon l’erreur, error peut porter des champs supplémentaires : details (liste des problèmes de validation), sdkCode (code d’origine du logiciel comptable, pour SDK_ERROR) ou lastSeen (dernière connexion de l’agent, pour AGENT_UNAVAILABLE). Fiez-vous au code normalisé pour votre logique, et au statut HTTP pour le traitement générique.

En-têtes de réponse

En-têtePrésenceDescription
X-Request-IdToujoursIdentifiant unique de l’appel, identique à requestId.
Retry-AfterTHROTTLED, REQUEST_IN_PROGRESSDélai en secondes avant de réessayer.
AllowMETHOD_NOT_ALLOWEDMéthodes permises pour la route demandée.
X-Ponteo-DemoClé de démotrue : données générées, aucune écriture. Voir clé de démo.
Idempotent-ReplayedRejeutrue lorsque la réponse est celle d’une écriture déjà traitée. Voir idempotence.

04 Codes d’erreur

Il n’existe pas de code d’erreur pour une facture déjà présente : c’est un succès (statut already_exists, HTTP 200). Voir création de facture.

HTTPCodeSignificationRéessayer ?
400BAD_REQUESTParamètres ou corps invalides (champ manquant, format de date, répartition incohérente, etc.). error.details contient la liste des problèmes détectés.Après correction
401LICENSE_INVALIDClé de licence absente, inconnue, révoquée, suspendue ou expirée.Non
401SIGNATURE_INVALIDSignature HMAC absente alors que la licence l’exige, invalide, ou horodatage hors de la fenêtre de ±300 secondes.Après correction
403FORBIDDENAdresse IP non autorisée pour la licence, ou opération non activée sur la licence (suppression, accès ou écritures génériques).Non
403IP_BLOCKEDAdresse IP bloquée, par exemple après plusieurs essais de clés inexistantes. Contactez le support.Non
403WRITE_DISABLEDÉcritures non autorisées par la licence, ou désactivées dans l’agent pour cette compagnie (case « Autoriser les écritures »).Non
404NOT_FOUNDRoute inconnue, ou fiche demandée introuvable (compte, fournisseur, client, produit, facture).Non
405METHOD_NOT_ALLOWEDLa route existe, mais pas avec cette méthode. L’en-tête Allow liste les méthodes permises.Après correction
409REQUEST_IN_PROGRESSLa même écriture est déjà en cours de traitement. Réessayez après le délai de l’en-tête Retry-After (5 s).Oui, après Retry-After
409ALREADY_EXISTSUne fiche avec ce numéro existe déjà (création de client, fournisseur, produit ou compte).Non
405READ_ONLYCes paramètres sont en lecture seule dans le SDK Acomba / Avantage : la modification n’est pas prise en charge.Non
500INTERNAL_ERRORErreur inattendue de l’agent ou du serveur. Le requestId permet au support de retrouver l’appel.Plus tard, délai croissant
409DEMO_MODELa compagnie Acomba est en mode démonstration : l’écriture est refusée.Non
409INVOICE_PAIDSuppression refusée : la facture est payée.Non
422IDEMPOTENCY_CONFLICTLa même Idempotency-Key a déjà servi avec un corps de requête différent.Après correction
429THROTTLEDDébit trop élevé pour la licence. Réessayez après le délai de l’en-tête Retry-After (en secondes).Oui, après Retry-After
429QUOTA_EXCEEDEDLe quota mensuel de la licence est atteint.Non
502COMPANY_NOT_OPENL’agent n’a pas pu ouvrir la compagnie.Plus tard, délai croissant
409MODULE_INACTIVELe module Acomba / Avantage de cette ressource (projets, paie, point de vente…) n’est pas actif dans la compagnie.Non
502SDK_ERRORLe logiciel comptable a refusé l’opération. Le code d’origine est fourni dans error.sdkCode, avec son message.Après correction
503AGENT_UNAVAILABLEAucun agent connecté pour cette licence. error.lastSeen indique sa dernière connexion.Plus tard, délai croissant
504TIMEOUTL’agent n’a pas répondu dans le délai imparti.Plus tard, délai croissant

Stratégie de nouvelle tentative

  • THROTTLED et REQUEST_IN_PROGRESS : attendez le nombre de secondes indiqué par Retry-After, puis réessayez.
  • AGENT_UNAVAILABLE, TIMEOUT et COMPANY_NOT_OPEN : réessayez plus tard avec un délai croissant. Pour une écriture, renvoyez la même Idempotency-Key et le même corps.
  • BAD_REQUEST, METHOD_NOT_ALLOWED, SIGNATURE_INVALID, IDEMPOTENCY_CONFLICT, SDK_ERROR : corrigez la requête avant de la renvoyer. Seules les issues réussies sont mémorisées par l’idempotence : une écriture refusée peut être corrigée et renvoyée.
  • LICENSE_INVALID, FORBIDDEN, IP_BLOCKED, WRITE_DISABLED, DEMO_MODE, INVOICE_PAID, QUOTA_EXCEEDED : ne réessayez pas sans changement de configuration.

05 Pagination et synchronisation

Les routes de liste renvoient une page d’éléments dans data.items et un curseur dans data.nextCursor. Pour obtenir la page suivante, repassez ce curseur tel quel dans le paramètre cursor, avec les mêmes filtres. Quand il ne reste rien, nextCursor vaut null.

Forme d’une liste
{
  "ok": true,
  "data": {
    "items": [ … ],
    "nextCursor": "50",
    "total": 312
  },
  "requestId": "…"
}
Paramètre ou champDescription
limitÉléments par page. Par défaut 50, maximum 200.
cursorValeur opaque de data.nextCursor reçue à l’appel précédent. N’en interprétez ni n’en construisez le contenu.
data.totalFacultatif : nombre total de fiches, lorsqu’il est connu.
data.scannedFacultatif : nombre de fiches examinées pour produire la page (listes de factures).

Pages incomplètes

Pour les factures (/v1/invoices/ap et /v1/invoices/ar), chaque appel examine au plus 2 000 fiches. Une page filtrée peut donc revenir avec moins d’éléments que limit, voire aucun, et un nextCursor non nul. Ce n’est pas la fin : continuez tant que nextCursor n’est pas null.

Synchronisation incrémentale

Les routes /v1/customers et /v1/products acceptent modifiedSince (AAAA-MM-JJ ou AAAA-MM-JJTHH:MM:SS, heure locale du serveur comptable) : seules les fiches modifiées depuis cette date sont renvoyées. L’agent parcourt alors toutes les fiches ; suivez nextCursor jusqu’à null. Exemple d’application : la synchronisation de l’inventaire d’une boutique en ligne.

Terminal
# 1. Notez l'heure de départ de la synchronisation
# 2. Parcourez toutes les pages
curl "https://api.ponteo.ca/v1/products?modifiedSince=2026-09-15T08:00:00&limit=200" \
  -H "Authorization: Bearer $PONTEO_KEY"

curl "https://api.ponteo.ca/v1/products?modifiedSince=2026-09-15T08:00:00&limit=200&cursor=200" \
  -H "Authorization: Bearer $PONTEO_KEY"

# 3. Quand nextCursor vaut null, conservez l'heure de départ comme prochain modifiedSince

06 Débit, quotas et données

Limitation du débit

Chaque licence dispose d’un seau à jetons : par défaut 5 requêtes par seconde, avec des rafales de 20. Au-delà, la réponse est THROTTLED (HTTP 429) avec un en-tête Retry-After.

Quota mensuel

Une licence peut comporter un quota mensuel d’appels (par exemple le forfait Essentiel). Une fois atteint, les appels reçoivent QUOTA_EXCEEDED (HTTP 429) jusqu’au mois suivant. Les refus THROTTLED et QUOTA_EXCEEDED ne sont pas comptés.

Aucune conservation des données

Ponteo Connect ne met rien en cache et ne conserve aucune donnée comptable : chaque lecture est faite en direct dans le logiciel comptable par l’agent, et le contenu des requêtes et des réponses est effacé dès que la réponse vous est livrée. Seules des métadonnées techniques sans contenu (route, statut, durée) sont gardées, pour le comptage des transactions et le soutien. Détails : politique de confidentialité.

07 Routes

Deux familles de routes coexistent : les routes métier, à champs normalisés (comptes, clients, fournisseurs, produits, factures), documentées ci-dessous, et les routes génériques qui exposent chaque ressource du SDK avec ses champs d’origine (voir la référence des ressources).

GET /v1/health

État de la chaîne complète : agent, compagnie ouverte, file d’attente, écritures en suspens et vue du relais. Idéal pour une sonde de surveillance.

Requête
curl https://api.ponteo.ca/v1/health \
  -H "Authorization: Bearer $PONTEO_KEY"
Réponse 200
{
  "ok": true,
  "data": {
    "agent": {
      "version": "1.0.0",
      "platform": "Microsoft Windows 10.0.20348 / .NET Framework 4.8 / x86",
      "hostname": "SRV-COMPTA",
      "uptimeSeconds": 86412
    },
    "company": {
      "name": "Entreprise Exemple inc.",
      "product": "Acomba",
      "open": true,
      "sdkVersion": "…",
      "demoMode": false,
      "modules": { "ap": true, "ar": true, "gl": true, "inv": true },
      "writeEnabled": true
    },
    "queueDepth": 0,
    "requestsServed": 1284,
    "pendingWrites": [],
    "relay": {
      "agentLastSeen": "2026-09-16 10:41:57",
      "agentOnlineSince": "2026-09-15 06:02:11",
      "queueDepth": 0
    }
  },
  "requestId": "…"
}

pendingWrites liste les écritures commencées mais non confirmées (since, requestId, supplierNumber, invoiceNumber), par exemple après un arrêt brutal du serveur. company.writeEnabled reflète la case « Autoriser les écritures » de l’agent.

GET /v1/company

Compagnie liée à la licence : produit, modules actifs, mode démonstration, écritures permises et nombre de fiches.

Réponse 200
{
  "ok": true,
  "data": {
    "name": "Entreprise Exemple inc.",
    "product": "Acomba",
    "sdkVersion": "…",
    "demoMode": false,
    "modules": { "ap": true, "ar": true, "gl": true, "inv": true },
    "writeEnabled": true,
    "counts": { "accounts": 146, "suppliers": 60, "invoicesAP": 400 }
  },
  "requestId": "…"
}

GET /v1/accounts

GET /v1/accounts/{number}

Charte de comptes du grand livre, paginée, ou un compte par son numéro. categoryName vaut Bank, Assets, Liabilities, Capital, Income, Expenses, Allocation ou Quantity.

Requête
curl "https://api.ponteo.ca/v1/accounts?limit=2" \
  -H "Authorization: Bearer $PONTEO_KEY"
Réponse 200
{
  "ok": true,
  "data": {
    "items": [
      { "number": 1010, "description": "Encaisse", "category": 1, "categoryName": "Bank", "active": true, "position": 1 },
      { "number": 2110, "description": "Comptes à payer", "category": 3, "categoryName": "Liabilities", "active": true, "position": 2 }
    ],
    "nextCursor": "2"
  },
  "requestId": "…"
}

GET /v1/suppliers

GET /v1/suppliers/{number}

Liste paginée des fournisseurs, ou un fournisseur par son numéro.

GET /v1/suppliers/1000 · réponse 200
{
  "ok": true,
  "data": {
    "number": "1000",
    "name": "Fournitures Exemple ltée",
    "address": "123, rue Principale",
    "city": "Québec",
    "province": "QC",
    "postalCode": "G1A 1A1",
    "country": "CA",
    "phone": "418 555-0100",
    "email": "comptes@exemple.ca",
    "paymentTermNumber": 1,
    "purchaseAccountNumber": 5010,
    "active": true,
    "position": 1
  },
  "requestId": "…"
}

GET /v1/customers

GET /v1/customers/{number}

Clients, paginés et filtrables, ou un client par son numéro. Chaque fiche inclut le solde à recevoir (receivable), le total des achats et la date du dernier achat.

ParamètreDescription
cursor, limitVoir pagination.
modifiedSinceFiches modifiées depuis AAAA-MM-JJ ou AAAA-MM-JJTHH:MM:SS.
activetrue ou false.
Requête
curl "https://api.ponteo.ca/v1/customers?modifiedSince=2026-09-01&active=true" \
  -H "Authorization: Bearer $PONTEO_KEY"
Réponse 200
{
  "ok": true,
  "data": {
    "items": [
      {
        "number": "C2003",
        "name": "Distribution Exemple inc.",
        "address": "113 rue Principale",
        "city": "Lévis",
        "province": "QC",
        "postalCode": "G6V 1A1",
        "country": "CA",
        "phone": "418-555-3001",
        "email": "compta1@client-exemple.ca",
        "active": true,
        "termNumber": "30",
        "salesRepNumber": "V2",
        "receivable": 4210.37,
        "totalPurchases": 58140.12,
        "lastPurchaseDate": "2026-08-28",
        "modifiedAt": "2026-09-02T14:05:51",
        "position": 2
      }
    ],
    "nextCursor": null
  },
  "requestId": "…"
}

GET /v1/products

GET /v1/products/{number}

Produits de l’inventaire, paginés et filtrables, ou un produit par son numéro, avec prix, coûts, emplacement et état du stock.

ParamètreDescription
cursor, limitVoir pagination.
modifiedSinceFiches modifiées depuis AAAA-MM-JJ ou AAAA-MM-JJTHH:MM:SS.
activetrue ou false.
groupGroupe de produits, par exemple EPI.
GET /v1/products/P-10011 · réponse 200
{
  "ok": true,
  "data": {
    "number": "P-10011",
    "description": "Gants de nitrile (boîte de 100)",
    "active": true,
    "unitCode": "UN",
    "upc": "062712345678",
    "group": "EPI",
    "location": "A2-2",
    "sellingPrice": 18.95,
    "averageCost": 13.07,
    "lastCost": 12.88,
    "stock": { "onHand": 40, "available": 34, "reserved": 6, "ordered": 100, "reorderPoint": 40 },
    "modifiedAt": "2026-09-15T10:42:18",
    "position": 2
  },
  "requestId": "…"
}

stock.available correspond à la quantité en main moins la quantité réservée.

POST /v1/{customers|suppliers|products|accounts}

PATCH /v1/{customers|suppliers|products|accounts}/{number}

DELETE /v1/{customers|suppliers|products|accounts}/{number}

Créez, modifiez ou supprimez une fiche de client, de fournisseur, de produit ou de compte. Le corps utilise les champs normalisés (par exemple number, name) ; tout champ du SDK sans équivalent normalisé se passe dans extra, sous son nom d’origine. PATCH ne modifie que les champs envoyés.

POST /v1/customers · corps
{
  "number": "C2090",
  "name": "Atelier Exemple inc.",
  "city": "Québec",
  "email": "compta@atelier-exemple.ca",
  "extra": { "CuSalesRepNumber": "V2" }
}
Requête
curl -X PATCH https://api.ponteo.ca/v1/customers/C2090 \
  -H "Authorization: Bearer $PONTEO_KEY" \
  -H "Content-Type: application/json" \
  --data-binary '{ "email": "factures@atelier-exemple.ca" }'

Les mêmes conditions d’écriture s’appliquent : écritures permises par la licence et case « Autoriser les écritures » cochée dans l’agent ; la suppression doit en outre être activée sur la licence.

  • Une fiche créée par l’API est active par défaut ("active": false pour la créer inactive).
  • Un produit exige group (numéro d’un groupe de produits existant, voir GET /v1/product-groups).
  • Champs renvoyés en lecture et modifiables : phone, fax et email (clients, fournisseurs) ; sellingPrice (produits : liste de prix 1, niveau 1).
  • Un numéro déjà utilisé renvoie ALREADY_EXISTS (409) ; un numéro plus long que ce qu’accepte le logiciel comptable est refusé avec BAD_REQUEST, sans rien créer.

GET /v1/invoices/ar

Factures clients (comptes à recevoir), de la plus récente à la plus ancienne. Même pagination et même limite d’examen que les factures fournisseurs : voir pages incomplètes.

ParamètreDescription
cursor, limitVoir pagination.
customerNe renvoie que les factures de ce numéro de client.
from, toBornes de date de facture, incluses, AAAA-MM-JJ.
GET /v1/invoices/ar?customer=C2003 · réponse 200
{
  "ok": true,
  "data": {
    "items": [
      {
        "customerNumber": "C2003",
        "invoiceNumber": "70412",
        "date": "2026-07-18",
        "reference": "CMD-5412",
        "description": "Vente Distribution Exemple inc.",
        "subTotal": 1250.00,
        "total": 1437.19,
        "type": 2,
        "status": 0,
        "paid": false,
        "position": 413
      }
    ],
    "nextCursor": "412",
    "scanned": 88
  },
  "requestId": "…"
}

GET /v1/invoices/ar/{customer}/{number}

Une facture client précise, identifiée par le numéro du client et le numéro de facture, avec sa répartition.

POST /v1/invoices/ar

Crée une facture client. Même structure, mêmes règles, même idempotence et même mode simulation que la facture fournisseur, avec customerNumber au lieu de supplierNumber.

Répartition d’une facture client. Le compte clients (comptes à recevoir) porte le total en négatif ; les comptes de ventes et de taxes portent leurs montants en positif. La somme des postes doit valoir zéro. Pour une note de crédit ("type": "credit"), les signes sont inversés. Les conditions de paiement, le représentant, le territoire et le groupe de taxes sont repris de la fiche du client et d’une facture client existante du même type.

POST /v1/invoices/ar · corps
{
  "customerNumber": "C2003",
  "invoiceNumber": "70413",
  "date": "2026-09-16",
  "reference": "CMD-5413",
  "subTotal": 1250.00,
  "total": 1437.19,
  "distribution": [
    { "account": 1200, "amount": -1437.19, "description": "Comptes clients" },
    { "account": 4010, "amount": 1250.00,  "description": "Ventes" },
    { "account": 2310, "amount": 62.50,    "description": "TPS", "isTax": true },
    { "account": 2320, "amount": 124.69,   "description": "TVQ", "isTax": true }
  ]
}

POST /v1/customer-payments

Enregistre un encaissement client (paiement reçu) et l’applique à une facture client ouverte. Le corps porte l’en-tête du paiement dans fields et la facture visée dans lines. Mêmes règles d’idempotence et de mode simulation (dryRun) que les factures.

Facture transférée à la comptabilité. On n’encaisse qu’une facture déjà transférée (rapport journalier) et non soldée ; une facture du jour, pas encore transférée, est refusée (SDK_ERROR). Le numéro de paiement est attribué automatiquement. Cette version applique le paiement à une facture par appel.

POST /v1/customer-payments · corps
{
  "fields": {
    "customerNumber": "C2003",
    "date": "2026-10-04",
    "paymentType": 1
  },
  "lines": [
    { "number": "70413", "amount": 250.00, "discount": 0 }
  ]
}
Réponse 201
{
  "ok": true,
  "data": {
    "status": "created",
    "customer": "C2003",
    "paymentNumber": "128",
    "invoice": "70413",
    "applied": 250.00
  },
  "requestId": "…"
}

Champs de fields : customerNumber (requis), date (AAAA-MM-JJ, défaut aujourd’hui), paymentType (facultatif, défaut 1). Chaque ligne de lines porte number (numéro de facture) et amount ; discount est facultatif. Un paiement partiel est permis ; le montant ne doit pas dépasser le solde de la facture.

POST /v1/supplier-payments

Enregistre un paiement fournisseur (décaissement) et l’applique à une facture fournisseur ouverte. Même structure et mêmes règles que l’encaissement client, avec supplierNumber au lieu de customerNumber. Route en cours de finalisation — disponible prochainement.

POST /v1/supplier-payments · corps
{
  "fields": {
    "supplierNumber": "1000",
    "date": "2026-10-04",
    "paymentType": 1
  },
  "lines": [
    { "number": "F-2026-0815", "amount": 303.89, "discount": 0 }
  ]
}

GET /v1/invoices/ap

GET /v1/invoices/ap/{supplier}/{number}

Factures fournisseurs (comptes payables), de la plus récente à la plus ancienne, ou une facture précise avec sa répartition. Chaque appel de liste examine au plus 2 000 fiches : continuez tant que nextCursor n’est pas null.

ParamètreEmplacementDescription
cursor, limitrequêteVoir pagination.
supplierrequêteNe renvoie que les factures de ce numéro de fournisseur.
from, torequêteBornes de date de facture, incluses, AAAA-MM-JJ.
supplier, numbercheminNuméro du fournisseur et numéro de facture, encodés pour l’URL au besoin.
Requête
curl "https://api.ponteo.ca/v1/invoices/ap?supplier=1000&from=2026-09-01&to=2026-09-30" \
  -H "Authorization: Bearer $PONTEO_KEY"
Réponse 200
{
  "ok": true,
  "data": {
    "items": [
      {
        "supplierNumber": "1000",
        "invoiceNumber": "F-2026-0815",
        "date": "2026-09-12",
        "reference": "BC-4512",
        "description": "Achat de fournitures",
        "subTotal": 264.31,
        "total": 303.89,
        "type": 2,
        "status": 0,
        "paid": false,
        "position": 401
      }
    ],
    "nextCursor": null,
    "scanned": 23
  },
  "requestId": "…"
}

Le détail (GET /v1/invoices/ap/1000/F-2026-0815) ajoute distribution : une liste de postes { line, account, description, amount, isTax, project }.

POST /v1/invoices/ap

Crée une facture fournisseur. L’opération est idempotente et peut être simulée. Vous fournissez des numéros de fournisseur et de comptes ; Ponteo Connect les résout dans le logiciel comptable.

Conditions d’écriture. La licence doit permettre les écritures et la case « Autoriser les écritures » doit être cochée dans l’agent pour la compagnie ; sinon : WRITE_DISABLED (403). Une compagnie Acomba en mode démonstration refuse l’écriture : DEMO_MODE (409).

ChampTypeDescription
supplierNumbertexte, requisNuméro d’un fournisseur existant.
invoiceNumbertexte, requisNuméro de la facture. Avec le fournisseur, il identifie la facture.
datedate, requiseDate de la facture, AAAA-MM-JJ.
totalnombre, requisMontant total, deux décimales au plus. Doit égaler la somme des montants positifs de la répartition.
subTotalnombreMontant avant taxes. Par défaut : total.
referencetexteRéférence, par exemple un numéro de bon de commande.
descriptiontexteDescription de la facture.
typeentier ou texte1 | credit, 2 | invoice (par défaut), 3 | interest, 4 | other.
distributiontableau, requisAu moins deux postes { account, amount, description?, isTax? } : account entier, amount non nul à deux décimales au plus.
dryRunbooléenFacultatif : true pour simuler (équivaut à ?dryRun=true).

Règle de répartition. Le compte fournisseur (comptes à payer) porte le total en positif ; les comptes de dépenses et de taxes portent leurs montants en négatif. La somme des postes doit valoir zéro et total doit égaler la somme des montants positifs, sans quoi la requête est refusée avec BAD_REQUEST. Chaque compte doit exister dans la charte. Pour une note de crédit ("type": "credit"), les signes sont inversés : compte fournisseur en négatif, dépenses et taxes en positif.

Requête
curl -X POST https://api.ponteo.ca/v1/invoices/ap \
  -H "Authorization: Bearer $PONTEO_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 7d1f0c2e-5b8a-4c61-9e0f-3a2b4c5d6e7f" \
  --data-binary @facture.json
facture.json
{
  "supplierNumber": "1000",
  "invoiceNumber": "F-2026-0815",
  "date": "2026-09-12",
  "type": "invoice",
  "reference": "BC-4512",
  "description": "Achat de fournitures",
  "subTotal": 264.31,
  "total": 303.89,
  "distribution": [
    { "account": 2110, "amount": 303.89,  "description": "Comptes à payer" },
    { "account": 5010, "amount": -264.31, "description": "Achat" },
    { "account": 2330, "amount": -13.22,  "description": "TPS", "isTax": true },
    { "account": 2340, "amount": -26.36,  "description": "TVQ", "isTax": true }
  ]
}
Réponse 201 : facture créée
{
  "ok": true,
  "data": {
    "status": "created",
    "invoice": {
      "supplierNumber": "1000",
      "invoiceNumber": "F-2026-0815",
      "date": "2026-09-12",
      "reference": "BC-4512",
      "description": "Achat de fournitures",
      "subTotal": 264.31,
      "total": 303.89,
      "type": 2,
      "status": 0,
      "paid": false,
      "position": 401,
      "distribution": [
        { "line": 1, "account": 2110, "description": "Comptes à payer", "amount": 303.89, "isTax": false, "project": "0" },
        { "line": 2, "account": 5010, "description": "Achat", "amount": -264.31, "isTax": false, "project": "0" },
        { "line": 3, "account": 2330, "description": "TPS", "amount": -13.22, "isTax": true, "project": "0" },
        { "line": 4, "account": 2340, "description": "TVQ", "amount": -26.36, "isTax": true, "project": "0" }
      ]
    }
  },
  "requestId": "c41f7b2a-6e3d-4b09-a8f5-1d2e3c4b5a60"
}

La facture renvoyée est relue dans le logiciel comptable après l’écriture.

Réponse 200 : facture déjà présente
{
  "ok": true,
  "data": {
    "status": "already_exists",
    "invoice": { "supplierNumber": "1000", "invoiceNumber": "F-2026-0815", … }
  },
  "requestId": "…"
}

Si une facture existe déjà pour ce fournisseur et ce numéro, rien n’est écrit et la réponse est un succès HTTP 200 avec status: "already_exists" et la facture existante. Traitez ce cas comme un succès : la facture est bien dans vos livres.

DELETE /v1/invoices/ap/{supplier}/{number}

Supprime une facture fournisseur, uniquement si la suppression est activée sur la licence (sinon FORBIDDEN, 403). Une facture payée ne peut pas être supprimée : INVOICE_PAID (409).

Requête
curl -X DELETE https://api.ponteo.ca/v1/invoices/ap/1000/F-2026-0815 \
  -H "Authorization: Bearer $PONTEO_KEY"
Réponse 200
{
  "ok": true,
  "data": { "status": "deleted", "supplierNumber": "1000", "invoiceNumber": "F-2026-0815" },
  "requestId": "…"
}

GET /v1/resources

GET /v1/resources/{slug}

Catalogue des ressources génériques : libellé, domaine, opérations, routes et champs indicatifs. Aucune clé n’est requise.

Requête
curl https://api.ponteo.ca/v1/resources

GET /v1/cards/{object}

GET /v1/cards/{object}/{position}

Route de compatibilité : préférez les routes génériques. Accès en lecture aux objets du SDK, par exemple Customer ou Product036. Cet accès doit être activé sur la licence (sinon FORBIDDEN). Les champs sont renvoyés sous leurs noms d’origine dans le SDK. La pagination est la même que pour les autres listes.

GET /v1/cards/Customer?limit=1 · réponse 200
{
  "ok": true,
  "data": {
    "object": "AcoSDK.Customer036",
    "items": [
      { "position": 1, "fields": { … } }
    ],
    "nextCursor": "1"
  },
  "requestId": "…"
}
GET /v1/cards/Customer/1 · réponse 200
{
  "ok": true,
  "data": { "object": "AcoSDK.Customer036", "position": 1, "fields": { … } },
  "requestId": "…"
}

08 Référence complète des ressources

L’API expose 90 ressources du SDK, avec leurs champs d’origine. Trouvez la bonne ressource ci-dessous, puis consultez sa fiche : routes, état de vérification et champs.

Je cherche…

Donnée ou opérationOù la trouver
La charte comptable (plan comptable)/v1/accounts
Une fiche client, son solde à recevoir/v1/customers
Les quantités en inventaire et le prix d’un produit/v1/products
Les factures d’un client, leur détail et leur statut payé/v1/invoices/ar · /v1/transactions-ar
Créer une facture client ou une note de créditPOST /v1/invoices/ar
Les factures fournisseurs et leur répartition/v1/invoices/ap · /v1/transactions-ap
Créer une facture fournisseurPOST /v1/invoices/ap
Les paiements reçus des clients/v1/customer-payments · /v1/customer-payment-lines
Les paiements faits aux fournisseurs/v1/supplier-payments · /v1/supplier-payment-lines
Les écritures du grand livre/v1/gl-entries · /v1/journal-transactions
L’historique des mouvements d’inventaire/v1/product-trails
Les groupes de produits, fournisseurs d’un produit, numéros de série/v1/product-groups · /v1/product-suppliers · /v1/product-serials
Les documents du module Facturation (commandes, soumissions) et leurs lignes/v1/sales-documents · /v1/sales-document-lines
Taxes et groupes de taxes/v1/taxes · /v1/tax-groups
Représentants, territoires, escomptes, modes de livraison/v1/sales-reps · /v1/territories · /v1/discounts · /v1/shipping-methods
Conditions de paiement (clients, fournisseurs)/v1/customer-terms · /v1/supplier-payment-terms
Nom, adresse et numéros de taxes de l’entreprise/v1/company-information
Paramètres des modules/v1/settings-customers · /v1/settings-inventory · /v1/settings-gl
Projets et soldes de projets/v1/projects · /v1/project-balances
Employés, paie, feuilles de temps/v1/employees · /v1/payroll-transactions · /v1/timesheets
Contacts et appels du CRM/v1/addresses · /v1/calls
L’état de l’agent et les modules actifs de la compagnie/v1/health · /v1/company
Lecture et écriture vérifiées Lecture vérifiée Lecture seule Aucune fiche Module requis

États vérifiés sur une compagnie Acomba réelle. « Aucune fiche » ou « Module requis » : la route est disponible, mais n’a pas pu être vérifiée sur des données (module absent ou fiches inexistantes dans la compagnie de vérification). Vérifiez-la sur votre installation avec /schema puis une lecture.

Routes génériques

Chaque ressource propose les routes permises par ses opérations :

RouteOpérationDescription
GET /v1/{slug}listListe paginée (cursor, limit).
GET /v1/{slug}/{id}getUne fiche par sa position. Avec ?by=number, {id} est le numéro de la fiche, pour les ressources qui en ont un.
POST /v1/{slug}createCrée une fiche : { "fields": { … } }, plus "lines" pour les transactions.
PATCH /v1/{slug}/{id}updateModifie les champs envoyés : { "fields": { … } }.
DELETE /v1/{slug}/{id}deleteSupprime la fiche.
GET · PATCH /v1/{slug}settingsRessources de paramètres : lecture et modification, sans identifiant. Certains paramètres sont en lecture seule dans le SDK (READ_ONLY) ; ceux d’un module non installé renvoient MODULE_INACTIVE.
GET /v1/{slug}/schematoutesListe exacte des champs, lue dans le SDK de votre installation.
POST /v1/{slug} · corps (lines : transactions seulement)
{
  "fields": { "ChampSDK": "valeur", "AutreChamp": 12 },
  "lines": [
    { "ChampLigne": "valeur" }
  ]
}
  • Propriétés indexées : "Nom[index]", par exemple "CuPhoneNumber[2]" (télécopieur) ou "PrSellingPrice[1,2]" (liste 1, niveau 2). /schema indique "indexed": true.
  • Clés primaires : à la création, chaque champ fourni qui a une clé primaire du même nom (PKey_<champ>) la renseigne automatiquement ; une clé au nom différent peut être passée telle quelle dans fields (ex. "PKey_InCustomerCP").
  • Transactions : les postes (lignes) se lisent par les routes métier GET /v1/invoices/ap|ar/{tiers}/{numéro} (distribution) ; GET /v1/{slug}/{id} renvoie l’en-tête.
  • Les fiches supprimées ne sont jamais renvoyées ; une position vide ou supprimée répond NOT_FOUND.

Droits. L’accès générique, les écritures génériques et les suppressions génériques s’activent par licence (sinon FORBIDDEN). Pour écrire, la case « Autoriser les écritures » doit aussi être cochée dans l’agent. Les noms de champs sont ceux du SDK : vérifiez-les avec /schema.

Champs indicatifs issus de l'analyse statique d'AcoSDK ; la liste exacte d'une installation est donnée par GET /v1/{slug}/schema. Pour accounts, customers, suppliers et products, les routes de liste, de fiche et d’écriture sont les routes métier à champs normalisés ; /schema reste disponible.

Grand livre 8

Charte de comptes /v1/accounts

  • Lecture et écriture vérifiées
  • fiche routes métier
  • Objet SDK : Charter
  • Numéro : ChNumber

Charte de comptes (plan comptable) : numéro, description, catégorie, actif.

GET/v1/accountsListe paginée, champs normalisés. Détails
GET/v1/accounts/{number}Fiche par son numéro, champs normalisés. Détails
POST/v1/accountsCréer une fiche (champs normalisés). Détails
PATCH/v1/accounts/{number}Modifier les champs envoyés. Détails
DELETE/v1/accounts/{number}Supprimer la fiche. Détails
GET/v1/accounts/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Écritures de grand livre /v1/gl-entries

  • Lecture vérifiée
  • transaction
  • Objet SDK : TransGL

Écritures de grand livre (en-têtes des transactions du journal général).

GET/v1/gl-entriesListe paginée (cursor, limit), champs du SDK.
GET/v1/gl-entries/{position}Une fiche par sa position.
POST/v1/gl-entriesCréer : { "fields": { … }, "lines": [ … ] }.
PATCH/v1/gl-entries/{position}Modifier les champs envoyés.
DELETE/v1/gl-entries/{position}Supprimer la fiche.
GET/v1/gl-entries/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (13) — la liste exacte vient de /schema
  • JoAmount number
  • JoBankCP integer
  • JoBankNumber string
  • JoCurrentSession string
  • JoDate date
  • JoDescription string
  • JoFlags string
  • JoPeriod string
  • JoStatus string
  • JoTimeModified date
  • JoTransactionNumber string
  • JoType string
  • JoUnique integer

Transactions de journal /v1/journal-transactions

  • Lecture vérifiée
  • transaction
  • Objet SDK : Transaction

Transactions du journal, tous modules confondus.

GET/v1/journal-transactionsListe paginée (cursor, limit), champs du SDK.
GET/v1/journal-transactions/{position}Une fiche par sa position.
POST/v1/journal-transactionsCréer : { "fields": { … }, "lines": [ … ] }.
PATCH/v1/journal-transactions/{position}Modifier les champs envoyés.
DELETE/v1/journal-transactions/{position}Supprimer la fiche.
GET/v1/journal-transactions/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (13) — la liste exacte vient de /schema
  • JoAmount number
  • JoBankCP integer
  • JoBankNumber string
  • JoCurrentSession string
  • JoDate date
  • JoDescription string
  • JoFlags string
  • JoPeriod string
  • JoStatus string
  • JoTimeModified date
  • JoTransactionNumber string
  • JoType string
  • JoUnique integer

Lots de transactions /v1/transaction-batches

  • Aucune fiche
  • transaction
  • Objet SDK : TransBatch

Lots de transactions.

GET/v1/transaction-batchesListe paginée (cursor, limit), champs du SDK.
GET/v1/transaction-batches/{position}Une fiche par sa position.
POST/v1/transaction-batchesCréer : { "fields": { … }, "lines": [ … ] }.
PATCH/v1/transaction-batches/{position}Modifier les champs envoyés.
DELETE/v1/transaction-batches/{position}Supprimer la fiche.
GET/v1/transaction-batches/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Lots récurrents /v1/batches

  • Aucune fiche
  • fiche
  • Objet SDK : Batch
  • Numéro : BaNumber

Lots.

GET/v1/batchesListe paginée (cursor, limit), champs du SDK.
GET/v1/batches/{position}Une fiche par sa position.
GET/v1/batches/{numéro}?by=numberUne fiche par son numéro (BaNumber).
POST/v1/batchesCréer : { "fields": { … } }.
PATCH/v1/batches/{position}Modifier les champs envoyés.
DELETE/v1/batches/{position}Supprimer la fiche.
GET/v1/batches/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (11) — la liste exacte vient de /schema
  • BaDateTransfered date
  • BaDayOfTheMonth string
  • BaDescription string
  • BaFrequency string
  • BaNumber string
  • BaOtherFrequency string
  • BaRepetitive string
  • BaStatus string
  • BaTimeModified date
  • BaUnique integer
  • BaUsed boolean

Journaux de lots /v1/batch-journals

  • Aucune fiche
  • fiche
  • Objet SDK : BatchJournal
  • Numéro : BJNumber

Journaux de lots.

GET/v1/batch-journalsListe paginée (cursor, limit), champs du SDK.
GET/v1/batch-journals/{position}Une fiche par sa position.
GET/v1/batch-journals/{numéro}?by=numberUne fiche par son numéro (BJNumber).
POST/v1/batch-journalsCréer : { "fields": { … } }.
PATCH/v1/batch-journals/{position}Modifier les champs envoyés.
DELETE/v1/batch-journals/{position}Supprimer la fiche.
GET/v1/batch-journals/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (15) — la liste exacte vient de /schema
  • BJAmount number
  • BJBankCP integer
  • BJBankNumber string
  • BJBatchCP integer
  • BJBatchNumber string
  • BJCheckCP integer
  • BJDate date
  • BJDescription string
  • BJNumber string
  • BJReference string
  • BJStatus string
  • BJTimeModified date
  • BJType string
  • BJUnique integer
  • BJVoid string

Chèques du grand livre /v1/checks-gl

  • Aucune fiche
  • fiche
  • Objet SDK : CheckGL

Chèques émis par le grand livre.

GET/v1/checks-glListe paginée (cursor, limit), champs du SDK.
GET/v1/checks-gl/{position}Une fiche par sa position.
POST/v1/checks-glCréer : { "fields": { … } }.
PATCH/v1/checks-gl/{position}Modifier les champs envoyés.
DELETE/v1/checks-gl/{position}Supprimer la fiche.
GET/v1/checks-gl/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Financements /v1/finances

  • Lecture vérifiée
  • fiche
  • Objet SDK : Finance
  • Numéro : FiNumber

Paramètres financiers : périodes et dates de l’exercice.

GET/v1/financesListe paginée (cursor, limit), champs du SDK.
GET/v1/finances/{position}Une fiche par sa position.
GET/v1/finances/{numéro}?by=numberUne fiche par son numéro (FiNumber).
POST/v1/financesCréer : { "fields": { … } }.
PATCH/v1/finances/{position}Modifier les champs envoyés.
DELETE/v1/finances/{position}Supprimer la fiche.
GET/v1/finances/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (16) — la liste exacte vient de /schema
  • FiBimonthlyDate date
  • FiCountry string
  • FiDescription string
  • FiFinalAmount number
  • FiInitialAmount number
  • FiInterestPeriodicity string
  • FiInterestRate number
  • FiNumber string
  • FiNumberOfPeriods string
  • FiPeriodicAmount number
  • FiPeriodicity string
  • FiStartDate date
  • FiStatus string
  • FiTimeModified date
  • FiType string
  • FiUnique integer

États financiers 3

Bilan /v1/balance-sheet

  • Lecture vérifiée
  • rapport
  • Objet SDK : BalanceSheet

Définition (mise en page) du bilan, pas les montants calculés.

GET/v1/balance-sheetListe paginée (cursor, limit), champs du SDK.
GET/v1/balance-sheet/{position}Une fiche par sa position.
GET/v1/balance-sheet/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

État des résultats /v1/income-statement

  • Lecture vérifiée
  • rapport
  • Objet SDK : IncomeStatement

Définition (mise en page) de l’état des résultats, pas les montants calculés.

GET/v1/income-statementListe paginée (cursor, limit), champs du SDK.
GET/v1/income-statement/{position}Une fiche par sa position.
GET/v1/income-statement/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Ratios financiers /v1/ratios

  • Aucune fiche
  • fiche
  • Objet SDK : Ratio
  • Numéro : RaNumber

Ratios financiers définis.

GET/v1/ratiosListe paginée (cursor, limit), champs du SDK.
GET/v1/ratios/{position}Une fiche par sa position.
GET/v1/ratios/{numéro}?by=numberUne fiche par son numéro (RaNumber).
POST/v1/ratiosCréer : { "fields": { … } }.
PATCH/v1/ratios/{position}Modifier les champs envoyés.
DELETE/v1/ratios/{position}Supprimer la fiche.
GET/v1/ratios/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (10) — la liste exacte vient de /schema
  • RaAverage string
  • RaComments string
  • RaDescription string
  • RaNumber string
  • RaRatio string
  • RaStatus string
  • RaTimeModified date
  • RaTitle string
  • RaUnique integer
  • RaUnits string

Clients 10

Clients /v1/customers

  • Lecture et écriture vérifiées
  • fiche routes métier
  • Objet SDK : Customer
  • Numéro : CuNumber

Fiches clients : coordonnées, solde à recevoir, achats. Routes métier à champs normalisés.

GET/v1/customersListe paginée, champs normalisés. Détails
GET/v1/customers/{number}Fiche par son numéro, champs normalisés. Détails
POST/v1/customersCréer une fiche (champs normalisés). Détails
PATCH/v1/customers/{number}Modifier les champs envoyés. Détails
DELETE/v1/customers/{number}Supprimer la fiche. Détails
GET/v1/customers/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Termes de paiement clients /v1/customer-terms

  • Lecture et écriture vérifiées
  • fiche
  • Objet SDK : CustomerTerm
  • Numéro : CTNumber

Conditions de paiement des clients (net 30, etc.).

GET/v1/customer-termsListe paginée (cursor, limit), champs du SDK.
GET/v1/customer-terms/{position}Une fiche par sa position.
GET/v1/customer-terms/{numéro}?by=numberUne fiche par son numéro (CTNumber).
POST/v1/customer-termsCréer : { "fields": { … } }.
PATCH/v1/customer-terms/{position}Modifier les champs envoyés.
DELETE/v1/customer-terms/{position}Supprimer la fiche.
GET/v1/customer-terms/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (18) — la liste exacte vient de /schema
  • CTDaysBetweenPayments string
  • CTDescription string
  • CTDueDays integer
  • CTEqualPayments string
  • CTFirstPayment string
  • CTNumber string
  • CTNumberOfDays integer
  • CTNumberOfPayments string
  • CTNumberOfSchedules string
  • CTPercent number
  • CTPeriodicity string
  • CTScheduleDate date
  • CTSchedulePercent number
  • CTStatus string
  • CTTimeModified date
  • CTType string
  • CTUnique integer
  • CTUsed boolean

Encaissements clients /v1/customer-payments

  • Lecture vérifiée
  • transaction
  • Objet SDK : CustomerPayment

Paiements reçus des clients (encaissements).

GET/v1/customer-paymentsListe paginée (cursor, limit), champs du SDK.
GET/v1/customer-payments/{position}Une fiche par sa position.
POST/v1/customer-paymentsCréer : { "fields": { … }, "lines": [ … ] }.
PATCH/v1/customer-payments/{position}Modifier les champs envoyés.
DELETE/v1/customer-payments/{position}Supprimer la fiche.
GET/v1/customer-payments/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (45) — la liste exacte vient de /schema
  • CPAmount number
  • CPAmountToPay string
  • CPArchived boolean
  • CPBankAccountNumber string
  • CPBranchNumber string
  • CPCashierCP integer
  • CPCurrentDay string
  • CPCustomerCP integer
  • CPCustomerNumber string
  • CPDiscount string
  • CPFromInvoicing string
  • CPInstitutionNumber string
  • CPInvoiceARCP integer
  • CPInvoiceARUnique integer
  • CPInvoiceNumber string
  • CPMultiplePayment string
  • CPNoticeDate date
  • CPOnHold string
  • CPOverpaymentAmount number
  • CPPaymentCP integer
  • CPPaymentDate date
  • CPPaymentMode string
  • CPPaymentNumber string
  • CPPaymentType string
  • CPPaymentUnique integer
  • CPReceivable number
  • CPReceivedAmount number
  • CPReference string
  • CPRefund string
  • CPRefundAmount number
  • CPRefundMode string
  • CPRoundingCash string
  • CPStatementDate date
  • CPStatus string
  • CPTempAmount number
  • CPTempDiscount string
  • CPTimeModified date
  • CPTotalCredit string
  • CPTotalDeposit string
  • CPTotalDiscount string
  • CPTotalOverpayment string
  • CPTotalPenalty string
  • CPTransactionType string
  • CPTransphereId string
  • CPUnique integer

Lignes d'encaissement /v1/customer-payment-lines

  • Lecture vérifiée
  • fiche
  • Objet SDK : CustomerPaymentLine

Lignes des paiements clients (factures réglées).

GET/v1/customer-payment-linesListe paginée (cursor, limit), champs du SDK.
GET/v1/customer-payment-lines/{position}Une fiche par sa position.
POST/v1/customer-payment-linesCréer : { "fields": { … } }.
PATCH/v1/customer-payment-lines/{position}Modifier les champs envoyés.
DELETE/v1/customer-payment-lines/{position}Supprimer la fiche.
GET/v1/customer-payment-lines/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Factures clients (vue) /v1/invoices-ar

  • Lecture vérifiée
  • vue
  • Objet SDK : InvoiceAR

Vue en lecture des factures clients, champs d’origine du SDK.

GET/v1/invoices-arListe paginée (cursor, limit), champs du SDK.
GET/v1/invoices-ar/{position}Une fiche par sa position.
GET/v1/invoices-ar/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (60) — la liste exacte vient de /schema
  • InActive boolean
  • InAddress string
  • InAllPaid boolean
  • InAmount number
  • InArchived boolean
  • InAssociatedBid string
  • InAssociatedOrder string
  • InCareOf string
  • InCashProvided string
  • InCashierCP integer
  • InChangeReturned string
  • InCity string
  • InCompanyAddress string
  • InCompanyCareOf string
  • InCompanyCity string
  • InCompanyCountry string
  • InCompanyEmail string
  • InCompanyName string
  • InCompanyPhoneExtention string
  • InCompanyPhoneNumber string
  • InCompanyPostalCode string
  • InCompanyWWW string
  • InCurrentDay string
  • InCustomerCP integer
  • InCustomerInterest string
  • InCustomerLanguage string
  • InCustomerNumber string
  • InCustomerSupplierCP integer
  • InCustomerSupplierNumber string
  • InDate date
  • InDateMax date
  • InDateStatement date
  • InDaysBetweenPayments string
  • InDepositIsPresent boolean
  • InDepositPaymentMode string
  • InDescription string
  • InDueDays integer
  • InEqualPayments string
  • InExcludeInvoicingPayment string
  • InFirstPayment string
  • InHoldbackAmount number
  • InHoldbackCP integer
  • InHoldbackDate date
  • InHoldbackNumber string
  • InHoldbackPercent number
  • InHoldbackType string
  • InISOCountryCode string
  • InInvoiceNumber string
  • InInvoiceSubTotal number
  • InInvoiceTotal number
  • InInvoiceTotalCost number
  • InInvoiceType string
  • InInvoicedToCP integer
  • InInvoicedToNumber string
  • InInvoicingCP integer
  • InInvoicingNumber string
  • InInvoicingNumberPrefix string
  • InIsInvoicePrinted boolean
  • InIsPrinted boolean
  • InKeepTaxGroup string

Transactions comptes clients /v1/transactions-ar

  • Lecture vérifiée
  • transaction
  • Objet SDK : TransAR

Transactions clients (objet d’écriture des factures clients), en-tête.

GET/v1/transactions-arListe paginée (cursor, limit), champs du SDK.
GET/v1/transactions-ar/{position}Une fiche par sa position.
POST/v1/transactions-arCréer : { "fields": { … }, "lines": [ … ] }.
PATCH/v1/transactions-ar/{position}Modifier les champs envoyés.
DELETE/v1/transactions-ar/{position}Supprimer la fiche.
GET/v1/transactions-ar/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (60) — la liste exacte vient de /schema
  • InActive boolean
  • InAddress string
  • InAllPaid boolean
  • InAmount number
  • InArchived boolean
  • InAssociatedBid string
  • InAssociatedOrder string
  • InCareOf string
  • InCashProvided string
  • InCashierCP integer
  • InChangeReturned string
  • InCity string
  • InCompanyAddress string
  • InCompanyCareOf string
  • InCompanyCity string
  • InCompanyCountry string
  • InCompanyEmail string
  • InCompanyName string
  • InCompanyPhoneExtention string
  • InCompanyPhoneNumber string
  • InCompanyPostalCode string
  • InCompanyWWW string
  • InCurrentDay string
  • InCustomerCP integer
  • InCustomerInterest string
  • InCustomerLanguage string
  • InCustomerNumber string
  • InCustomerSupplierCP integer
  • InCustomerSupplierNumber string
  • InDate date
  • InDateMax date
  • InDateStatement date
  • InDaysBetweenPayments string
  • InDepositIsPresent boolean
  • InDepositPaymentMode string
  • InDescription string
  • InDueDays integer
  • InEqualPayments string
  • InExcludeInvoicingPayment string
  • InFirstPayment string
  • InHoldbackAmount number
  • InHoldbackCP integer
  • InHoldbackDate date
  • InHoldbackNumber string
  • InHoldbackPercent number
  • InHoldbackType string
  • InISOCountryCode string
  • InInvoiceNumber string
  • InInvoiceSubTotal number
  • InInvoiceTotal number
  • InInvoiceTotalCost number
  • InInvoiceType string
  • InInvoicedToCP integer
  • InInvoicedToNumber string
  • InInvoicingCP integer
  • InInvoicingNumber string
  • InInvoicingNumberPrefix string
  • InIsInvoicePrinted boolean
  • InIsPrinted boolean
  • InKeepTaxGroup string

Représentants /v1/sales-reps

  • Lecture et écriture vérifiées
  • fiche
  • Objet SDK : SalesRep
  • Numéro : SRNumber

Représentants (vendeurs).

GET/v1/sales-repsListe paginée (cursor, limit), champs du SDK.
GET/v1/sales-reps/{position}Une fiche par sa position.
GET/v1/sales-reps/{numéro}?by=numberUne fiche par son numéro (SRNumber).
POST/v1/sales-repsCréer : { "fields": { … } }.
PATCH/v1/sales-reps/{position}Modifier les champs envoyés.
DELETE/v1/sales-reps/{position}Supprimer la fiche.
GET/v1/sales-reps/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (25) — la liste exacte vient de /schema
  • SRAddress string
  • SRAnnualSales number
  • SRCareOf string
  • SRCity string
  • SREMail string
  • SREMailDescription string
  • SRFutureSales number
  • SRISOCountryCode string
  • SRLanguage string
  • SRName string
  • SRNumber string
  • SRPastSales number
  • SRPhoneDescription string
  • SRPhoneExtention string
  • SRPhoneNumber string
  • SRPostalCode string
  • SRProvince string
  • SRSortKey string
  • SRStatus string
  • SRTimeModified date
  • SRUnique integer
  • SRUsed boolean
  • SRUserCP integer
  • SRUserNumber string
  • SRWebAddress string

Territoires /v1/territories

  • Lecture et écriture vérifiées
  • fiche
  • Objet SDK : Territory
  • Numéro : TeNumber

Territoires de vente.

GET/v1/territoriesListe paginée (cursor, limit), champs du SDK.
GET/v1/territories/{position}Une fiche par sa position.
GET/v1/territories/{numéro}?by=numberUne fiche par son numéro (TeNumber).
POST/v1/territoriesCréer : { "fields": { … } }.
PATCH/v1/territories/{position}Modifier les champs envoyés.
DELETE/v1/territories/{position}Supprimer la fiche.
GET/v1/territories/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (9) — la liste exacte vient de /schema
  • TeAnnualSales number
  • TeDescription string
  • TeFutureSales number
  • TeNumber string
  • TePastSales number
  • TeStatus string
  • TeTimeModified date
  • TeUnique integer
  • TeUsed boolean

Escomptes /v1/discounts

  • Lecture et écriture vérifiées
  • fiche
  • Objet SDK : Discount
  • Numéro : DiNumber

Escomptes et remises.

GET/v1/discountsListe paginée (cursor, limit), champs du SDK.
GET/v1/discounts/{position}Une fiche par sa position.
GET/v1/discounts/{numéro}?by=numberUne fiche par son numéro (DiNumber).
POST/v1/discountsCréer : { "fields": { … } }.
PATCH/v1/discounts/{position}Modifier les champs envoyés.
DELETE/v1/discounts/{position}Supprimer la fiche.
GET/v1/discounts/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (9) — la liste exacte vient de /schema
  • DiCostDiscount string
  • DiDescription string
  • DiNumber string
  • DiProductGroupDiscount string
  • DiProductGroupDiscountActive boolean
  • DiStatus string
  • DiTimeModified date
  • DiUnique integer
  • DiUsed boolean

Modes d'expédition /v1/shipping-methods

  • Lecture et écriture vérifiées
  • fiche
  • Objet SDK : Shipping
  • Numéro : ShNumber

Modes de livraison (transporteurs).

GET/v1/shipping-methodsListe paginée (cursor, limit), champs du SDK.
GET/v1/shipping-methods/{position}Une fiche par sa position.
GET/v1/shipping-methods/{numéro}?by=numberUne fiche par son numéro (ShNumber).
POST/v1/shipping-methodsCréer : { "fields": { … } }.
PATCH/v1/shipping-methods/{position}Modifier les champs envoyés.
DELETE/v1/shipping-methods/{position}Supprimer la fiche.
GET/v1/shipping-methods/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (6) — la liste exacte vient de /schema
  • ShDescription string
  • ShNumber string
  • ShStatus string
  • ShTimeModified date
  • ShUnique integer
  • ShUsed boolean

Fournisseurs 7

Fournisseurs /v1/suppliers

  • Lecture et écriture vérifiées
  • fiche routes métier
  • Objet SDK : Supplier
  • Numéro : SuNumber

Fiches fournisseurs. Routes métier à champs normalisés.

GET/v1/suppliersListe paginée, champs normalisés. Détails
GET/v1/suppliers/{number}Fiche par son numéro, champs normalisés. Détails
POST/v1/suppliersCréer une fiche (champs normalisés). Détails
PATCH/v1/suppliers/{number}Modifier les champs envoyés. Détails
DELETE/v1/suppliers/{number}Supprimer la fiche. Détails
GET/v1/suppliers/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Factures fournisseurs (vue) /v1/invoices-ap

  • Lecture vérifiée
  • vue
  • Objet SDK : InvoiceAP

Vue en lecture des factures fournisseurs, champs d’origine du SDK.

GET/v1/invoices-apListe paginée (cursor, limit), champs du SDK.
GET/v1/invoices-ap/{position}Une fiche par sa position.
GET/v1/invoices-ap/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (60) — la liste exacte vient de /schema
  • InActive boolean
  • InAddress string
  • InAllPaid boolean
  • InAmount number
  • InArchived boolean
  • InAssociatedBid string
  • InAssociatedOrder string
  • InCareOf string
  • InCashProvided string
  • InCashierCP integer
  • InChangeReturned string
  • InCity string
  • InCompanyAddress string
  • InCompanyCareOf string
  • InCompanyCity string
  • InCompanyCountry string
  • InCompanyEmail string
  • InCompanyName string
  • InCompanyPhoneExtention string
  • InCompanyPhoneNumber string
  • InCompanyPostalCode string
  • InCompanyWWW string
  • InCurrentDay string
  • InCustomerCP integer
  • InCustomerInterest string
  • InCustomerLanguage string
  • InCustomerNumber string
  • InCustomerSupplierCP integer
  • InCustomerSupplierNumber string
  • InDate date
  • InDateMax date
  • InDateStatement date
  • InDaysBetweenPayments string
  • InDepositIsPresent boolean
  • InDepositPaymentMode string
  • InDescription string
  • InDueDays integer
  • InEqualPayments string
  • InExcludeInvoicingPayment string
  • InFirstPayment string
  • InHoldbackAmount number
  • InHoldbackCP integer
  • InHoldbackDate date
  • InHoldbackNumber string
  • InHoldbackPercent number
  • InHoldbackType string
  • InISOCountryCode string
  • InInvoiceNumber string
  • InInvoiceSubTotal number
  • InInvoiceTotal number
  • InInvoiceTotalCost number
  • InInvoiceType string
  • InInvoicedToCP integer
  • InInvoicedToNumber string
  • InInvoicingCP integer
  • InInvoicingNumber string
  • InInvoicingNumberPrefix string
  • InIsInvoicePrinted boolean
  • InIsPrinted boolean
  • InKeepTaxGroup string

Transactions comptes fournisseurs /v1/transactions-ap

  • Lecture et écriture vérifiées
  • transaction
  • Objet SDK : TransAP

Transactions fournisseurs (objet d’écriture des factures fournisseurs) ; création générique avec postes vérifiée.

GET/v1/transactions-apListe paginée (cursor, limit), champs du SDK.
GET/v1/transactions-ap/{position}Une fiche par sa position.
POST/v1/transactions-apCréer : { "fields": { … }, "lines": [ … ] }.
PATCH/v1/transactions-ap/{position}Modifier les champs envoyés.
DELETE/v1/transactions-ap/{position}Supprimer la fiche.
GET/v1/transactions-ap/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (60) — la liste exacte vient de /schema
  • InActive boolean
  • InAddress string
  • InAllPaid boolean
  • InAmount number
  • InArchived boolean
  • InAssociatedBid string
  • InAssociatedOrder string
  • InCareOf string
  • InCashProvided string
  • InCashierCP integer
  • InChangeReturned string
  • InCity string
  • InCompanyAddress string
  • InCompanyCareOf string
  • InCompanyCity string
  • InCompanyCountry string
  • InCompanyEmail string
  • InCompanyName string
  • InCompanyPhoneExtention string
  • InCompanyPhoneNumber string
  • InCompanyPostalCode string
  • InCompanyWWW string
  • InCurrentDay string
  • InCustomerCP integer
  • InCustomerInterest string
  • InCustomerLanguage string
  • InCustomerNumber string
  • InCustomerSupplierCP integer
  • InCustomerSupplierNumber string
  • InDate date
  • InDateMax date
  • InDateStatement date
  • InDaysBetweenPayments string
  • InDepositIsPresent boolean
  • InDepositPaymentMode string
  • InDescription string
  • InDueDays integer
  • InEqualPayments string
  • InExcludeInvoicingPayment string
  • InFirstPayment string
  • InHoldbackAmount number
  • InHoldbackCP integer
  • InHoldbackDate date
  • InHoldbackNumber string
  • InHoldbackPercent number
  • InHoldbackType string
  • InISOCountryCode string
  • InInvoiceNumber string
  • InInvoiceSubTotal number
  • InInvoiceTotal number
  • InInvoiceTotalCost number
  • InInvoiceType string
  • InInvoicedToCP integer
  • InInvoicedToNumber string
  • InInvoicingCP integer
  • InInvoicingNumber string
  • InInvoicingNumberPrefix string
  • InIsInvoicePrinted boolean
  • InIsPrinted boolean
  • InKeepTaxGroup string

Paiements fournisseurs /v1/supplier-payments

  • Lecture vérifiée
  • transaction
  • Objet SDK : PaymentAP

Paiements faits aux fournisseurs (chèques, virements).

GET/v1/supplier-paymentsListe paginée (cursor, limit), champs du SDK.
GET/v1/supplier-payments/{position}Une fiche par sa position.
POST/v1/supplier-paymentsCréer : { "fields": { … }, "lines": [ … ] }.
PATCH/v1/supplier-payments/{position}Modifier les champs envoyés.
DELETE/v1/supplier-payments/{position}Supprimer la fiche.
GET/v1/supplier-payments/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (16) — la liste exacte vient de /schema
  • PLAmount number
  • PLAmountTemp string
  • PLDate date
  • PLDiscount string
  • PLDiscountTemp string
  • PLFlags string
  • PLInvoiceAPCP integer
  • PLInvoiceAPUnique integer
  • PLInvoiceNumber string
  • PLInvoiceType string
  • PLPayable string
  • PLPaymentAPCP integer
  • PLPaymentAPUnique integer
  • PLStatus string
  • PLTimeModified date
  • PLUnique integer

Lignes de paiement fournisseurs /v1/supplier-payment-lines

  • Lecture vérifiée
  • fiche
  • Objet SDK : PaymentAPLine

Lignes des paiements fournisseurs (factures payées).

GET/v1/supplier-payment-linesListe paginée (cursor, limit), champs du SDK.
GET/v1/supplier-payment-lines/{position}Une fiche par sa position.
POST/v1/supplier-payment-linesCréer : { "fields": { … } }.
PATCH/v1/supplier-payment-lines/{position}Modifier les champs envoyés.
DELETE/v1/supplier-payment-lines/{position}Supprimer la fiche.
GET/v1/supplier-payment-lines/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Termes de paiement fournisseurs /v1/supplier-payment-terms

  • Lecture vérifiée
  • fiche
  • Objet SDK : PaymentTermAP

Conditions de paiement des fournisseurs.

GET/v1/supplier-payment-termsListe paginée (cursor, limit), champs du SDK.
GET/v1/supplier-payment-terms/{position}Une fiche par sa position.
POST/v1/supplier-payment-termsCréer : { "fields": { … } }.
PATCH/v1/supplier-payment-terms/{position}Modifier les champs envoyés.
DELETE/v1/supplier-payment-terms/{position}Supprimer la fiche.
GET/v1/supplier-payment-terms/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Comptes à payer /v1/payables

  • Lecture vérifiée
  • vue
  • Objet SDK : Payables

Paramètres des comptes payables.

GET/v1/payablesListe paginée (cursor, limit), champs du SDK.
GET/v1/payables/{position}Une fiche par sa position.
GET/v1/payables/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Facturation 2

Factures, commandes et soumissions /v1/sales-documents

  • Lecture vérifiée
  • transaction
  • Objet SDK : Invoicing

Documents du module Facturation (factures, commandes, soumissions) : en-têtes.

GET/v1/sales-documentsListe paginée (cursor, limit), champs du SDK.
GET/v1/sales-documents/{position}Une fiche par sa position.
POST/v1/sales-documentsCréer : { "fields": { … }, "lines": [ … ] }.
PATCH/v1/sales-documents/{position}Modifier les champs envoyés.
DELETE/v1/sales-documents/{position}Supprimer la fiche.
GET/v1/sales-documents/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (60) — la liste exacte vient de /schema
  • TrAPCHQIdentifier string
  • TrAPTaxAmount number
  • TrAuthorized string
  • TrAuthorizerCounsellorCP integer
  • TrAuthorizerCounsellorNumber string
  • TrAuthorizerUserCP integer
  • TrAuthorizerUserNumber string
  • TrBeginTime date
  • TrBypassPrinting string
  • TrCoefficient number
  • TrContactPersonName string
  • TrCost number
  • TrCounsellorCP integer
  • TrCounsellorCostStatus string
  • TrCounsellorName string
  • TrCounsellorNumber string
  • TrCounsellorPriceLevel string
  • TrCustomerCP integer
  • TrCustomerNumber string
  • TrDate date
  • TrEmployeCP integer
  • TrEmployeNumber string
  • TrFunctionReferenceNumber string
  • TrHoldbackInvoicingCP integer
  • TrHoldbackInvoicingNumber string
  • TrInvoiceAPWIPCP integer
  • TrInvoiceAPWIPNumber string
  • TrInvoiceProject string
  • TrInvoiceProjectTotalAmount number
  • TrInvoicedPrice number
  • TrInvoicedQty number
  • TrInvoicedTime date
  • TrInvoicedTotalAmount number
  • TrInvoicingCP integer
  • TrInvoicingLineCP integer
  • TrInvoicingNumber string
  • TrLeftoverQtyReported string
  • TrMandateCP date
  • TrMandateNumber date
  • TrMemo string
  • TrMemoText string
  • TrNumber string
  • TrOverInvoicing string
  • TrParentNumber string
  • TrPayLineNumber string
  • TrPayTransfertNumber string
  • TrPayableOffset string
  • TrPricesOrigin string
  • TrProductCP integer
  • TrProductGroupCP integer
  • TrProductGroupNumber string
  • TrProductNumber string
  • TrProductPriceType string
  • TrProductTrailCP integer
  • TrProductType string
  • TrProjectCP integer
  • TrProjectNumber string
  • TrPurchaseCP integer
  • TrPurchaseNumber string
  • TrPurchaseReceivableOffset string

Lignes de facturation /v1/sales-document-lines

  • Lecture vérifiée
  • fiche
  • Objet SDK : InvoicingLine

Lignes de produits des documents de facturation.

GET/v1/sales-document-linesListe paginée (cursor, limit), champs du SDK.
GET/v1/sales-document-lines/{position}Une fiche par sa position.
POST/v1/sales-document-linesCréer : { "fields": { … } }.
PATCH/v1/sales-document-lines/{position}Modifier les champs envoyés.
DELETE/v1/sales-document-lines/{position}Supprimer la fiche.
GET/v1/sales-document-lines/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (60) — la liste exacte vient de /schema
  • ILActualTaxRate number
  • ILAlreadyInvQty number
  • ILAlreadyInvoiced string
  • ILArchived boolean
  • ILBypassPrinting string
  • ILCBOQty number
  • ILCCalendarYear string
  • ILCChGIFI string
  • ILCCharter string
  • ILCCharterCateg string
  • ILCCity string
  • ILCCost number
  • ILCCountry string
  • ILCCustomer string
  • ILCCustomerNumber string
  • ILCCustomerSortKey string
  • ILCDate date
  • ILCDay string
  • ILCDescription string
  • ILCFiscalMonth string
  • ILCHour string
  • ILCInvoiceType string
  • ILCInvoicedToNumber string
  • ILCLanguage string
  • ILCLocation string
  • ILCLongUnitCode string
  • ILCMonth string
  • ILCPostalCode string
  • ILCProductGroup string
  • ILCProductGroupNo string
  • ILCProductNumber string
  • ILCProfit string
  • ILCProject string
  • ILCProjectNumber string
  • ILCQty number
  • ILCQuarter string
  • ILCReceivable number
  • ILCSalesRep string
  • ILCSequence string
  • ILCShipCity string
  • ILCShipCountry string
  • ILCShipPostalCode string
  • ILCShippingNumber string
  • ILCSupplier string
  • ILCTerm string
  • ILCTerritory string
  • ILCTotalAmount number
  • ILCTransactionType string
  • ILCType string
  • ILCUPC string
  • ILCUnitCode string
  • ILCUser string
  • ILCYear string
  • ILCharterCP integer
  • ILCharterNumber string
  • ILCost number
  • ILCustomerSupplierCP integer
  • ILCustomerSupplierNumber string
  • ILDate date
  • ILDepositPresent string

Inventaire 10

Produits /v1/products

  • Lecture et écriture vérifiées
  • fiche routes métier
  • Objet SDK : Product
  • Numéro : PrNumber

Fiches produits : description, prix, coûts, emplacement, quantités. Routes métier à champs normalisés.

GET/v1/productsListe paginée, champs normalisés. Détails
GET/v1/products/{number}Fiche par son numéro, champs normalisés. Détails
POST/v1/productsCréer une fiche (champs normalisés). Détails
PATCH/v1/products/{number}Modifier les champs envoyés. Détails
DELETE/v1/products/{number}Supprimer la fiche. Détails
GET/v1/products/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Groupes de produits /v1/product-groups

  • Lecture vérifiée
  • fiche
  • Objet SDK : ProductGroup

Groupes de produits.

GET/v1/product-groupsListe paginée (cursor, limit), champs du SDK.
GET/v1/product-groups/{position}Une fiche par sa position.
POST/v1/product-groupsCréer : { "fields": { … } }.
PATCH/v1/product-groups/{position}Modifier les champs envoyés.
DELETE/v1/product-groups/{position}Supprimer la fiche.
GET/v1/product-groups/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Items de produits (entrepôts) /v1/product-items

  • Aucune fiche
  • fiche
  • Objet SDK : ProductItem

Articles (variantes) de produits.

GET/v1/product-itemsListe paginée (cursor, limit), champs du SDK.
GET/v1/product-items/{position}Une fiche par sa position.
POST/v1/product-itemsCréer : { "fields": { … } }.
PATCH/v1/product-items/{position}Modifier les champs envoyés.
DELETE/v1/product-items/{position}Supprimer la fiche.
GET/v1/product-items/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (29) — la liste exacte vient de /schema
  • PIActive boolean
  • PIActualTaxRate number
  • PIAvailableQty number
  • PIAverageCost number
  • PICategory string
  • PIDefaultPrice number
  • PIDescriptor string
  • PIGaleryModified string
  • PIItemCategsCP integer
  • PILastCost number
  • PILocation string
  • PIMaximumQty number
  • PIProductCP integer
  • PIProductNumber string
  • PIQtyBidded string
  • PIQtyForPrice number
  • PIQtyOnHand string
  • PIQtyOrdered string
  • PIQtyPurchasing string
  • PIQtyReserved string
  • PIQuantityPrice number
  • PIReorderPoint string
  • PISellingPrice number
  • PIStatus string
  • PITaxesIncluded boolean
  • PITimeModified date
  • PIUPC string
  • PIUnique integer
  • PIUsed boolean

Fournisseurs de produits /v1/product-suppliers

  • Aucune fiche
  • fiche
  • Objet SDK : ProductSupplier

Fournisseurs d’un produit (numéro de pièce, coût).

GET/v1/product-suppliersListe paginée (cursor, limit), champs du SDK.
GET/v1/product-suppliers/{position}Une fiche par sa position.
POST/v1/product-suppliersCréer : { "fields": { … } }.
PATCH/v1/product-suppliers/{position}Modifier les champs envoyés.
DELETE/v1/product-suppliers/{position}Supprimer la fiche.
GET/v1/product-suppliers/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (48) — la liste exacte vient de /schema
  • PSBoAllowed boolean
  • PSCatalogNumber string
  • PSDelay string
  • PSDescription string
  • PSDiscountQty number
  • PSInvoiceCP integer
  • PSInvoiceNumber string
  • PSLongUnitCode string
  • PSNextCost number
  • PSNumber string
  • PSProductCP integer
  • PSProductNumber string
  • PSPurchaseCP integer
  • PSPurchaseNumber string
  • PSQtyPurchasing string
  • PSSerialType string
  • PSStatus string
  • PSSupplierCP integer
  • PSSupplierNumber string
  • PSTCashOutCharterCP integer
  • PSTCashOutCharterNumber string
  • PSTCashOutCharterUsed boolean
  • PSTCashOutNumber string
  • PSTDefaultCustomerCP integer
  • PSTDefaultCustomerNumber string
  • PSTDiscountProductCP integer
  • PSTDiscountProductNumber string
  • PSTInvoiceDistinctLine string
  • PSTIsActive boolean
  • PSTPaidOutNumber boolean
  • PSTPaidOutTaxGroupCP boolean
  • PSTPaidOutTaxGroupNumber boolean
  • PSTPaidOutTypesActive boolean
  • PSTPaidOutTypesCharterCP boolean
  • PSTPaidOutTypesCharterNumber boolean
  • PSTPaidOutTypesCharterUsed boolean
  • PSTPaidOutTypesDefined boolean
  • PSTPaidOutTypesDescription boolean
  • PSTPaidOutTypesTaxExceptionCP boolean
  • PSTPaidOutTypesTaxExceptionNumber boolean
  • PSTPaidOutTypesUsed boolean
  • PSTPrintCashOutSlip string
  • PSTPrintPaidOutSlip boolean
  • PSTimeModified date
  • PSUPC string
  • PSUnique integer
  • PSUnitCode string
  • PSUsed boolean

Numéros de série /v1/product-serials

  • Aucune fiche
  • fiche
  • Objet SDK : ProductSerial

Numéros de série.

GET/v1/product-serialsListe paginée (cursor, limit), champs du SDK.
GET/v1/product-serials/{position}Une fiche par sa position.
POST/v1/product-serialsCréer : { "fields": { … } }.
PATCH/v1/product-serials/{position}Modifier les champs envoyés.
DELETE/v1/product-serials/{position}Supprimer la fiche.
GET/v1/product-serials/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Mouvements d'inventaire /v1/product-trails

  • Lecture vérifiée
  • vue
  • Objet SDK : ProductTrail

Historique des mouvements d’inventaire (achats, ventes, ajustements).

GET/v1/product-trailsListe paginée (cursor, limit), champs du SDK.
GET/v1/product-trails/{position}Une fiche par sa position.
GET/v1/product-trails/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (51) — la liste exacte vient de /schema
  • PTCalendarYear string
  • PTComment string
  • PTCost number
  • PTDate date
  • PTDay string
  • PTDaysBetweenPayments string
  • PTDescription string
  • PTDueDays integer
  • PTEqualPayments string
  • PTFirstPayment string
  • PTFiscalMonth string
  • PTInvoiceNumber string
  • PTInvoicingCP integer
  • PTInvoicingUnique integer
  • PTLocation string
  • PTLongUnitCode string
  • PTMonth string
  • PTNumber string
  • PTNumberOfDays integer
  • PTNumberOfPayments string
  • PTNumberOfSchedules string
  • PTPercent number
  • PTPeriodicity string
  • PTPriceList string
  • PTProductCP integer
  • PTProductGroup string
  • PTProductGroupNo string
  • PTProductItemCP integer
  • PTProductItemCategory string
  • PTProductItemDescriptor string
  • PTProductNumber string
  • PTProductSupplierCP integer
  • PTQuantity string
  • PTQuantityForSale string
  • PTQuarter string
  • PTScheduleDate date
  • PTSchedulePercent number
  • PTSellingPrice number
  • PTSequence string
  • PTStatus string
  • PTSupplier string
  • PTTimeModified date
  • PTTotalCost number
  • PTTotalSellingPrice number
  • PTTraceType string
  • PTType string
  • PTUPC string
  • PTUnique integer
  • PTUnitCode string
  • PTUsed boolean
  • PTYear string

Composantes (ensembles) /v1/components

  • Aucune fiche
  • fiche
  • Objet SDK : Components

Composantes (nomenclature, produits assemblés).

GET/v1/componentsListe paginée (cursor, limit), champs du SDK.
GET/v1/components/{position}Une fiche par sa position.
POST/v1/componentsCréer : { "fields": { … } }.
PATCH/v1/components/{position}Modifier les champs envoyés.
DELETE/v1/components/{position}Supprimer la fiche.
GET/v1/components/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (47) — la liste exacte vient de /schema
  • CoAmount number
  • CoCellphoneNumber string
  • CoChildProductCP integer
  • CoChildProductNumber string
  • CoComment string
  • CoConfirmation string
  • CoCostPrice number
  • CoCurrentDay string
  • CoDate date
  • CoEmployeCP integer
  • CoEmployeNumber string
  • CoIncludedInPrice boolean
  • CoIsAssociate boolean
  • CoIsCounsellor boolean
  • CoLastTransactionNumber string
  • CoLinkedUserCP integer
  • CoLinkedUserNumber string
  • CoMasterProductCP integer
  • CoMasterProductNumber string
  • CoMemo string
  • CoMemoText string
  • CoName string
  • CoNumber string
  • CoPSTQtyAuto string
  • CoPaidOutCP boolean
  • CoPaidOutNumber boolean
  • CoPhoneLength string
  • CoPhoneMask string
  • CoPriceLevel string
  • CoPrintIt string
  • CoProductGroupCP integer
  • CoProductGroupNumber string
  • CoQuantity string
  • CoSalaryType string
  • CoSelected string
  • CoSellingPrice number
  • CoStatus string
  • CoTimeModified date
  • CoTransactionPrefix string
  • CoUnique integer
  • CoUsed boolean
  • CoUserCP integer
  • CoUserNumber string
  • CoUserUnique integer
  • CoWorkHourPerDay string
  • CoZipLength string
  • CoZipMask string

Catégories /v1/categories

  • Aucune fiche
  • fiche
  • Objet SDK : Category

Catégories.

GET/v1/categoriesListe paginée (cursor, limit), champs du SDK.
GET/v1/categories/{position}Une fiche par sa position.
POST/v1/categoriesCréer : { "fields": { … } }.
PATCH/v1/categories/{position}Modifier les champs envoyés.
DELETE/v1/categories/{position}Supprimer la fiche.
GET/v1/categories/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Éléments de catégorie /v1/category-items

  • Aucune fiche
  • fiche
  • Objet SDK : CategoryItem

Éléments de catégories.

GET/v1/category-itemsListe paginée (cursor, limit), champs du SDK.
GET/v1/category-items/{position}Une fiche par sa position.
POST/v1/category-itemsCréer : { "fields": { … } }.
PATCH/v1/category-items/{position}Modifier les champs envoyés.
DELETE/v1/category-items/{position}Supprimer la fiche.
GET/v1/category-items/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Segments /v1/segments

  • Aucune fiche
  • fiche
  • Objet SDK : Segment

Segments.

GET/v1/segmentsListe paginée (cursor, limit), champs du SDK.
GET/v1/segments/{position}Une fiche par sa position.
POST/v1/segmentsCréer : { "fields": { … } }.
PATCH/v1/segments/{position}Modifier les champs envoyés.
DELETE/v1/segments/{position}Supprimer la fiche.
GET/v1/segments/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Taxes 5

Taxes /v1/taxes

  • Lecture vérifiée
  • fiche
  • Objet SDK : Tax
  • Numéro : TaNumber

Taxes (TPS, TVQ, TVH…).

GET/v1/taxesListe paginée (cursor, limit), champs du SDK.
GET/v1/taxes/{position}Une fiche par sa position.
GET/v1/taxes/{numéro}?by=numberUne fiche par son numéro (TaNumber).
POST/v1/taxesCréer : { "fields": { … } }.
PATCH/v1/taxes/{position}Modifier les champs envoyés.
DELETE/v1/taxes/{position}Supprimer la fiche.
GET/v1/taxes/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (23) — la liste exacte vient de /schema
  • TaAbbreviation string
  • TaClaimableTaxesCharterCP integer
  • TaClaimableTaxesCharterNumber string
  • TaCollectedTaxesCharterCP integer
  • TaCollectedTaxesCharterNumber string
  • TaCompleteTaxRate number
  • TaCreditAccounts string
  • TaDescription string
  • TaNumber string
  • TaOtherAbbreviation string
  • TaPurchaseAccounts string
  • TaSalesAccounts string
  • TaStatus string
  • TaTaxCredit string
  • TaTaxNumber string
  • TaTaxRate number
  • TaTaxRateCredit string
  • TaTaxRateDescription string
  • TaTaxRateMaximumAmount number
  • TaTaxRateMinimumAmount number
  • TaTimeModified date
  • TaUnique integer
  • TaUsed boolean

Groupes de taxes /v1/tax-groups

  • Lecture vérifiée
  • fiche
  • Objet SDK : TaxGroup
  • Numéro : TGNumber

Groupes de taxes appliqués aux clients et produits.

GET/v1/tax-groupsListe paginée (cursor, limit), champs du SDK.
GET/v1/tax-groups/{position}Une fiche par sa position.
GET/v1/tax-groups/{numéro}?by=numberUne fiche par son numéro (TGNumber).
POST/v1/tax-groupsCréer : { "fields": { … } }.
PATCH/v1/tax-groups/{position}Modifier les champs envoyés.
DELETE/v1/tax-groups/{position}Supprimer la fiche.
GET/v1/tax-groups/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (18) — la liste exacte vient de /schema
  • TGCheckGLUsed boolean
  • TGClaimableTaxesCharterCP integer
  • TGClaimableTaxesCharterNumber string
  • TGCollectedTaxesCharterCP integer
  • TGCollectedTaxesCharterNumber string
  • TGDefaultTaxRate number
  • TGDescription string
  • TGFixedAmount number
  • TGNumPosts integer
  • TGNumber string
  • TGShortCut string
  • TGStatus string
  • TGTaxCP integer
  • TGTaxNumber string
  • TGTaxType string
  • TGTimeModified date
  • TGUnique integer
  • TGUsed boolean

Exceptions de taxes /v1/tax-exceptions

  • Aucune fiche
  • fiche
  • Objet SDK : TaxException

Exceptions de taxes.

GET/v1/tax-exceptionsListe paginée (cursor, limit), champs du SDK.
GET/v1/tax-exceptions/{position}Une fiche par sa position.
POST/v1/tax-exceptionsCréer : { "fields": { … } }.
PATCH/v1/tax-exceptions/{position}Modifier les champs envoyés.
DELETE/v1/tax-exceptions/{position}Supprimer la fiche.
GET/v1/tax-exceptions/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Déboursés /v1/paid-outs

  • Module requis
  • fiche
  • Objet SDK : PaidOut
  • Numéro : PoNumber

Sorties de caisse (point de vente).

GET/v1/paid-outsListe paginée (cursor, limit), champs du SDK.
GET/v1/paid-outs/{position}Une fiche par sa position.
GET/v1/paid-outs/{numéro}?by=numberUne fiche par son numéro (PoNumber).
POST/v1/paid-outsCréer : { "fields": { … } }.
PATCH/v1/paid-outs/{position}Modifier les champs envoyés.
DELETE/v1/paid-outs/{position}Supprimer la fiche.
GET/v1/paid-outs/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (21) — la liste exacte vient de /schema
  • PoCashOutCP integer
  • PoCashOutNumber string
  • PoComment string
  • PoCurrentDay string
  • PoDate date
  • PoNumber string
  • PoReference string
  • PoStatus string
  • PoSubTotal number
  • PoTaxAmount number
  • PoTaxCP integer
  • PoTaxCharterCP integer
  • PoTaxCharterNumber string
  • PoTaxNumber string
  • PoTimeModified date
  • PoTotal number
  • PoType string
  • PoUnique integer
  • PoUsed boolean
  • PoUserCP integer
  • PoUserNumber string

Sorties de caisse /v1/cash-outs

  • Module requis
  • fiche
  • Objet SDK : CashOut

Fermetures de caisse (point de vente).

GET/v1/cash-outsListe paginée (cursor, limit), champs du SDK.
GET/v1/cash-outs/{position}Une fiche par sa position.
POST/v1/cash-outsCréer : { "fields": { … } }.
PATCH/v1/cash-outs/{position}Modifier les champs envoyés.
DELETE/v1/cash-outs/{position}Supprimer la fiche.
GET/v1/cash-outs/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Projets 11

Projets /v1/projects

  • Lecture vérifiée
  • fiche
  • Objet SDK : Project

Projets.

GET/v1/projectsListe paginée (cursor, limit), champs du SDK.
GET/v1/projects/{position}Une fiche par sa position.
POST/v1/projectsCréer : { "fields": { … } }.
PATCH/v1/projects/{position}Modifier les champs envoyés.
DELETE/v1/projects/{position}Supprimer la fiche.
GET/v1/projects/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Soldes de projets /v1/project-balances

  • Lecture vérifiée
  • vue
  • Objet SDK : ProjectBalances

Soldes des projets.

GET/v1/project-balancesListe paginée (cursor, limit), champs du SDK.
GET/v1/project-balances/{position}Une fiche par sa position.
GET/v1/project-balances/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (13) — la liste exacte vient de /schema
  • PBAmount number
  • PBBalances string
  • PBBatchJournalCP integer
  • PBBatchJournalUnique integer
  • PBCategory string
  • PBCharterCP integer
  • PBCharterNumber string
  • PBDescription string
  • PBProjectCP integer
  • PBProjectNumber string
  • PBStatus string
  • PBTimeModified date
  • PBUnique integer

Mandats (travaux en cours) /v1/mandates

  • Module requis
  • fiche
  • Objet SDK : MandateWIP

Mandats (module Projets).

GET/v1/mandatesListe paginée (cursor, limit), champs du SDK.
GET/v1/mandates/{position}Une fiche par sa position.
POST/v1/mandatesCréer : { "fields": { … } }.
PATCH/v1/mandates/{position}Modifier les champs envoyés.
DELETE/v1/mandates/{position}Supprimer la fiche.
GET/v1/mandates/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (33) — la liste exacte vient de /schema
  • MdBond string
  • MdCCQContract string
  • MdCSSTReportUseCounsellor string
  • MdCSSTReportUseProduct string
  • MdClosingDate date
  • MdCoefficient number
  • MdCounsellorAssociateCP integer
  • MdCounsellorAssociateNumber string
  • MdCustomerCP integer
  • MdCustomerInvoicedToCP integer
  • MdCustomerInvoicedToNumber string
  • MdCustomerNumber string
  • MdDeliveryDate date
  • MdDistributionPercentage number
  • MdEmail string
  • MdEquitableDistribution string
  • MdHoldbackPercentage number
  • MdInvitationCategory string
  • MdMemo string
  • MdMemoText string
  • MdNumber string
  • MdProductGroupCP integer
  • MdProductGroupNumber string
  • MdProjectCP integer
  • MdProjectNumber string
  • MdReceivable number
  • MdSitePhoneNumber string
  • MdStartDate date
  • MdState string
  • MdStatus string
  • MdSubNumber string
  • MdTimeModified date
  • MdUserUnique integer

Budgets (travaux en cours) /v1/budgets

  • Module requis
  • fiche
  • Objet SDK : BudgetWIP

Budgets (module Projets).

GET/v1/budgetsListe paginée (cursor, limit), champs du SDK.
GET/v1/budgets/{position}Une fiche par sa position.
POST/v1/budgetsCréer : { "fields": { … } }.
PATCH/v1/budgets/{position}Modifier les champs envoyés.
DELETE/v1/budgets/{position}Supprimer la fiche.
GET/v1/budgets/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Lignes de budget /v1/budget-lines

  • Module requis
  • fiche
  • Objet SDK : BudgetLineWIP

Lignes de budgets.

GET/v1/budget-linesListe paginée (cursor, limit), champs du SDK.
GET/v1/budget-lines/{position}Une fiche par sa position.
POST/v1/budget-linesCréer : { "fields": { … } }.
PATCH/v1/budget-lines/{position}Modifier les champs envoyés.
DELETE/v1/budget-lines/{position}Supprimer la fiche.
GET/v1/budget-lines/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Conseillers /v1/counsellors

  • Module requis
  • fiche
  • Objet SDK : CounsellorWIP

Conseillers (module Projets).

GET/v1/counsellorsListe paginée (cursor, limit), champs du SDK.
GET/v1/counsellors/{position}Une fiche par sa position.
POST/v1/counsellorsCréer : { "fields": { … } }.
PATCH/v1/counsellors/{position}Modifier les champs envoyés.
DELETE/v1/counsellors/{position}Supprimer la fiche.
GET/v1/counsellors/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Clients (travaux en cours) /v1/customers-wip

  • Module requis
  • fiche
  • Objet SDK : CustomerWIP

Clients du module Projets.

GET/v1/customers-wipListe paginée (cursor, limit), champs du SDK.
GET/v1/customers-wip/{position}Une fiche par sa position.
POST/v1/customers-wipCréer : { "fields": { … } }.
PATCH/v1/customers-wip/{position}Modifier les champs envoyés.
DELETE/v1/customers-wip/{position}Supprimer la fiche.
GET/v1/customers-wip/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Fournisseurs (travaux en cours) /v1/suppliers-wip

  • Lecture vérifiée
  • fiche
  • Objet SDK : SupplierWIP

Fournisseurs vus par le module Projets.

GET/v1/suppliers-wipListe paginée (cursor, limit), champs du SDK.
GET/v1/suppliers-wip/{position}Une fiche par sa position.
POST/v1/suppliers-wipCréer : { "fields": { … } }.
PATCH/v1/suppliers-wip/{position}Modifier les champs envoyés.
DELETE/v1/suppliers-wip/{position}Supprimer la fiche.
GET/v1/suppliers-wip/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Factures clients (travaux en cours) /v1/invoices-ar-wip

  • Module requis
  • vue
  • Objet SDK : InvoiceARWIP

Factures clients du module Projets.

GET/v1/invoices-ar-wipListe paginée (cursor, limit), champs du SDK.
GET/v1/invoices-ar-wip/{position}Une fiche par sa position.
GET/v1/invoices-ar-wip/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Factures de projets /v1/invoices-project-wip

  • Module requis
  • vue
  • Objet SDK : InvoiceProjectWIP

Facturation de projets.

GET/v1/invoices-project-wipListe paginée (cursor, limit), champs du SDK.
GET/v1/invoices-project-wip/{position}Une fiche par sa position.
GET/v1/invoices-project-wip/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Transactions (travaux en cours) /v1/transactions-wip

  • Module requis
  • transaction
  • Objet SDK : TransactionWIP

Transactions du module Projets.

GET/v1/transactions-wipListe paginée (cursor, limit), champs du SDK.
GET/v1/transactions-wip/{position}Une fiche par sa position.
POST/v1/transactions-wipCréer : { "fields": { … }, "lines": [ … ] }.
PATCH/v1/transactions-wip/{position}Modifier les champs envoyés.
DELETE/v1/transactions-wip/{position}Supprimer la fiche.
GET/v1/transactions-wip/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Paie 10

Employés /v1/employees

  • Aucune fiche
  • fiche
  • Objet SDK : Employee
  • Numéro : EmNumber

Employés.

GET/v1/employeesListe paginée (cursor, limit), champs du SDK.
GET/v1/employees/{position}Une fiche par sa position.
GET/v1/employees/{numéro}?by=numberUne fiche par son numéro (EmNumber).
POST/v1/employeesCréer : { "fields": { … } }.
PATCH/v1/employees/{position}Modifier les champs envoyés.
DELETE/v1/employees/{position}Supprimer la fiche.
GET/v1/employees/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (56) — la liste exacte vient de /schema
  • EmAccountNumber string
  • EmActive boolean
  • EmActiveFunctions boolean
  • EmAddress string
  • EmArchived boolean
  • EmArrivalDate date
  • EmBirthdate date
  • EmBranchNumber string
  • EmCity string
  • EmCumulativeAmounts string
  • EmDepartureDate date
  • EmEICalculationMethod string
  • EmEMail string
  • EmEMailDescription string
  • EmFirstName string
  • EmFunctionsCP integer
  • EmGender string
  • EmHRHoursPerDay string
  • EmHRHoursPerDayIndex string
  • EmHiringDate date
  • EmISOCountryCode string
  • EmInstitutionNumber string
  • EmLSIFReference string
  • EmLaborSponseredFund string
  • EmLanguage string
  • EmMaritalStatus string
  • EmName string
  • EmNumber string
  • EmPaymentMode string
  • EmPhoneDescription string
  • EmPhoneExtention string
  • EmPhoneNumber string
  • EmPostalCode string
  • EmPrintStubIfDirectDeposit string
  • EmProvince string
  • EmQPIPCalculationMethod string
  • EmRRSPContribution string
  • EmSIN string
  • EmSPActive boolean
  • EmSPAmountPerPay string
  • EmSPCalculationMode string
  • EmSPEffectiveDate date
  • EmSPFileNumber string
  • EmSPPercentageOfPay string
  • EmShowCommentInTransactions string
  • EmSortKey string
  • EmStatus string
  • EmTimeModified date
  • EmTotalFunctions string
  • EmUnique integer
  • EmUseFederalTableForPersonalExemption string
  • EmUseProvincialTableForPersonalExemption string
  • EmUsed boolean
  • EmVacationDate date
  • EmWebAddress string
  • EmYFactor string

Groupes d'employés /v1/employee-groups

  • Aucune fiche
  • fiche
  • Objet SDK : EmployeeGroup
  • Numéro : EGNumber

Groupes d’employés.

GET/v1/employee-groupsListe paginée (cursor, limit), champs du SDK.
GET/v1/employee-groups/{position}Une fiche par sa position.
GET/v1/employee-groups/{numéro}?by=numberUne fiche par son numéro (EGNumber).
POST/v1/employee-groupsCréer : { "fields": { … } }.
PATCH/v1/employee-groups/{position}Modifier les champs envoyés.
DELETE/v1/employee-groups/{position}Supprimer la fiche.
GET/v1/employee-groups/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (8) — la liste exacte vient de /schema
  • EGDescription string
  • EGEmployeeIncluded boolean
  • EGEmployeeIncludedCP boolean
  • EGNumber string
  • EGStatus string
  • EGTimeModified date
  • EGUnique integer
  • EGUsed boolean

Départements /v1/departments

  • Aucune fiche
  • fiche
  • Objet SDK : Department

Départements.

GET/v1/departmentsListe paginée (cursor, limit), champs du SDK.
GET/v1/departments/{position}Une fiche par sa position.
POST/v1/departmentsCréer : { "fields": { … } }.
PATCH/v1/departments/{position}Modifier les champs envoyés.
DELETE/v1/departments/{position}Supprimer la fiche.
GET/v1/departments/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Fonctions /v1/functions

  • Aucune fiche
  • fiche
  • Objet SDK : Function

Fonctions (postes).

GET/v1/functionsListe paginée (cursor, limit), champs du SDK.
GET/v1/functions/{position}Une fiche par sa position.
POST/v1/functionsCréer : { "fields": { … } }.
PATCH/v1/functions/{position}Modifier les champs envoyés.
DELETE/v1/functions/{position}Supprimer la fiche.
GET/v1/functions/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (28) — la liste exacte vient de /schema
  • FnActive boolean
  • FnAllocatedTipsIndex string
  • FnAllocatedTipsRate number
  • FnArrivalDate date
  • FnCCQRateDate date
  • FnComments string
  • FnCumulativeAmounts string
  • FnDepartmentCP integer
  • FnDepartmentNumber string
  • FnDepartureDate date
  • FnDescription string
  • FnEmployeeCP integer
  • FnEmployeeNumber string
  • FnFSSExemptionRate number
  • FnLocal string
  • FnOrder string
  • FnPayrollEntry string
  • FnProjectCP integer
  • FnProjectNumber string
  • FnReference string
  • FnRegion string
  • FnSpecificUnion string
  • FnStatus string
  • FnTimeModified date
  • FnUnion string
  • FnUnique integer
  • FnUsed boolean
  • FnVacationCalculationMethod string

Salaires /v1/salaries

  • Aucune fiche
  • fiche
  • Objet SDK : Salary

Salaires.

GET/v1/salariesListe paginée (cursor, limit), champs du SDK.
GET/v1/salaries/{position}Une fiche par sa position.
POST/v1/salariesCréer : { "fields": { … } }.
PATCH/v1/salaries/{position}Modifier les champs envoyés.
DELETE/v1/salaries/{position}Supprimer la fiche.
GET/v1/salaries/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (54) — la liste exacte vient de /schema
  • SaAllocatedTipsRate number
  • SaArchived boolean
  • SaBonusAmount number
  • SaCSSTProvisionCalc string
  • SaCSSTRate number
  • SaCSSTUnitCode string
  • SaCSSTUnitCodeIndex string
  • SaCumulativeAmounts string
  • SaDeclaredTipsOnSales number
  • SaDepartmentCP integer
  • SaDepartmentNumber string
  • SaEICalculationMethod string
  • SaEmployeeCP integer
  • SaEmployeeNumber string
  • SaFSSEarnings string
  • SaFedDedSpecialSinglePmts string
  • SaFedITOnSinglePmtsForm string
  • SaFedITOnSinglePmtsTable string
  • SaFedITOnSpecialPmts string
  • SaFedSinglePmts string
  • SaFunctionCP integer
  • SaFunctionDescription string
  • SaFunctionReference string
  • SaLocal string
  • SaNetSalary string
  • SaPaidHolidaysComment boolean
  • SaPayCP integer
  • SaPayUnique integer
  • SaPensionableEarnings string
  • SaPeriodNumber string
  • SaPrinted string
  • SaProvDedSpecialSinglePmts string
  • SaProvITOnSinglePmts string
  • SaProvITOnSpecialPmts string
  • SaProvSinglePmts string
  • SaQPIPEarnings string
  • SaRegion string
  • SaRemittanceMade string
  • SaSalaryCP integer
  • SaStatus string
  • SaTemporary string
  • SaTimeModified date
  • SaTipsAdjustment string
  • SaTipsPaidHoliday boolean
  • SaTipsPaidVacation boolean
  • SaTipsSalesAmount number
  • SaTransferedToGL string
  • SaUnion string
  • SaUnique integer
  • SaUsed boolean
  • SaVacationCalculationMethod string
  • SaWorkInjuryCalcModeUnit string
  • SaWorkInjuryCalcModeUsed boolean
  • SaWorkInjuryEarnings string

Transactions de paie /v1/payroll-transactions

  • Aucune fiche
  • transaction
  • Objet SDK : TransPA

Transactions de paie.

GET/v1/payroll-transactionsListe paginée (cursor, limit), champs du SDK.
GET/v1/payroll-transactions/{position}Une fiche par sa position.
POST/v1/payroll-transactionsCréer : { "fields": { … }, "lines": [ … ] }.
PATCH/v1/payroll-transactions/{position}Modifier les champs envoyés.
DELETE/v1/payroll-transactions/{position}Supprimer la fiche.
GET/v1/payroll-transactions/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Paiements de paie /v1/payroll-payments

  • Aucune fiche
  • transaction
  • Objet SDK : PaymentPA

Paiements de paie.

GET/v1/payroll-paymentsListe paginée (cursor, limit), champs du SDK.
GET/v1/payroll-payments/{position}Une fiche par sa position.
POST/v1/payroll-paymentsCréer : { "fields": { … }, "lines": [ … ] }.
PATCH/v1/payroll-payments/{position}Modifier les champs envoyés.
DELETE/v1/payroll-payments/{position}Supprimer la fiche.
GET/v1/payroll-payments/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Feuilles de temps /v1/timesheets

  • Aucune fiche
  • fiche
  • Objet SDK : TimeSheet

Feuilles de temps.

GET/v1/timesheetsListe paginée (cursor, limit), champs du SDK.
GET/v1/timesheets/{position}Une fiche par sa position.
POST/v1/timesheetsCréer : { "fields": { … } }.
PATCH/v1/timesheets/{position}Modifier les champs envoyés.
DELETE/v1/timesheets/{position}Supprimer la fiche.
GET/v1/timesheets/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (32) — la liste exacte vient de /schema
  • TSArchived boolean
  • TSComment string
  • TSEarningsLine string
  • TSEmployeeBank string
  • TSEmployeeCP integer
  • TSEmployeeNumber string
  • TSEndDate date
  • TSEndTime date
  • TSFunctionCP integer
  • TSFunctionDescription string
  • TSFunctionReference string
  • TSHRBankCP integer
  • TSHRBankNumber string
  • TSHRFormat string
  • TSHRTotal number
  • TSHRType string
  • TSHourAmount number
  • TSManualCalculation string
  • TSPayCP integer
  • TSPercent number
  • TSPeriod string
  • TSProjectCP integer
  • TSProjectNumber string
  • TSSalaryCP integer
  • TSStartDate date
  • TSStartTime date
  • TSStatus string
  • TSTimeModified date
  • TSTotalHours string
  • TSTransferedToGL string
  • TSType string
  • TSUnique integer

Banques de temps /v1/hr-banks

  • Aucune fiche
  • fiche
  • Objet SDK : HRBank

Banques d’heures (vacances, maladie).

GET/v1/hr-banksListe paginée (cursor, limit), champs du SDK.
GET/v1/hr-banks/{position}Une fiche par sa position.
POST/v1/hr-banksCréer : { "fields": { … } }.
PATCH/v1/hr-banks/{position}Modifier les champs envoyés.
DELETE/v1/hr-banks/{position}Supprimer la fiche.
GET/v1/hr-banks/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (33) — la liste exacte vient de /schema
  • HBAdmissableLines string
  • HBApplicableTo string
  • HBArchived boolean
  • HBBatchEntry string
  • HBBatchFrequency string
  • HBCondition string
  • HBDefaultValue string
  • HBDefaultValueDescription string
  • HBDescription string
  • HBEarningsLine string
  • HBExpensesCharterCP integer
  • HBExpensesCharterNumber string
  • HBExpiration string
  • HBExpirationFrequency string
  • HBFormat string
  • HBLiabilitiesCharterCP integer
  • HBLiabilitiesCharterNumber string
  • HBNegativeBalanceAllowed boolean
  • HBNextBatch string
  • HBNextExpiration string
  • HBNumber string
  • HBPayrollDebit string
  • HBPayrollEntry string
  • HBPayrollEntryType string
  • HBPayrollJournal string
  • HBReversedEntry string
  • HBStatus string
  • HBTimeModified date
  • HBUnique integer
  • HBUsed boolean
  • HBUsedByEmployee boolean
  • HBUsedByPay boolean
  • HBUsedByTimeSheet date

Soldes des banques de temps /v1/hr-bank-balances

  • Aucune fiche
  • vue
  • Objet SDK : HRBankBalances

Soldes des banques d’heures.

GET/v1/hr-bank-balancesListe paginée (cursor, limit), champs du SDK.
GET/v1/hr-bank-balances/{position}Une fiche par sa position.
GET/v1/hr-bank-balances/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

CRM 5

Adresses et contacts /v1/addresses

  • Aucune fiche
  • fiche
  • Objet SDK : Address
  • Numéro : AdNumber

Adresses et contacts.

GET/v1/addressesListe paginée (cursor, limit), champs du SDK.
GET/v1/addresses/{position}Une fiche par sa position.
GET/v1/addresses/{numéro}?by=numberUne fiche par son numéro (AdNumber).
POST/v1/addressesCréer : { "fields": { … } }.
PATCH/v1/addresses/{position}Modifier les champs envoyés.
DELETE/v1/addresses/{position}Supprimer la fiche.
GET/v1/addresses/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (20) — la liste exacte vient de /schema
  • AdAddress string
  • AdBatchEMailActive boolean
  • AdCareOf string
  • AdCity string
  • AdEMail string
  • AdEMailDescription string
  • AdISOCountryCode string
  • AdLanguage string
  • AdName string
  • AdNumber string
  • AdPhoneDescription string
  • AdPhoneExtention string
  • AdPhoneNumber string
  • AdPostalCode string
  • AdProvince string
  • AdStatus string
  • AdTimeModified date
  • AdUnique integer
  • AdUsed boolean
  • AdWebAddress string

Appels et suivis /v1/calls

  • Aucune fiche
  • fiche
  • Objet SDK : Call

Appels (CRM).

GET/v1/callsListe paginée (cursor, limit), champs du SDK.
GET/v1/calls/{position}Une fiche par sa position.
POST/v1/callsCréer : { "fields": { … } }.
PATCH/v1/calls/{position}Modifier les champs envoyés.
DELETE/v1/calls/{position}Supprimer la fiche.
GET/v1/calls/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (34) — la liste exacte vient de /schema
  • CaAttemptCallDateTime date
  • CaAttemptStatus string
  • CaAttemptUserCP integer
  • CaAttemptUserNumber string
  • CaCallCP integer
  • CaCallsSpoolerCP integer
  • CaCallsSpoolerNumber string
  • CaComments string
  • CaContactCP integer
  • CaContactName string
  • CaContactNumber string
  • CaContactType string
  • CaCreationUsFirstName string
  • CaCreationUsLastName string
  • CaCreationUsNumber string
  • CaCurUserNumber string
  • CaDateTimeOfCallFromContact date
  • CaLength string
  • CaNumber string
  • CaNumberOfAttemptsToReachContact string
  • CaNumberOfCallFromContact string
  • CaPhoneExtention string
  • CaPhoneNumber string
  • CaStatus string
  • CaTimeEntry date
  • CaTimeModified date
  • CaTimeWaiting date
  • CaUnique integer
  • CaUsed boolean
  • CaUserCP integer
  • CaUserFirstName string
  • CaUserLastName string
  • CaUserNumber string
  • CaWithoutItems string

Horaires d'appels /v1/calls-schedules

  • Lecture vérifiée
  • fiche
  • Objet SDK : CallsSchedule

Horaires d’appels.

GET/v1/calls-schedulesListe paginée (cursor, limit), champs du SDK.
GET/v1/calls-schedules/{position}Une fiche par sa position.
POST/v1/calls-schedulesCréer : { "fields": { … } }.
PATCH/v1/calls-schedules/{position}Modifier les champs envoyés.
DELETE/v1/calls-schedules/{position}Supprimer la fiche.
GET/v1/calls-schedules/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Files d'appels /v1/calls-spoolers

  • Lecture vérifiée
  • fiche
  • Objet SDK : CallsSpooler

Files d’appels.

GET/v1/calls-spoolersListe paginée (cursor, limit), champs du SDK.
GET/v1/calls-spoolers/{position}Une fiche par sa position.
POST/v1/calls-spoolersCréer : { "fields": { … } }.
PATCH/v1/calls-spoolers/{position}Modifier les champs envoyés.
DELETE/v1/calls-spoolers/{position}Supprimer la fiche.
GET/v1/calls-spoolers/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Appels traités /v1/processed-calls

  • Aucune fiche
  • vue
  • Objet SDK : ProcessedCall

Appels traités.

GET/v1/processed-callsListe paginée (cursor, limit), champs du SDK.
GET/v1/processed-calls/{position}Une fiche par sa position.
GET/v1/processed-calls/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Paramètres 12

Pays /v1/countries

  • Lecture vérifiée
  • vue
  • Objet SDK : Country

Pays.

GET/v1/countriesListe paginée (cursor, limit), champs du SDK.
GET/v1/countries/{position}Une fiche par sa position.
GET/v1/countries/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Renseignements sur l'entreprise /v1/company-information

  • Lecture et écriture vérifiées
  • paramètres
  • Objet SDK : CompanyInformation

Renseignements sur l’entreprise : nom, adresse, numéros de taxes.

GET/v1/company-informationLire les paramètres (une seule fiche).
PATCH/v1/company-informationModifier les champs envoyés : { "fields": { … } }.
GET/v1/company-information/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (53) — la liste exacte vient de /schema
  • CIAddress string
  • CIArchiveIsActive boolean
  • CIBankArchiveIsActive boolean
  • CICareOf string
  • CICategoryCP integer
  • CICategoryNumber string
  • CICity string
  • CIConfirmComponent string
  • CICostCoding string
  • CICountry string
  • CIDecimalPlacesInPrice number
  • CIDescription string
  • CIEMail string
  • CIEMailDescription string
  • CIInvActive boolean
  • CIInvAllowProductItemCreation string
  • CIInvConfirmProductItemCreation string
  • CIInvLanguage string
  • CIInvProductItemRequired boolean
  • CIInvQtySDKActive boolean
  • CIInvQtySDKDescription string
  • CILanguage string
  • CIName string
  • CINumber string
  • CIPhoneDescription string
  • CIPhoneExtention string
  • CIPhoneNumber string
  • CIPhoneTenDigitsAndMore string
  • CIPostalCode string
  • CIPriceListActive boolean
  • CIPriceListDivide string
  • CIPriceListName string
  • CIPriceListRate number
  • CIPriceListTaxGroupCP integer
  • CIPriceListUsed boolean
  • CIPriceName string
  • CIPricePercentage number
  • CIProvince string
  • CIReportArchiveIsActive boolean
  • CISegmentationActive boolean
  • CISegmentationID string
  • CISerialActive boolean
  • CIStatus string
  • CIStatusActive boolean
  • CIStatusTitle string
  • CIStockNumberLength string
  • CITaxIdLanguage string
  • CITimeModified date
  • CITransphereActive boolean
  • CIUnique integer
  • CIUniqueCieId string
  • CIUsed boolean
  • CIWWW string

Paramètres — clients /v1/settings-customers

  • Lecture et écriture vérifiées
  • paramètres
  • Objet SDK : ControlCustomer

Paramètres du module clients.

GET/v1/settings-customersLire les paramètres (une seule fiche).
PATCH/v1/settings-customersModifier les champs envoyés : { "fields": { … } }.
GET/v1/settings-customers/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Paramètres — fournisseurs /v1/settings-suppliers

  • Lecture seule
  • paramètres
  • Objet SDK : ControlSupplier

Paramètres du module fournisseurs (lecture seule).

GET/v1/settings-suppliersLire les paramètres (une seule fiche).
GET/v1/settings-suppliers/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Paramètres — grand livre /v1/settings-gl

  • Lecture seule
  • paramètres
  • Objet SDK : ControlGL

Paramètres du grand livre (lecture seule).

GET/v1/settings-glLire les paramètres (une seule fiche).
GET/v1/settings-gl/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.
Champs indicatifs (23) — la liste exacte vient de /schema
  • CGAddress string
  • CGAmount number
  • CGBankCP integer
  • CGBankNumber string
  • CGBatchJournalCP integer
  • CGBudgetTitles string
  • CGCareOf string
  • CGCity string
  • CGComments string
  • CGCurrentPeriod string
  • CGDate date
  • CGDatePrinted date
  • CGName string
  • CGNextEntryNumber string
  • CGNumber string
  • CGNumberOfPeriods string
  • CGPhone string
  • CGPostalCode string
  • CGProjectInInvoicing string
  • CGStatus string
  • CGTimeModified date
  • CGType string
  • CGUnique integer

Paramètres — inventaire /v1/settings-inventory

  • Lecture et écriture vérifiées
  • paramètres
  • Objet SDK : ControlInv

Paramètres de l’inventaire.

GET/v1/settings-inventoryLire les paramètres (une seule fiche).
PATCH/v1/settings-inventoryModifier les champs envoyés : { "fields": { … } }.
GET/v1/settings-inventory/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Paramètres — commandes /v1/settings-orders

  • Lecture et écriture vérifiées
  • paramètres
  • Objet SDK : ControlOrder

Paramètres des commandes.

GET/v1/settings-ordersLire les paramètres (une seule fiche).
PATCH/v1/settings-ordersModifier les champs envoyés : { "fields": { … } }.
GET/v1/settings-orders/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Paramètres — taxes /v1/settings-taxes

  • Lecture vérifiée
  • paramètres
  • Objet SDK : ControlPST

Paramètres des taxes (module point de vente requis pour la modification).

GET/v1/settings-taxesLire les paramètres (une seule fiche).
PATCH/v1/settings-taxesModifier les champs envoyés : { "fields": { … } }.
GET/v1/settings-taxes/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Paramètres — paie /v1/settings-payroll

  • Lecture seule
  • paramètres
  • Objet SDK : ControlPayroll

Paramètres de la paie (lecture seule).

GET/v1/settings-payrollLire les paramètres (une seule fiche).
GET/v1/settings-payroll/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Paramètres — projets /v1/settings-projects

  • Lecture vérifiée
  • paramètres
  • Objet SDK : ControlProject

Paramètres du module Projets.

GET/v1/settings-projectsLire les paramètres (une seule fiche).
PATCH/v1/settings-projectsModifier les champs envoyés : { "fields": { … } }.
GET/v1/settings-projects/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Paramètres — cartes-cadeaux /v1/settings-gift-cards

  • Lecture et écriture vérifiées
  • paramètres
  • Objet SDK : ControlGift

Paramètres des cartes-cadeaux.

GET/v1/settings-gift-cardsLire les paramètres (une seule fiche).
PATCH/v1/settings-gift-cardsModifier les champs envoyés : { "fields": { … } }.
GET/v1/settings-gift-cards/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Paramètres — CRM /v1/settings-crm

  • Lecture seule
  • paramètres
  • Objet SDK : ControlCM

Paramètres du CRM (lecture seule).

GET/v1/settings-crmLire les paramètres (une seule fiche).
GET/v1/settings-crm/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Analyses 7

Analyse des ventes par client /v1/bi-sales-by-customer

  • Module requis
  • vue
  • Objet SDK : BIInvoicingCustomer

Ventes par client (module d’analyse).

GET/v1/bi-sales-by-customerListe paginée (cursor, limit), champs du SDK.
GET/v1/bi-sales-by-customer/{position}Une fiche par sa position.
GET/v1/bi-sales-by-customer/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Analyse des lignes de vente par client /v1/bi-sales-lines-by-customer

  • Module requis
  • vue
  • Objet SDK : BIInvoicingLineCustomer

Lignes de ventes par client.

GET/v1/bi-sales-lines-by-customerListe paginée (cursor, limit), champs du SDK.
GET/v1/bi-sales-lines-by-customer/{position}Une fiche par sa position.
GET/v1/bi-sales-lines-by-customer/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Analyse des lignes d'achat /v1/bi-purchase-lines

  • Module requis
  • vue
  • Objet SDK : BIInvoicingLinePurchase

Lignes d’achats.

GET/v1/bi-purchase-linesListe paginée (cursor, limit), champs du SDK.
GET/v1/bi-purchase-lines/{position}Une fiche par sa position.
GET/v1/bi-purchase-lines/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Analyse des produits /v1/bi-products

  • Module requis
  • vue
  • Objet SDK : BIProduct

Analyse des produits.

GET/v1/bi-productsListe paginée (cursor, limit), champs du SDK.
GET/v1/bi-products/{position}Une fiche par sa position.
GET/v1/bi-products/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Analyse des mouvements d'inventaire /v1/bi-product-trails

  • Module requis
  • vue
  • Objet SDK : BIProductTrail

Analyse des mouvements de produits.

GET/v1/bi-product-trailsListe paginée (cursor, limit), champs du SDK.
GET/v1/bi-product-trails/{position}Une fiche par sa position.
GET/v1/bi-product-trails/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Analyse des transactions clients /v1/bi-customer-transaction-lines

  • Module requis
  • vue
  • Objet SDK : BITransactionLineCustomer

Lignes de transactions clients.

GET/v1/bi-customer-transaction-linesListe paginée (cursor, limit), champs du SDK.
GET/v1/bi-customer-transaction-lines/{position}Une fiche par sa position.
GET/v1/bi-customer-transaction-lines/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

Analyse des transactions fournisseurs /v1/bi-supplier-transaction-lines

  • Module requis
  • vue
  • Objet SDK : BITransactionLineSupplier

Lignes de transactions fournisseurs.

GET/v1/bi-supplier-transaction-linesListe paginée (cursor, limit), champs du SDK.
GET/v1/bi-supplier-transaction-lines/{position}Une fiche par sa position.
GET/v1/bi-supplier-transaction-lines/schemaChamps exacts, types et droits, lus dans le SDK de votre installation.

09 Idempotence des écritures

Sur un réseau, une requête peut aboutir sans que la réponse vous parvienne. Si vous réessayez, vous ne devez pas enregistrer deux fois la même facture. Ponteo Connect l’empêche à deux niveaux.

1. La clé d’idempotence

  • Envoyez un en-tête Idempotency-Key (150 caractères au plus), par exemple un UUID, unique par facture, et renvoyez exactement la même valeur et le même corps à chaque nouvelle tentative.
  • Sans cet en-tête, la clé est dérivée du numéro de fournisseur et du numéro de facture, pour la licence.
  • Si la même Idempotency-Key revient avec un corps différent : IDEMPOTENCY_CONFLICT (422). Avec la clé dérivée (sans en-tête), un nouvel envoi pour le même fournisseur et le même numéro de facture rejoue la réponse d’origine.
  • Si la première requête est encore en cours : REQUEST_IN_PROGRESS (409) avec Retry-After: 5.
  • Seules les issues réussies sont mémorisées, pendant 30 jours, et uniquement sous forme d’identifiants (statut, fournisseur ou client, numéro de facture) : aucun contenu comptable n’est conservé. Une écriture refusée (par exemple BAD_REQUEST) peut être corrigée et renvoyée avec la même clé.

Un rejeu d’une écriture réussie renvoie le même statut HTTP et les identifiants de l’écriture d’origine (sans son détail : relisez la facture avec GET au besoin), avec l’en-tête Idempotent-Replayed: true et deux champs supplémentaires dans l’enveloppe :

Rejeu : Idempotent-Replayed: true
{
  "ok": true,
  "data": { "status": "created", "invoice": { "supplierNumber": "1000", "invoiceNumber": "F-2026-0815", "position": 1843 } },
  "requestId": "c41f7b2a-6e3d-4b09-a8f5-1d2e3c4b5a60",
  "idempotentReplay": true,
  "originalRequestId": "c41f7b2a-6e3d-4b09-a8f5-1d2e3c4b5a60"
}

2. Le logiciel comptable fait foi

Avant d’écrire, l’agent vérifie si la facture (fournisseur et numéro) existe déjà. Si c’est le cas, rien n’est réécrit et la réponse est un succès already_exists (HTTP 200), même avec une nouvelle clé.

10 Mode simulation (dryRun)

Ajoutez ?dryRun=true à POST /v1/invoices/ap, ou "dryRun": true dans le corps, pour exécuter toutes les validations sans rien écrire : format des champs, répartition, existence du fournisseur et de chaque compte. La simulation fonctionne même si les écritures sont désactivées : idéale pendant le développement d’une intégration.

Requête
curl -X POST "https://api.ponteo.ca/v1/invoices/ap?dryRun=true" \
  -H "Authorization: Bearer $PONTEO_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @facture.json
Réponse 200
{
  "ok": true,
  "data": {
    "status": "valid",
    "resolved": {
      "supplierPosition": 1,
      "lines": [
        { "account": 2110, "accountPosition": 12, "amount": 303.89,  "description": "Comptes à payer" },
        { "account": 5010, "accountPosition": 58, "amount": -264.31, "description": "Achat" },
        { "account": 2330, "accountPosition": 19, "amount": -13.22,  "description": "TPS" },
        { "account": 2340, "accountPosition": 20, "amount": -26.36,  "description": "TVQ" }
      ]
    }
  },
  "requestId": "…"
}

En cas de problème, la réponse est l’erreur qu’aurait produite l’écriture réelle, par exemple BAD_REQUEST avec ses details. Une simulation n’est pas mémorisée par l’idempotence.

11 Signature HMAC (optionnelle)

Lorsque la licence l’exige, chaque requête doit être signée en plus de l’en-tête Authorization. La signature empêche la réutilisation d’un appel intercepté ou journalisé.

En-têteValeur
X-Ponteo-TimestampHeure courante en secondes Unix, par exemple 1789560000.
X-Ponteo-SignatureSignature HMAC-SHA256 en hexadécimal, calculée comme ci-dessous.

La chaîne à signer réunit quatre éléments séparés par un saut de ligne (\n) :

METHODE + "\n" + chemin_avec_query + "\n" + timestamp + "\n" + hex(sha256(corps))

signature = hex(HMAC-SHA256(clé_de_licence, chaîne_à_signer))
  • METHODE : en majuscules (GET, POST, DELETE).
  • chemin_avec_query : le chemin tel qu’envoyé, avec la chaîne de requête, par exemple /v1/invoices/ap?dryRun=true.
  • timestamp : la même valeur que l’en-tête X-Ponteo-Timestamp.
  • hex(sha256(corps)) : empreinte SHA-256 des octets exacts du corps ; pour une requête sans corps, celle de la chaîne vide (e3b0c442…b855).

L’horodatage doit être à plus ou moins 300 secondes de l’heure du serveur : synchronisez l’horloge de vos systèmes (NTP). Une signature absente alors qu’elle est exigée, invalide ou hors délai est refusée avec SIGNATURE_INVALID (401).

PHP
<?php
$key    = getenv('PONTEO_KEY');
$method = 'POST';
$path   = '/v1/invoices/ap?dryRun=true';
$body   = file_get_contents('facture.json');
$ts     = (string) time();

$toSign    = $method . "\n" . $path . "\n" . $ts . "\n" . hash('sha256', $body);
$signature = hash_hmac('sha256', $toSign, $key);

$ch = curl_init('https://api.ponteo.ca' . $path);
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST  => $method,
    CURLOPT_POSTFIELDS     => $body,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $key,
        'Content-Type: application/json',
        'X-Ponteo-Timestamp: ' . $ts,
        'X-Ponteo-Signature: ' . $signature,
    ],
]);
$response = json_decode(curl_exec($ch), true);
Bash (openssl)
METHOD="POST"
URLPATH="/v1/invoices/ap?dryRun=true"
TS=$(date +%s)
BODY_HASH=$(openssl dgst -sha256 -hex < facture.json | awk '{print $NF}')
SIGNATURE=$(printf '%s\n%s\n%s\n%s' "$METHOD" "$URLPATH" "$TS" "$BODY_HASH" \
  | openssl dgst -sha256 -hmac "$PONTEO_KEY" -hex | awk '{print $NF}')

curl -X "$METHOD" "https://api.ponteo.ca$URLPATH" \
  -H "Authorization: Bearer $PONTEO_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Ponteo-Timestamp: $TS" \
  -H "X-Ponteo-Signature: $SIGNATURE" \
  --data-binary @facture.json

Signez le corps exactement tel qu’il est transmis : utilisez --data-binary avec curl, car -d retire les sauts de ligne d’un fichier.

12 Bonnes pratiques

  • Conservez la clé de licence dans un coffre de secrets ou une variable d’environnement côté serveur, jamais dans un dépôt de code.
  • Demandez la restriction d’adresse IP et la signature HMAC pour les licences qui permettent l’écriture.
  • Validez vos factures en mode simulation avant de passer en production, et faites vos essais d’écriture sur une copie de la compagnie.
  • Envoyez toujours une Idempotency-Key sur les écritures, et réutilisez-la lors des nouvelles tentatives.
  • Respectez Retry-After et appliquez un délai croissant entre les tentatives.
  • Pour synchroniser, préférez modifiedSince à la relecture complète, et suivez toujours nextCursor jusqu’à null.
  • Journalisez le requestId (ou l’en-tête X-Request-Id) de chaque réponse : il facilite le diagnostic avec le support.
  • En cas de fuite d’une clé, contactez-nous : la licence peut être révoquée immédiatement et une nouvelle clé émise.
↑