Transmettre les renseignements sur le transport aérien vers le Canada : Comment transmettre les renseignements

Comment dois-je transmettre des renseignements sur l’expédition en format Cargo Interchange Message Procedures (CIMP) ou commerce eXtensible Markup Language (CXML)?

Intégration

  1. Essais initiaux

    Le ciblage du fret aérien préalable au chargement (CFAPC) fournira à chaque transporteur et tiers autorisé les renseignements nécessaires pour s’intégrer à une version d’essai de la plateforme. Une fois intégré, vous recevrez du CFAPC les renseignements pour vous intégrer à la plateforme de production.

  2. Transmission des données

    Le CFAPC utilise Azure Event Hub, un service de données, pour simplifier la transmission de données. Vous envoyez des messages à l’Event Hub au moyen d’une des trousses de développement (SDK) natives disponibles ou en vous connectant à un point de terminaison Web d’ API (Interface de programmation).

  3. Jeton d’accès

    Nous fournirons des jetons d’accès aux transporteurs et aux tiers autorisés. Lorsque vous transmettez un message, vous devez inclure le jeton. Le jeton ressemble à ceci :

    SharedAccessSignature
    sr=sb%3a%2f%2fsome_namespace.servicebus.windows.net%2fsome_event_hub%2fPublishers %2fsome_carrier&sig=XYZXYZXYZ&se=2412859455&skn=Carrier

Format du message

Pour prendre en charge les tiers qui transmettent les renseignements d’expédition au nom des transporteurs, les messages FHL et FWB devront être intégrés à un document JavaScript Object Notation (JSON) (UTF-8) qui précise le transporteur.

Nota : Le format JSON ne prend pas en charge les chaînes de caractères multilingues. Il faut indiquer les sauts de ligne dans les messages CIMP au moyen des caractères \r\n. Le format CXML ne permet pas l’utilisation de sauts de ligne.

Évitez les espaces blancs non nécessaires.

Il existe deux formats de messages qui peuvent être acceptés: CIMP et CXML.

CIMP

{ "carrierCode": "014", "payload": “FWB/9\r\n057-21727392BLLYUL/T4K712\r\n FLT/AF0749M/16/AF0342/21\r\nRTG/CDGAF/Y ULAF\r\nSHP\r\n/DSV AIR SEA A S I101\r\n/NOKIAVEJ 30\r\n/HORSENS\r\n/DK/8700/TE/454579297200\r\nCNE\r\n/DSV AIR SEA CANADA INC. I920\r\n/6700 COTE DE LIESSE SUITE 504\r\n/VILLE ST LAURENT/QC\r\n/CA/H4T 2B5/TE/15149400613\r\nAGT//1747007/2605\r\n/DSV AIR SEA A S\r\n/HORSENS DK RA 0\r\nACC/GEN/JM2765997\r\n/GEN/DSV AIR SEA CANADA INC. I920\r\n/GEN/6700 COTE DE LIESSE SUITE 504\r\n/GEN/VILLE ST LAURENT QC H4T 2B5\r\n/GEN/CANADA\r\nCVD/DKK/PP/PP/NVD/NCV/XXX\r\nRTD/1/P4/K712/CQ/W1111/R22/ T24442\r\n/NG/CONSOLIDATION AS PER\r\n/2/NG/MANIFEST\r\n/3/NV/MC6.67\r\nOTH/P/MYC6777.1\r\n/P/SCC1444.3\r\nPP D/WT24442\r\n/OC8221.4/CT32663.4\r\nCER/DSV AIR SEA A S\r\nISU/16JAN15/HORSENS/MARTIN GRAVERSEN\r\nOSI/MARTIN GRAVERSEN 16-JAN-15 15 17\r\nREF//CDK117989/FFW/CWIDDFDDK1PRD/HOR\r\nCOR/X\r\nSPH/ECC" }

CXML (abrégé) :

{ "carrierCode": "618", "payload": "<?xml version=\"1.0\" encoding=\"utf-8\"?><rsm:Waybill xmlns:rsm=\"iata:waybill:1\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:ccts=\"urn:un:unece:uncefact:documentation:standard:CoreComponentsTechnicalSpeci fication:2\" xmlns:udt=\"urn:un:unece:uncefact:data:standard:UnqualifiedDataType:8\" xmlns:ram=\"iata:datamodel:3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:local=\"urn:local\"><rsm:MessageHeaderDocument><ram:ID>XFWB</ram:ID><ram:Name>Ai r Waybill</ram:Name><ram:TypeCode>741</ram:TypeCode><ram:IssueDateTime>2019-03- 18T14:04:57</ram:IssueDateTime><ram:PurposeCode>Creation</ram:PurposeCode><ram:Version ID>3</ram:VersionID><ram:ConversationID>XFWB20190318140457304</ram:ConversationID><ram :SenderParty>
<ram:PrimaryID schemeID=\"P\">BBB</ram:PrimaryID></ram:SenderParty><ram:RecipientParty><ram:PrimaryID schemeID=\"P\">AAA</ram:PrimaryID></ram:RecipientParty></rsm:MessageHeaderDocument><rs m:BusinessHeaderDocument><ram:ID>607- 82896940</ram:ID><ram:SignatoryCarrierAuthentication>................................< ram:ValuationChargeTotalAmount currencyID=\"USD\">0</ram:ValuationChargeTotalAmount><ram:TaxTotalAmount currencyID=\"USD\">0</ram:TaxTotalAmount><ram:AgentTotalDuePayableAmount currencyID=\"USD\">3</ram:AgentTotalDuePayableAmount><ram:CarrierTotalDuePayableAmount currencyID=\"USD\">69.5</ram:CarrierTotalDuePayableAmount><ram:GrandTotalAmount currencyID=\"USD\">513.65</ram:GrandTotalAmount></ram:ApplicablePrepaidCollectMonetary Summation></ram:ApplicableTotalRating></rsm:MasterConsignment></rsm:Waybill>" }

Nota : Le code de transporteur est numérique, mais doit être indiqué en caractères. Les chiffres qui commencent par des zéros (p. ex., 014 pour Transporteur ABC) ne sont pas valides dans le format JSON.

Code de transporteur

Le champ indique le transporteur responsable de l’expédition. En général, cela correspond aux trois premiers chiffres du numéro de la lettre de transport aérien.

Exemple 1

Transporteur ABC a produit la lettre de transport aérien. Transporteur ABC exploite le vol vers le Canada. Les renseignements sur l’expédition ne sont pas transmis par un tiers autorisé au nom Transporteur ABC.

Nous nous attendons à une transmission qui utilise le jeton d’accès Transporteur ABC : le champ « carrierCode » et les trois premiers chiffres du numéro de la lettre de transport aérien sont réglés à 014.

Exemple 2

Transporteur DEF a produit la lettre de transport aérien. Transporteur ABC exploite le vol vers le Canada. Les renseignements sur l’expédition sont transmis par un tiers autorisé, XYZ Cargo Inc., au nom Transporteur ABC.

Nous nous attendons à une transmission qui utilise le jeton d’accès de XYZ Cargo Inc. : le champ carrierCode est réglé à 014 et les trois premiers chiffres du numéro de la lettre de transport aérien sont réglés à 057. Consulter la liste de codes de transporteur à trois chiffres de l’International Air Transport Association IATA (en anglais seulement).

Transmission de messages

Le CFAPC de Transports Canada reçoit les données d’Azure Event Hub. Des trousses SDK pour l’envoi de messages sont disponibles dans plusieurs langages de programmation :

  • C#
  • Java
  • Python
  • Node
  • Go
  • C

L’utilisation de trousses SDK natives est recommandée, mais on peut aussi envoyer des messages par l’intermédiaire d’un point de terminaison Web d’ API.

SDK

Les trousses SDK sont la façon la plus simple d’envoyer des messages au CFAPC.

Le CFAPC vous fournira les éléments suivants en vue de l’utilisation des SDK :

  • Uniform Resource Identifier (URI)
  • Nom de l’Event Hub
  • Éditeur
  • Jeton

L’exemple suivant, en C#, démontre qu’il est facile d’envoyer un message au moyen des éléments ci-dessus :

using Microsoft.ServiceBus;
using Microsoft.ServiceBus.Messaging;
var connStr = ServiceBusConnectionStringBuilder.CreateUsingSharedAccessSignature( new Uri("sb://some_namespace.servicebus.windows.net/"), // URI
"some_event_hub", // Event hub name
"champ", // Publisher
"SharedAccessSignature sr=sb%3a%2f%2fsome_namespace.servicebus.windows.net%2fsome_event_hub%2fPublishers% 2fchamp&sig=XYZXYZXYZ&se=2412859455&skn=Carrier"); // Token
var sender = EventHubSender.CreateFromConnectionString(connStr);
sender.Send(new EventData(Encoding.UTF8.GetBytes("{ \"carrierCode\": \"000\", \"payload\": \"FML/16.....\" }")));

Interface de programmation (API) Web

L’Azure Event Hub offre aussi un point de terminaison Web d’ API pour l’envoi de messages. Le CFAPC fournira les renseignements suivants :

  • Uniform Resource Locator (URL)
  • Jeton

Nota : Le jeton est ajouté sous forme de valeur dans l’en-tête de la demande d’autorisation. Voici un exemple de requête POST valide :

POST https://some_ns.servicebus.windows.net/eh_name/Publishers/some_carrier/messages

En-têtes

Content-type: Application/json

Authorization: SharedAccessSignature
sr=sb%3a%2f%2fsome_ns.servicebus.windows.net%2feh_name%2fPublishers%2fsome_carrier&sig=1Pa rDEwqPgz%2baTVeNMGRjhek1k8fwwR797uFvOlWr%2fY%3d&se=2412859455&skn=Carrier

Corps de la requête

{ "carrierCode": "014", "payload": "FML/16....." }