JSON Schema validation helps check if the data you get matches the expected format. It makes sure your app works with correct and complete information.
JSON Schema validation in Postman
Introduction
Syntax
Postman
pm.test('Validate JSON schema', () => { const schema = { type: 'object', properties: { id: { type: 'integer' }, name: { type: 'string' }, active: { type: 'boolean' } }, required: ['id', 'name', 'active'] }; pm.response.to.have.jsonSchema(schema); });
The schema defines the expected structure and data types.
pm.response.to.have.jsonSchema() runs the validation on the response body.
Examples
Postman
pm.test('Check user schema', () => { const userSchema = { type: 'object', properties: { username: { type: 'string' }, email: { type: 'string', format: 'email' } }, required: ['username', 'email'] }; pm.response.to.have.jsonSchema(userSchema); });
Postman
pm.test('Validate product schema', () => { const productSchema = { type: 'object', properties: { productId: { type: 'integer' }, price: { type: 'number' }, tags: { type: 'array', items: { type: 'string' } } }, required: ['productId', 'price'] }; pm.response.to.have.jsonSchema(productSchema); });
Sample Program
This test checks if the API response matches the user schema with id, name, and isActive fields.
Postman
pm.test('Validate simple user JSON schema', () => { const userSchema = { type: 'object', properties: { id: { type: 'integer' }, name: { type: 'string' }, isActive: { type: 'boolean' } }, required: ['id', 'name', 'isActive'] }; pm.response.to.have.jsonSchema(userSchema); });
Important Notes
Make sure your JSON schema matches the exact structure of the response.
Use required to specify which fields must be present.
Postman uses Ajv library internally for JSON schema validation.
Summary
JSON Schema validation checks if data matches expected format.
It helps catch errors early and automate response checks.
Postman makes it easy to add schema tests in your API tests.
Practice
1. What is the main purpose of JSON Schema validation in Postman?
easy
Solution
Step 1: Understand JSON Schema validation role
JSON Schema validation is used to verify that the data structure matches what is expected.Step 2: Relate to Postman usage
In Postman, it helps confirm the API response format is correct, catching errors early.Final Answer:
To check if the API response data matches the expected format -> Option DQuick Check:
JSON Schema validation = format check [OK]
Hint: Remember: JSON Schema validates data format, not speed or changes [OK]
Common Mistakes:
- Thinking it changes API data
- Confusing validation with performance
- Assuming it creates endpoints
2. Which of the following is the correct way to write a JSON Schema type check for a string in Postman test script?
easy
Solution
Step 1: Recall JSON Schema syntax for type
JSON Schema requires property names and string values to be in double quotes.Step 2: Check each option's syntax
"type": "string" uses double quotes correctly for both key and value, matching JSON standards.Final Answer:
"type": "string" -> Option AQuick Check:
JSON keys and string values need double quotes [OK]
Hint: Use double quotes for keys and string values in JSON Schema [OK]
Common Mistakes:
- Omitting quotes around string values
- Using single quotes instead of double quotes
- Missing quotes around keys
3. Given this Postman test snippet, what will be the test result if the response JSON is {"name": "Alice", "age": 30}?
const schema = {
type: "object",
properties: {
name: { type: "string" },
age: { type: "integer" }
},
required: ["name", "age"]
};
pm.test("Validate response schema", () => {
pm.response.to.have.jsonSchema(schema);
});medium
Solution
Step 1: Compare response data types with schema
Response has "name" as string and "age" as integer, matching schema types.Step 2: Check required fields presence
Both "name" and "age" are present in response, fulfilling required array.Final Answer:
Test passes because response matches schema -> Option BQuick Check:
Response matches schema = test passes [OK]
Hint: Match data types and required fields to schema for pass [OK]
Common Mistakes:
- Confusing integer with string type
- Ignoring required fields presence
- Assuming syntax error without checking
4. You wrote this JSON Schema in Postman test but the validation always fails:
const schema = {
type: "object",
properties: {
id: { type: "number" },
email: { type: "string" }
},
required: ["id", "email"]
};
pm.test("Check schema", () => {
pm.response.to.have.jsonSchema(schema);
});
The API response is {"id": 123, "email": "user@example.com"}. What is the likely problem?medium
Solution
Step 1: Understand JSON Schema number vs integer types
JSON Schema distinguishes "number" (any number) and "integer" (whole numbers). API returns whole number 123.Step 2: Check if "number" type matches whole number
"number" accepts integers generally, but Postman JSON Schema validation requires "integer" for whole numbers like 123.Step 3: Consider common Postman issue
Postman JSON Schema validation is strict; using "number" for integer values can cause mismatch.Final Answer:
The type "number" should be "integer" for whole numbers -> Option AQuick Check:
Use "integer" for whole numbers in schema [OK]
Hint: Use "integer" type for whole numbers in JSON Schema [OK]
Common Mistakes:
- Placing required outside schema
- Ignoring quotes in JSON keys (not relevant here)
- Assuming test syntax error without checking
5. You want to validate an API response in Postman where the "tags" field is an array of strings, but it can be empty or missing. Which JSON Schema snippet correctly allows this?
hard
Solution
Step 1: Understand optional field with empty array allowed
The "tags" field can be missing or present as an empty array or array of strings.Step 2: Analyze each option
{ "type": "object", "properties": { "tags": { "type": "array", "items": { "type": "string" } } }, "required": [] } allows "tags" as array of strings, not required (can be missing). { "type": "object", "properties": { "tags": { "type": "array", "items": { "type": "string" } } }, "required": ["tags"] } requires "tags" always. { "type": "object", "properties": { "tags": { "type": ["array", "null"], "items": { "type": "string" } } }, "required": [] } allows null type which is not needed. { "type": "object", "properties": { "tags": { "type": "array", "items": { "type": "string" }, "minItems": 1 } }, "required": [] } requires at least one item (minItems:1), disallowing empty array.Final Answer:
{ "type": "object", "properties": { "tags": { "type": "array", "items": { "type": "string" } } }, "required": [] } -> Option CQuick Check:
Optional field with empty array = not required, no minItems [OK]
Hint: Use empty required array and no minItems for optional empty arrays [OK]
Common Mistakes:
- Making field required when optional
- Adding minItems disallowing empty arrays
- Allowing null when not needed
Recommended
Ready to prove it?
Pass the test and this pattern moves unknown
10 questions ~5 mineasy hard
