{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/amazon-lambda/refs/heads/main/json-schema/amazon-lambda-function-schema.json",
  "title": "Function",
  "description": "An AWS Lambda function.",
  "type": "object",
  "properties": {
    "FunctionName": {
      "type": "string",
      "description": "The name of the function.",
      "example": "my-function"
    },
    "FunctionArn": {
      "type": "string",
      "description": "The function's Amazon Resource Name (ARN)."
    },
    "Runtime": {
      "type": "string",
      "description": "The function's runtime identifier.",
      "example": "python3.12",
      "enum": [
        "nodejs20.x",
        "python3.12",
        "java21",
        "go1.x",
        "ruby3.2",
        "dotnet8",
        "provided.al2023"
      ]
    },
    "Role": {
      "type": "string",
      "description": "The function's execution role ARN."
    },
    "Handler": {
      "type": "string",
      "description": "The function that Lambda calls to begin execution.",
      "example": "lambda_function.lambda_handler"
    },
    "CodeSize": {
      "type": "integer",
      "description": "The size of the function's deployment package, in bytes."
    },
    "Description": {
      "type": "string",
      "description": "The function's description."
    },
    "Timeout": {
      "type": "integer",
      "description": "The amount of time (in seconds) that Lambda allows a function to run.",
      "example": 30
    },
    "MemorySize": {
      "type": "integer",
      "description": "The amount of memory available to the function at runtime.",
      "example": 128
    },
    "LastModified": {
      "type": "string",
      "description": "The date and time the function was last updated.",
      "format": "date-time"
    },
    "State": {
      "type": "string",
      "description": "The current state of the function.",
      "example": "Active",
      "enum": [
        "Pending",
        "Active",
        "Inactive",
        "Failed"
      ]
    },
    "PackageType": {
      "type": "string",
      "description": "The type of deployment package.",
      "example": "Zip",
      "enum": [
        "Zip",
        "Image"
      ]
    }
  }
}