{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/amazon-systems-manager/json-schema/amazon-systems-manager-create-extension-request-schema.json",
  "title": "CreateExtensionRequest",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/amazon-systems-manager-extensions-api-openapi.yml#/components/schemas/CreateExtensionRequest",
  "type": "object",
  "properties": {
    "Name": {
      "type": "string",
      "description": "A name for the extension. Each extension name in your account must be unique. Extension versions use the same name."
    },
    "Description": {
      "type": "string",
      "description": "Information about the extension."
    },
    "Actions": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "items": {
          "$ref": "#/$defs/Action"
        }
      },
      "description": "The actions defined in the extension."
    },
    "Parameters": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/AppconfigParameter"
      },
      "description": "The parameters accepted by the extension. You specify parameter values when you associate the extension to an AppConfig resource by using the CreateExtensionAssociation API action. For Lambda extension actions, these parameters are included in the Lambda request object."
    },
    "Tags": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "Adds one or more tags for the specified extension. Tags are metadata that help you categorize resources in different ways, for example, by purpose, owner, or environment. Each tag consists of a key and an optional value, both of which you define."
    },
    "LatestVersionNumber": {
      "type": "integer",
      "description": "You can omit this field when you create an extension. When you create a new version, specify the most recent current version number. For example, you create version 3, enter 2 for this field."
    }
  },
  "required": [
    "Name",
    "Actions"
  ],
  "$defs": {
    "Action": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string",
          "description": "The action name."
        },
        "Description": {
          "type": "string",
          "description": "Information about the action."
        },
        "Uri": {
          "type": "string",
          "description": "The extension URI associated to the action point in the extension definition. The URI can be an Amazon Resource Name (ARN) for one of the following: an Lambda function, an Amazon Simple Queue Service queue, an Amazon Simple Notification Service topic, or the Amazon EventBridge default event bus."
        },
        "RoleArn": {
          "type": "string",
          "description": "An Amazon Resource Name (ARN) for an Identity and Access Management assume role."
        }
      }
    },
    "AppconfigParameter": {
      "type": "object",
      "properties": {
        "Description": {
          "type": "string",
          "description": "Information about the parameter."
        },
        "Required": {
          "type": "boolean",
          "description": "A parameter value must be specified in the extension association."
        },
        "Dynamic": {
          "type": "boolean",
          "description": "Indicates whether this parameter's value can be supplied at the extension's action point instead of during extension association. Dynamic parameters can't be marked Required."
        }
      }
    }
  }
}