Préparer la requête
La création d'un manifeste exige d'organiser vos données d'envoi dans la structure appropriée. L'API adopte une approche hiérarchique : vous créez d'abord le manifeste, puis ajoutez des lignes de manifeste contenant les détails de chaque envoi.
Chaque composant possède des champs obligatoires spécifiques pour garantir la conformité douanière et une documentation exacte. Ci-dessous, nous décrivons la structure de données essentielle et les inputs requis.
Types d'input principaux
L'API de manifeste utilise plusieurs types d'input pour organiser les données d'envoi :
ManifestInput: Informations d'envoi de haut niveau, y compris aéroports, type de lettre de transport aérien et détails de volManifestLineInput: Détails d'envoi individuels liés à un manifesteManifestLineItemInput: Informations produit pour la classification douanièreCreatePartyInput: Détails de partie et de localisation pour l'origine et la destination
Consultez les définitions complètes des champs et les options dans notre référence API GraphQL.
Créer un manifeste via l'API
Une fois vos données d'envoi organisées, envoyez la mutation GraphQL pour créer le manifeste.
Étape 1 : Créer l'en-tête du manifeste
mutation ManifestCreate($input: ManifestInput!) { manifestCreate(input: $input) { id amount arrivalDate awbNumber awbPrefix carrierCode createdAt createdBy destinationCode operatorDestination operatorOrigin originCode postalOperatorCode serviceNumber source transportationMode updatedAt updatedBy weight weightUnit statusTransitions { createdAt createdBy note source } lines(first: 5) { totalCount edges { cursor node { id trackingNumber endUse currencyCode createdAt createdBy updatedAt updatedBy landedCost { id } } } } }}RESPONSE
json
{
"data": {
"manifestCreate": {
"id": "manifest_abc123def456",
"amount": "0",
"arrivalDate": "2026-03-15T14:30:00.000Z",
"awbNumber": "1234",
"awbPrefix": "001",
"carrierCode": "AA",
"createdAt": "2026-01-06T12:00:00.000Z",
"createdBy": "organization_xyz789",
"destinationCode": "JFK",
"operatorDestination": "US",
"originCode": "LHR",
"postalOperatorCode": "J1CGBA",
"serviceNumber": "1234",
"source": "API",
"transportationMode": "AIR",
"updatedAt": "2026-01-06T12:00:00.000Z",
"updatedBy": "organization_xyz789",
"weight": "0",
"weightUnit": "KILOGRAM",
"statusTransitions": [],
"lines": {
"totalCount": 0,
"edges": []
}
}
}
}
Étape 2 : Ajouter des lignes de manifeste
À partir de l'ID renvoyé par la mutation manifestCreate, vous pouvez maintenant lier des envois individuels au manifeste.
mutation ManifestLineCreate($manifestId: ID!, $input: ManifestLineInput!) { manifestLineCreate(manifestId: $manifestId, input: $input) { id manifestId trackingNumber endUse currencyCode referenceNumber arrivalDate createdAt createdBy updatedAt updatedBy landedCost { id } }}RESPONSE
json
{
"data": {
"manifestLineCreate": {
"id": "manifest_line_def456ghi789",
"manifestId": "manifest_abc123def456",
"trackingNumber": "LX123456789GB",
"endUse": "NOT_FOR_RESALE",
"currencyCode": "USD",
"referenceNumber": "ORDER-2026-001",
"arrivalDate": "2026-03-15T14:30:00.000Z",
"createdAt": "2026-01-06T12:05:00.000Z",
"createdBy": "organization_xyz789",
"updatedAt": "2026-01-06T12:05:00.000Z",
"updatedBy": "organization_xyz789",
"landedCost": null
}
}
}
Étape 3 : Ajouter plusieurs lignes de manifeste (lot)
Pour plus d'efficacité, vous pouvez ajouter plusieurs lignes de manifeste en une seule requête avec la mutation manifestLinesCreate. Chaque ligne requiert son propre tableau parties pour définir l'origine et la destination de l'envoi.
mutation ManifestLinesCreate($manifestId: ID!, $input: [ManifestLineInput!]!) { manifestLinesCreate(manifestId: $manifestId, input: $input) { id manifestId trackingNumber endUse currencyCode createdAt }}RESPONSE
json
{
"data": {
"manifestLinesCreate": [
{
"id": "manifest_line_aaa111bbb222",
"manifestId": "manifest_abc123def456",
"trackingNumber": "LX123456789GB",
"endUse": "NOT_FOR_RESALE",
"currencyCode": "USD",
"createdAt": "2026-01-06T12:10:00.000Z"
},
{
"id": "manifest_line_ccc333ddd444",
"manifestId": "manifest_abc123def456",
"trackingNumber": "LX987654321GB",
"endUse": "GIFT",
"currencyCode": "USD",
"createdAt": "2026-01-06T12:10:00.000Z"
}
]
}
}
Étape 4 : Mettre à jour le manifeste
Si les détails du vol ont changé, vous pouvez mettre à jour le manifeste avec la mutation suivante. Le champ source est obligatoire et indique la source de données de la mise à jour.
mutation ManifestUpdate($id: ID!, $input: ManifestUpdateInput!) { manifestUpdate(id: $id, input: $input) { id amount arrivalDate awbNumber awbPrefix carrierCode createdAt createdBy destinationCode operatorDestination operatorOrigin originCode postalOperatorCode serviceNumber source transportationMode updatedAt updatedBy weight weightUnit statusTransitions { createdAt createdBy note source } }}RESPONSE
json
{
"data": {
"manifestUpdate": {
"id": "manifest_abc123def456",
"amount": "150.50",
"arrivalDate": "2026-03-16T10:00:00.000Z",
"awbNumber": "5678",
"awbPrefix": "001",
"carrierCode": "BA",
"createdAt": "2026-01-06T12:00:00.000Z",
"createdBy": "organization_xyz789",
"destinationCode": "JFK",
"operatorDestination": "US",
"originCode": "LHR",
"postalOperatorCode": "J1CGBA",
"serviceNumber": "5678",
"source": "RESDIT",
"transportationMode": "AIR",
"updatedAt": "2026-01-06T14:30:00.000Z",
"updatedBy": "organization_xyz789",
"weight": "25.5",
"weightUnit": "KILOGRAM",
"statusTransitions": [
{
"createdAt": "2026-01-06T14:30:00.000Z",
"createdBy": "organization_xyz789",
"note": "Flight rescheduled due to weather",
"source": "RESDIT"
}
]
}
}
}
Valeurs de source de données
Le champ source dans ManifestUpdateInput accepte les valeurs suivantes :
| Valeur↕ | Description↕ |
|---|---|
CARDIT | Échange de données transporteur |
PRECON | Avis de pré-consignation |
PREDES | Avis pré-expédition |
RESDIT | Réponse à l'expédition |
Préparer un manifeste douanier pour les envois aux États-Unis.
Fournissez à Zonos les données d'envois postaux entrants.Zonos prépare des manifestes douaniers complets incluant toutes les informations nécessaires pour les envois postaux vers les États-Unis.