{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/insomnia/refs/heads/main/json-schema/request.json",
  "title": "Insomnia Request",
  "description": "An Insomnia request represents an individual HTTP, GraphQL, gRPC, WebSocket, or other protocol request configured within a workspace. It contains the URL, method, headers, body, authentication, and other settings needed to execute the request.",
  "type": "object",
  "properties": {
    "_id": {
      "type": "string",
      "description": "Unique identifier for the request, typically prefixed with req_."
    },
    "name": {
      "type": "string",
      "description": "Human-readable name of the request."
    },
    "description": {
      "type": "string",
      "description": "Optional description providing context about the request."
    },
    "url": {
      "type": "string",
      "description": "The target URL for the request, which may include Insomnia template tags."
    },
    "method": {
      "type": "string",
      "enum": ["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS", "TRACE"],
      "description": "HTTP method for the request."
    },
    "headers": {
      "type": "array",
      "description": "List of HTTP headers to include in the request.",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Header name."
          },
          "value": {
            "type": "string",
            "description": "Header value."
          },
          "disabled": {
            "type": "boolean",
            "description": "Whether this header is disabled.",
            "default": false
          }
        },
        "required": ["name", "value"]
      }
    },
    "parameters": {
      "type": "array",
      "description": "Query parameters appended to the request URL.",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Parameter name."
          },
          "value": {
            "type": "string",
            "description": "Parameter value."
          },
          "disabled": {
            "type": "boolean",
            "description": "Whether this parameter is disabled.",
            "default": false
          }
        },
        "required": ["name", "value"]
      }
    },
    "body": {
      "type": "object",
      "description": "The request body configuration.",
      "properties": {
        "mimeType": {
          "type": "string",
          "description": "MIME type of the request body (e.g., application/json, multipart/form-data)."
        },
        "text": {
          "type": "string",
          "description": "Raw text content of the request body."
        },
        "params": {
          "type": "array",
          "description": "Form data parameters when using form-encoded or multipart body types.",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "value": {
                "type": "string"
              },
              "disabled": {
                "type": "boolean",
                "default": false
              }
            },
            "required": ["name", "value"]
          }
        }
      }
    },
    "authentication": {
      "type": "object",
      "description": "Authentication configuration for the request.",
      "properties": {
        "type": {
          "type": "string",
          "description": "Authentication type (e.g., bearer, basic, oauth2, apikey)."
        },
        "token": {
          "type": "string",
          "description": "Token value for bearer authentication."
        },
        "username": {
          "type": "string",
          "description": "Username for basic authentication."
        },
        "password": {
          "type": "string",
          "description": "Password for basic authentication."
        },
        "disabled": {
          "type": "boolean",
          "description": "Whether authentication is disabled for this request.",
          "default": false
        }
      }
    },
    "parentId": {
      "type": "string",
      "description": "Identifier of the parent workspace or folder."
    },
    "settingFollowRedirects": {
      "type": "string",
      "enum": ["on", "off", "global"],
      "description": "Whether to follow HTTP redirects.",
      "default": "global"
    },
    "settingSendCookies": {
      "type": "boolean",
      "description": "Whether to send cookies with the request.",
      "default": true
    },
    "settingStoreCookies": {
      "type": "boolean",
      "description": "Whether to store cookies from the response.",
      "default": true
    },
    "settingRebuildPath": {
      "type": "boolean",
      "description": "Whether to encode the request path automatically.",
      "default": true
    },
    "created": {
      "type": "integer",
      "description": "Unix timestamp in milliseconds when the request was created."
    },
    "modified": {
      "type": "integer",
      "description": "Unix timestamp in milliseconds when the request was last modified."
    },
    "_type": {
      "type": "string",
      "const": "request",
      "description": "The resource type identifier."
    }
  },
  "required": ["_id", "name", "url", "method", "parentId", "_type"],
  "additionalProperties": true
}
