Aller au contenu

SaveSeqData

Enregistre les valeurs et les remarques d’événements et de champs de données sur des ordres de travail : par exemple la date et l’heure de l’entrée au parc d’un conteneur, ou la référence d’un client. Chaque élément est contrôlé comme si un utilisateur l’enregistrait dans l’onglet Events ou Data de l’ordre de travail, et il est enregistré ou refusé indépendamment des autres. La réponse donne le résultat de chaque élément.

Pour lire les valeurs actuelles, utilisez GetSeqData. Pour un lot important, SaveSeqDataAsync accepte les mêmes éléments, répond immédiatement et envoie les résultats à votre propre URL une fois le traitement terminé.

Comment se connecter et lire la réponse : Authentification, Réponses.

POST /api/v1/SaveSeqData
Token: your-token
Content-Type: application/json
[
{ "WOID": 48211, "Code": "GATEIN", "Value": "2026-10-20T09:30:00", "Remarks": "Gate 3" },
{ "WOID": 48211, "Code": "CUSTREF", "Value": "PO-77310" },
{ "WOID": 48212, "Code": "ETA", "Value": "TBA", "Remarks": "Vessel delayed" }
]

Le corps est un tableau JSON de 1 à 999 éléments. Chaque élément définit un événement ou un champ de données d’un ordre de travail :

Champ Obligatoire Signification
WOID Oui L’identifiant de l’ordre de travail.
Code Oui Le code de l’événement ou du champ de données, tel que l’ordre de travail l’affiche avec Show Codes. Insensible à la casse.
Value Oui La nouvelle valeur, sous forme de texte : voir Valeurs. Une chaîne vide efface le champ. Pour ne modifier que les remarques, envoyez de nouveau la valeur actuelle.
Remarks Non Les remarques. Si vous l’omettez, ou si vous envoyez une chaîne vide, les remarques du champ sont effacées.
UpdatedBy Non Le jeton de l’utilisateur TrakIT qui a fait la modification, tel que Login l’a renvoyé pour cet utilisateur. La modification est alors enregistrée au nom de cet utilisateur, et ses autorisations s’appliquent : voir Règles. Sans lui, la modification est enregistrée au nom de l’utilisateur de l’API. Si vous l’utilisez, indiquez-le sur chaque élément de la requête.

Les noms des champs ne tiennent pas compte de la casse. Les autres champs que renvoie GetSeqData (Type, FullName, ValueID, UpdatedOn) sont ignorés si vous les envoyez.

Envoyez chaque valeur sous forme de texte, dans la forme qu’exige son type :

Type Envoyez
Événement, date La date et l’heure en UTC, au format yyyy-MM-ddTHH:mm:ss ou yyyy-MM-dd HH:mm, sans suffixe de fuseau horaire ; yyyy-MM-dd seul signifie minuit. TrakIT conserve les minutes, pas les secondes. Ou NA (sans objet) ou TBA (à communiquer), si le champ les autorise. Voir Dates.
Nombre Un nombre, avec . pour les décimales. TrakIT l’arrondit à la précision décimale du champ.
Devise Un montant, avec . pour les décimales. TrakIT conserve deux décimales.
Texte N’importe quel texte ; TrakIT conserve les 800 premiers caractères. Pour un champ avec une liste d’éléments, un élément de la liste ou, pour plusieurs éléments, les éléments séparés par des sauts de ligne (\n). Le paramètre Data Option du champ s’applique, par exemple Force Upper Case.
Lien hypertexte Une adresse web, ou une adresse e-mail commençant par mailto:. TrakIT ajoute http:// à une adresse sans schéma.
Téléphone Jusqu’à 15 caractères : des chiffres, un + initial facultatif, et un indicatif régional entre parenthèses si nécessaire.
Geo Data Le nom exact ou le code exact d’un lieu du Geo Data Type du champ. Voir Geo Data. TrakIT enregistre le texte que vous envoyez : envoyez donc le nom du lieu.
Entité Le nom, le code ou le numéro d’immatriculation exact d’une entité de l’Entity Type du champ. Si aucune entité ne correspond exactement, TrakIT recherche les entités dont le nom ou le code le contient : envoyez donc une valeur qui correspond à une seule entité. TrakIT enregistre le texte que vous envoyez : envoyez le nom de l’entité tel que TrakIT l’affiche.
Calculé Ne l’envoyez pas : TrakIT détermine les valeurs calculées et les recalcule après chaque enregistrement.
Google Place Ne peut pas être défini avec l’API : un lieu doit être choisi parmi les suggestions de Google dans TrakIT.

Les types de champs sont décrits dans Définitions d’événements et de données.

TrakIT contrôle d’abord la requête dans son ensemble :

Règle Info en cas d’échec
Le corps est un tableau JSON d’éléments. No data supplied or json is malformed
Il contient 999 éléments au plus. Count of data supplied must be less than 1000

Il contrôle et enregistre ensuite chaque élément séparément, dans l’ordre d’envoi. Un élément en échec n’arrête pas les autres. Ces contrôles, dans cet ordre, donnent l’Info de l’élément dans la réponse :

Règle Info de l’élément en cas d’échec
L’ordre de travail a un événement ou un champ de données avec ce code. No Data Found
L’ordre de travail est actif ou abandonné, ni clôturé ni annulé. Cannot modify closed or cancelled Work Order
UpdatedBy, s’il est indiqué, est le jeton d’un utilisateur existant qui n’est pas verrouillé. Impersonated user token is not valid, No such user, Impersonated user ... is locked
La valeur ou les remarques diffèrent de ce qui est enregistré. Unchanged
L’utilisateur peut mettre à jour les événements et les données. Avec UpdatedBy, le rôle de cet utilisateur doit avoir Update Events & Data et, sauf si l’utilisateur est administrateur système, un accès en mise à jour au champ. Permission Denied
La valeur d’un champ unique n’est pas utilisée sur un autre ordre de travail. Value is not unique
La valeur correspond au masque du champ, si le support TrakIT en a défini un. Le message propre au masque
La valeur ne commence pas par =, + ou @ (un numéro de téléphone peut commencer par +), et ne contient pas de < suivi d’une lettre. Value contains possible html tag
Un nombre ou un montant est un nombre de 18 caractères au plus. Value must be numeric, Value too big
Un événement ou une date est une date et une heure, NA ou TBA, selon ce que le champ autorise. Un événement n’est pas antérieur à 2018, une date pas antérieure à 1900. Invalid Date/Time, 'NA' not allowed, 'TBA' not allowed, Invalid Date
Un événement se situe dans l’Allowed Offset du champ par rapport à l’heure actuelle. Allowed Offset: ... mins
Un événement se situe au plus 5 minutes dans le futur, sauf s’il est donné à titre d’information. Future Time/Date
Avec l’option Enforce Chronological Order du workflow, l’événement n’est pas antérieur à un événement précédent ni à la création de l’ordre de travail. Les événements donnés à titre d’information ne sont pas contrôlés. Chronological order
Sauf si le workflow a Ignore Event Sequence, les événements précédents de l’ordre de travail ont une valeur. Les événements donnés à titre d’information ne sont pas contrôlés. Out of sequence
Un lien hypertexte est une adresse http, https, ftp ou mailto valide. Not a hyperlink
Un lieu ou une entité est trouvé. ID is missing
Un numéro de téléphone a 15 caractères au plus, de la forme décrite plus haut. Phone number is too long, Not a phone number
Un champ avec une liste d’éléments reçoit des éléments de la liste, sans dépasser le nombre que le champ autorise. Value not from list, Value '...' not from list, Max ... items only
Sauf si le workflow a Ignore Event Sequence, un événement n’est effacé que si aucun événement suivant n’a de valeur. Empty not accepted
Un champ obligatoire n’est pas effacé. Field is mandatory
Des remarques sont indiquées si le champ en exige. Remarks are required
Les remarques ne commencent pas par =, + ou @, et ne contiennent pas de < suivi d’une lettre. Remarks contains possible html tags or disallowed text
Ce que le champ exige dans Requires a une valeur autre que TBA sur l’ordre de travail. Missing ..., Required field '...' missing.
La valeur passe l’expression de validation du champ, si le support TrakIT en a défini une. Le message propre à l’expression, ou Validation Expression Error

Les contrôles sont ceux de l’application : voir Lorsqu’une valeur n’est pas enregistrée, les paramètres des champs dans Définitions d’événements et de données et les paramètres Operations du workflow. Les validations personnalisées que le support TrakIT peut définir pour Save WO Events/Data dans Validations et actions ne s’exécutent pas pour ce point de terminaison.

Code vaut 1 si au moins un élément a été enregistré, et 0 si aucun ne l’a été. RowsAffected est le nombre d’éléments enregistrés, et RetInfo contient un résultat pour chaque élément, dans l’ordre d’envoi. Info, Identity et Scalar ne sont pas utilisés.

{
"Code": 1,
"Info": null,
"RetInfo": [
{ "WOID": 48211, "Code": "GATEIN", "Result": 1, "Info": "Success" },
{ "WOID": 48211, "Code": "CUSTREF", "Result": 0, "Info": "Unchanged" },
{ "WOID": 48212, "Code": "ETA", "Result": 0, "Info": "'TBA' not allowed" }
],
"RowsAffected": 1,
"Scalar": null,
"Identity": 0
}
Champ Signification
WOID, Code L’ordre de travail et le code de l’élément, tels qu’envoyés.
Result 1 : enregistré. 0 : non enregistré. -1 : non enregistré à cause d’une erreur inattendue.
Info Success en cas d’enregistrement ; sinon la raison, d’après les règles. Unchanged signifie que la valeur et les remarques étaient déjà enregistrées.
  • Un ordre de travail par élément. Une valeur est enregistrée sur l’ordre de travail que vous indiquez, même pour un champ qui s’applique à tout le dossier : pour la définir sur chaque ordre de travail du dossier, envoyez un élément pour chacun.
  • Ce qui suit un enregistrement. Juste après la requête, TrakIT recalcule les champs calculés de l’ordre de travail et met à jour son statut : lorsque tous ses événements et toutes ses données obligatoires ont une valeur autre que TBA, l’ordre de travail se clôture, comme dans l’application. Si l’événement est l’événement de constatation des produits et des charges du workflow, la date de constatation du dossier est mise à jour.
  • Actions. Les actions des événements et des données que vous modifiez, comme des e-mails, des messages ou des mises à jour d’autres champs, ne s’exécutent pas pendant la requête. TrakIT les exécute lors de son contrôle régulier, toutes les 30 minutes : elles peuvent donc suivre jusqu’à environ 30 minutes plus tard. Les notifications aux utilisateurs abonnés, les instructions du workflow et le suivi des retards suivent quelques minutes plus tard, comme pour une modification faite dans l’application.
  • Journal d’audit. Chaque modification est enregistrée dans le journal d’audit de l’ordre de travail, au nom de l’utilisateur de l’API ou de l’utilisateur UpdatedBy.
  • Nouvelles tentatives. Envoyer de nouveau un élément avec la même valeur et les mêmes remarques donne Unchanged et ne modifie rien : vous pouvez donc renvoyer un lot sans risque après une requête qui a expiré.
  • Lots importants. La réponse arrive une fois tous les éléments traités. Si un lot est trop lent pour votre délai d’expiration, envoyez des lots plus petits ou utilisez SaveSeqDataAsync.