---
updatedAt: 2025-09-17T22:29:10.000Z
agentTools:
  projectIndex: https://docs.vizionapi.com/llms.txt
---

# Validating Vizion payload

```javascript JavaScript
// Example showing how an overly strict payload validation can break your integration
import { z } from 'zod';

// Sample incoming webhook payload from Vizion
const incomingPayload = {
  id: "d34e79ce-1aa9-45ba-8a6a-e478a5ce9ddb",
  payload: {
    carrier_scac: "HLCU",
    container_id: "SEGU8119823",
    container_iso: "22TN",
    bill_of_lading: "HLCUBSC2504AUSF2",
    booking_number: "25299923",
    // ... payload continued
  },
  status: "data_received"
};

// ❌ Strict schema fails if any new fields are present
const vizionApiReferenceUpdatePayloadSchema = z.object({
  id: z.string(),
  payload: z.object({
    carrier_scac: z.string(),
    container_id: z.string(),
    container_iso: z.string(),
    bill_of_lading: z.string(),
    booking_number: z.string(),
    // ... payload continued
  }).strict(),    // equivalent to "additionalProperties": false - does NOT allow additional fields inside payload
  status: z.string()
}).strict();      // equivalent to "additionalProperties": false - does NOT allow additional top-level fields 

vizionApiReferenceUpdatePayloadSchema.parse(incomingPayload);
// ❌ Throws: "Unrecognized key in object: …" which makes your integration brittle to non-breaking changes to the payload

// ✅ Future proof schema allows additional fields
const futureProofSchema = z.object({
  id: z.string(),
  payload: z.object({
    carrier_scac: z.string(),
    container_id: z.string(),
    container_iso: z.string(),
    bill_of_lading: z.string(),
    booking_number: z.string(),
    // … payload continued
  }).passthrough(), // equivalent to "additionalProperties": true — allows extra fields inside payload
  status: z.string()
}).passthrough();   // equivalent to "additionalProperties": true" — allows extra top-level fields

futureProofSchema.parse(incomingPayload);
// ✅ Known fields are validated and extra fields allowed, which keeps your integration resilient to future additions
```

```json Response Example
{"success":true}
```

# Sample Vizion payload

<!-- javascript@1-16 -->

Incoming payload with fields that may change over time and potentially contain additional properties not yet accounted for.

# Strict schema definition

<!-- javascript@18-30 -->

Strict schema prevents any extra fields (additional properties) inside the payload object or the top-level object.

# Validation using strict schema

<!-- javascript@32 -->

Fails validation if any extra fields are present because .strict() enforces that only the specified fields are allowed.

# Future proof schema definition

<!-- javascript@35-47 -->

Future-proof schema with .passthrough() allows additional properties in the payload and top-level object, similar to "additionalProperties": true.

# Validation using future proof schema

<!-- javascript@49-50 -->

Passes validation even if extra fields are present because .passthrough() allows additional properties without throwing errors.