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/SaveSeqDataToken: your-tokenContent-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
Unchangedet 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.

