Thunder Client · Schema
Thunder Client Collection
JSON Schema for a Thunder Client collection file containing API requests, folders, and metadata
API ClientAPI TestingCI/CDCLICollectionsGraphQLREST ClientVS Code
Properties
| Name | Type | Description |
|---|---|---|
| version | string | Thunder Client collection format version |
| name | string | Collection name |
| description | string | Collection description |
| dateExported | string | ISO 8601 timestamp when the collection was exported |
| client | string | Client identifier |
| requests | array | Array of request definitions in the collection |
| folders | array | Array of folder definitions for organizing requests |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://www.thunderclient.com/schema/collection",
"title": "Thunder Client Collection",
"description": "JSON Schema for a Thunder Client collection file containing API requests, folders, and metadata",
"type": "object",
"required": ["version", "name", "requests"],
"properties": {
"version": {
"type": "string",
"description": "Thunder Client collection format version",
"examples": ["1.2"]
},
"name": {
"type": "string",
"description": "Collection name"
},
"description": {
"type": "string",
"description": "Collection description"
},
"dateExported": {
"type": "string",
"format": "date-time",
"description": "ISO 8601 timestamp when the collection was exported"
},
"client": {
"type": "string",
"description": "Client identifier",
"const": "Thunder Client"
},
"requests": {
"type": "array",
"description": "Array of request definitions in the collection",
"items": { "$ref": "#/$defs/ThunderRequest" }
},
"folders": {
"type": "array",
"description": "Array of folder definitions for organizing requests",
"items": { "$ref": "#/$defs/ThunderFolder" }
}
},
"$defs": {
"ThunderRequest": {
"type": "object",
"required": ["_id", "colId", "name", "url", "method"],
"properties": {
"_id": {
"type": "string",
"description": "Unique request identifier (UUID)"
},
"colId": {
"type": "string",
"description": "Collection ID this request belongs to"
},
"containerId": {
"type": "string",
"description": "Folder ID this request belongs to (if in a folder)"
},
"name": {
"type": "string",
"description": "Request name"
},
"url": {
"type": "string",
"description": "Request URL; may contain environment variable references like {{baseUrl}}"
},
"method": {
"type": "string",
"enum": ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD"],
"description": "HTTP method"
},
"sortNum": {
"type": "number",
"description": "Sort order within the collection or folder"
},
"created": {
"type": "string",
"format": "date-time"
},
"modified": {
"type": "string",
"format": "date-time"
},
"headers": {
"type": "array",
"description": "Request headers",
"items": { "$ref": "#/$defs/KeyValueItem" }
},
"params": {
"type": "array",
"description": "Query string parameters",
"items": { "$ref": "#/$defs/KeyValueItem" }
},
"body": {
"$ref": "#/$defs/RequestBody"
},
"auth": {
"$ref": "#/$defs/RequestAuth"
},
"tests": {
"type": "array",
"description": "Scriptless test assertions for this request",
"items": { "$ref": "#/$defs/TestAssertion" }
},
"preScripts": {
"type": "array",
"description": "Pre-request scripts (JavaScript)",
"items": { "type": "string" }
},
"postScripts": {
"type": "array",
"description": "Post-request scripts (JavaScript)",
"items": { "type": "string" }
},
"settings": {
"type": "object",
"description": "Per-request settings",
"properties": {
"followRedirects": { "type": "boolean" },
"timeout": { "type": "integer" },
"verifyCertificate": { "type": "boolean" }
}
}
}
},
"ThunderFolder": {
"type": "object",
"required": ["_id", "name", "colId"],
"properties": {
"_id": {
"type": "string",
"description": "Unique folder identifier (UUID)"
},
"name": {
"type": "string",
"description": "Folder name"
},
"colId": {
"type": "string",
"description": "Collection ID this folder belongs to"
},
"containerId": {
"type": "string",
"description": "Parent folder ID for nested folders"
},
"sortNum": {
"type": "number"
}
}
},
"KeyValueItem": {
"type": "object",
"required": ["name", "value"],
"properties": {
"name": {
"type": "string",
"description": "Header or parameter name"
},
"value": {
"type": "string",
"description": "Header or parameter value; may contain {{variable}} references"
},
"isDisabled": {
"type": "boolean",
"default": false
}
}
},
"RequestBody": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["json", "text", "xml", "formdata", "formencoded", "graphql", "binary", "none"],
"description": "Body content type"
},
"raw": {
"type": "string",
"description": "Raw body content (for json, text, xml types)"
},
"form": {
"type": "array",
"description": "Form fields (for formdata and formencoded types)",
"items": { "$ref": "#/$defs/KeyValueItem" }
},
"graphql": {
"type": "object",
"properties": {
"query": { "type": "string" },
"variables": { "type": "string" }
}
}
}
},
"RequestAuth": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["none", "basic", "bearer", "oauth2", "apikey", "digest", "awsv4", "ntlm"],
"description": "Authentication type"
},
"username": { "type": "string" },
"password": { "type": "string" },
"token": { "type": "string" },
"key": { "type": "string" },
"value": { "type": "string" },
"placement": {
"type": "string",
"enum": ["header", "query"],
"description": "Where to place the API key"
}
}
},
"TestAssertion": {
"type": "object",
"required": ["type", "custom", "action", "value"],
"properties": {
"type": {
"type": "string",
"enum": ["status", "json", "header", "text", "ms", "size"],
"description": "Assertion target type"
},
"custom": {
"type": "string",
"description": "Field path or header name to check (e.g., 'json.id', 'header.content-type')"
},
"action": {
"type": "string",
"enum": ["equals", "notequals", "isNull", "notNull", "contains", "notContains", "startsWith", "endsWith", "isType", "lt", "gt", "lte", "gte"],
"description": "Comparison operator"
},
"value": {
"description": "Expected value for comparison"
}
}
}
}
}