{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/amazon-connect/json-schema/amazon-connect-connect-campaigns-create-campaign-request-schema.json",
  "title": "ConnectCampaignsCreateCampaignRequest",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/amazon-connect-campaigns-api-openapi.yml#/components/schemas/ConnectCampaignsCreateCampaignRequest",
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "connectInstanceId": {
      "type": "string"
    },
    "channelSubtypeConfig": {
      "$ref": "#/$defs/ChannelSubtypeConfig"
    },
    "type": {
      "type": "string"
    },
    "source": {
      "$ref": "#/$defs/Source"
    },
    "connectCampaignFlowArn": {
      "type": "string"
    },
    "schedule": {
      "$ref": "#/$defs/Schedule"
    },
    "entryLimitsConfig": {
      "$ref": "#/$defs/EntryLimitsConfig"
    },
    "communicationTimeConfig": {
      "$ref": "#/$defs/CommunicationTimeConfig"
    },
    "communicationLimitsOverride": {
      "$ref": "#/$defs/CommunicationLimitsConfig"
    },
    "tags": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    }
  },
  "required": [
    "name",
    "connectInstanceId"
  ],
  "$defs": {
    "AbandonmentRatePacingConfig": {
      "type": "object",
      "properties": {
        "targetRate": {
          "type": "number"
        },
        "connectionStartPoint": {
          "type": "string",
          "description": "Event from which connectionThresholdSeconds is measured."
        },
        "connectionThresholdSeconds": {
          "type": "integer",
          "description": "Seconds after connectionStartPoint before a contact counts as abandoned."
        },
        "evaluationWindow": {
          "type": "string",
          "description": "Rolling window over which abandonmentRate is computed."
        }
      },
      "required": [
        "targetRate",
        "connectionStartPoint",
        "connectionThresholdSeconds",
        "evaluationWindow"
      ]
    },
    "AgentlessConfig": {
      "type": "object",
      "properties": {}
    },
    "ChannelSubtypeConfig": {
      "type": "object",
      "properties": {
        "telephony": {
          "$ref": "#/$defs/TelephonyChannelSubtypeConfig"
        },
        "sms": {
          "$ref": "#/$defs/SmsChannelSubtypeConfig"
        },
        "email": {
          "$ref": "#/$defs/EmailChannelSubtypeConfig"
        },
        "whatsApp": {
          "$ref": "#/$defs/WhatsAppChannelSubtypeConfig"
        }
      }
    },
    "CommunicationLimit": {
      "type": "object",
      "properties": {
        "maxCountPerRecipient": {
          "type": "integer",
          "description": "Maximum number of contacts allowed for a given target within the given frequency."
        },
        "frequency": {
          "type": "integer",
          "description": "The number of days to consider with regards to this limit."
        },
        "unit": {
          "type": "string"
        }
      },
      "required": [
        "maxCountPerRecipient",
        "frequency",
        "unit"
      ]
    },
    "CommunicationLimits": {
      "type": "object",
      "properties": {
        "communicationLimitsList": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CommunicationLimit"
          }
        }
      },
      "description": "Exactly one member is set."
    },
    "CommunicationLimitsConfig": {
      "type": "object",
      "properties": {
        "allChannelSubtypes": {
          "$ref": "#/$defs/CommunicationLimits"
        },
        "instanceLimitsHandling": {
          "type": "string"
        }
      }
    },
    "CommunicationTimeConfig": {
      "type": "object",
      "properties": {
        "localTimeZoneConfig": {
          "$ref": "#/$defs/LocalTimeZoneConfig"
        },
        "telephony": {
          "$ref": "#/$defs/TimeWindow"
        },
        "sms": {
          "$ref": "#/$defs/TimeWindow"
        },
        "email": {
          "$ref": "#/$defs/TimeWindow"
        },
        "whatsApp": {
          "$ref": "#/$defs/TimeWindow"
        }
      },
      "required": [
        "localTimeZoneConfig"
      ]
    },
    "ConnectCampaignsAnswerMachineDetectionConfig": {
      "type": "object",
      "properties": {
        "enableAnswerMachineDetection": {
          "type": "boolean",
          "description": "Enable or disable answering machine detection"
        },
        "awaitAnswerMachinePrompt": {
          "type": "boolean",
          "description": "Enable or disable await answer machine prompt"
        }
      },
      "required": [
        "enableAnswerMachineDetection"
      ]
    },
    "EmailChannelSubtypeConfig": {
      "type": "object",
      "properties": {
        "capacity": {
          "type": "number"
        },
        "outboundMode": {
          "$ref": "#/$defs/EmailOutboundMode"
        },
        "defaultOutboundConfig": {
          "$ref": "#/$defs/EmailOutboundConfig"
        }
      },
      "required": [
        "outboundMode",
        "defaultOutboundConfig"
      ]
    },
    "EmailOutboundConfig": {
      "type": "object",
      "properties": {
        "connectSourceEmailAddress": {
          "type": "string"
        },
        "sourceEmailAddressDisplayName": {
          "type": "string"
        },
        "wisdomTemplateArn": {
          "type": "string"
        }
      },
      "required": [
        "connectSourceEmailAddress",
        "wisdomTemplateArn"
      ]
    },
    "EmailOutboundMode": {
      "type": "object",
      "properties": {
        "agentless": {
          "$ref": "#/$defs/AgentlessConfig"
        }
      },
      "description": "Exactly one member is set."
    },
    "EntryLimitsConfig": {
      "type": "object",
      "properties": {
        "maxEntryCount": {
          "type": "integer",
          "description": "Maximum number of times a participant can enter the campaign. A value of 0 indicates unlimited entries. Values of 1 or greater specify the exact number of entries allowed."
        },
        "minEntryInterval": {
          "type": "string",
          "description": "Minimum time interval that must pass before a participant can enter the campaign again."
        }
      },
      "required": [
        "maxEntryCount",
        "minEntryInterval"
      ]
    },
    "EventTrigger": {
      "type": "object",
      "properties": {
        "customerProfilesDomainArn": {
          "type": "string"
        }
      }
    },
    "LocalTimeZoneConfig": {
      "type": "object",
      "properties": {
        "defaultTimeZone": {
          "type": "string"
        },
        "localTimeZoneDetection": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "localTimeZoneDetectionScope": {
          "type": "string"
        }
      }
    },
    "OpenHours": {
      "type": "object",
      "properties": {
        "dailyHours": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "$ref": "#/$defs/TimeRange"
            }
          }
        }
      },
      "description": "Exactly one member is set."
    },
    "PacingStrategy": {
      "type": "object",
      "properties": {
        "abandonmentRate": {
          "$ref": "#/$defs/AbandonmentRatePacingConfig"
        }
      },
      "description": "Exactly one member is set."
    },
    "PredictiveConfig": {
      "type": "object",
      "properties": {
        "bandwidthAllocation": {
          "type": "number"
        },
        "pacingStrategies": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PacingStrategy"
          },
          "description": "Pacing strategies the dialer enforces simultaneously."
        }
      },
      "required": [
        "bandwidthAllocation"
      ]
    },
    "PreviewConfig": {
      "type": "object",
      "properties": {
        "bandwidthAllocation": {
          "type": "number"
        },
        "timeoutConfig": {
          "$ref": "#/$defs/TimeoutConfig"
        },
        "agentActions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "bandwidthAllocation",
        "timeoutConfig"
      ]
    },
    "ProgressiveConfig": {
      "type": "object",
      "properties": {
        "bandwidthAllocation": {
          "type": "number"
        }
      },
      "required": [
        "bandwidthAllocation"
      ]
    },
    "RestrictedPeriod": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "startDate": {
          "type": "string"
        },
        "endDate": {
          "type": "string"
        }
      },
      "required": [
        "startDate",
        "endDate"
      ]
    },
    "RestrictedPeriods": {
      "type": "object",
      "properties": {
        "restrictedPeriodList": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/RestrictedPeriod"
          }
        }
      },
      "description": "Exactly one member is set."
    },
    "Schedule": {
      "type": "object",
      "properties": {
        "startTime": {
          "type": "string",
          "format": "date-time"
        },
        "endTime": {
          "type": "string",
          "format": "date-time"
        },
        "refreshFrequency": {
          "type": "string"
        }
      },
      "required": [
        "startTime",
        "endTime"
      ]
    },
    "SmsChannelSubtypeConfig": {
      "type": "object",
      "properties": {
        "capacity": {
          "type": "number"
        },
        "outboundMode": {
          "$ref": "#/$defs/SmsOutboundMode"
        },
        "defaultOutboundConfig": {
          "$ref": "#/$defs/SmsOutboundConfig"
        }
      },
      "required": [
        "outboundMode",
        "defaultOutboundConfig"
      ]
    },
    "SmsOutboundConfig": {
      "type": "object",
      "properties": {
        "connectSourcePhoneNumberArn": {
          "type": "string"
        },
        "wisdomTemplateArn": {
          "type": "string"
        }
      },
      "required": [
        "connectSourcePhoneNumberArn",
        "wisdomTemplateArn"
      ]
    },
    "SmsOutboundMode": {
      "type": "object",
      "properties": {
        "agentless": {
          "$ref": "#/$defs/AgentlessConfig"
        }
      },
      "description": "Exactly one member is set."
    },
    "Source": {
      "type": "object",
      "properties": {
        "customerProfilesSegmentArn": {
          "type": "string"
        },
        "eventTrigger": {
          "$ref": "#/$defs/EventTrigger"
        }
      },
      "description": "Exactly one member is set."
    },
    "TelephonyChannelSubtypeConfig": {
      "type": "object",
      "properties": {
        "capacity": {
          "type": "number"
        },
        "connectQueueId": {
          "type": "string"
        },
        "outboundMode": {
          "$ref": "#/$defs/TelephonyOutboundMode"
        },
        "defaultOutboundConfig": {
          "$ref": "#/$defs/TelephonyOutboundConfig"
        }
      },
      "required": [
        "outboundMode",
        "defaultOutboundConfig"
      ]
    },
    "TelephonyOutboundConfig": {
      "type": "object",
      "properties": {
        "connectContactFlowId": {
          "type": "string"
        },
        "connectSourcePhoneNumber": {
          "type": "string"
        },
        "answerMachineDetectionConfig": {
          "$ref": "#/$defs/ConnectCampaignsAnswerMachineDetectionConfig"
        },
        "ringTimeout": {
          "type": "integer"
        }
      },
      "required": [
        "connectContactFlowId"
      ]
    },
    "TelephonyOutboundMode": {
      "type": "object",
      "properties": {
        "progressive": {
          "$ref": "#/$defs/ProgressiveConfig"
        },
        "predictive": {
          "$ref": "#/$defs/PredictiveConfig"
        },
        "agentless": {
          "$ref": "#/$defs/AgentlessConfig"
        },
        "preview": {
          "$ref": "#/$defs/PreviewConfig"
        }
      },
      "description": "Exactly one member is set."
    },
    "TimeRange": {
      "type": "object",
      "properties": {
        "startTime": {
          "type": "string"
        },
        "endTime": {
          "type": "string"
        }
      },
      "required": [
        "startTime",
        "endTime"
      ]
    },
    "TimeWindow": {
      "type": "object",
      "properties": {
        "openHours": {
          "$ref": "#/$defs/OpenHours"
        },
        "restrictedPeriods": {
          "$ref": "#/$defs/RestrictedPeriods"
        }
      },
      "required": [
        "openHours"
      ]
    },
    "TimeoutConfig": {
      "type": "object",
      "properties": {
        "durationInSeconds": {
          "type": "integer"
        }
      },
      "required": [
        "durationInSeconds"
      ]
    },
    "WhatsAppChannelSubtypeConfig": {
      "type": "object",
      "properties": {
        "capacity": {
          "type": "number"
        },
        "outboundMode": {
          "$ref": "#/$defs/WhatsAppOutboundMode"
        },
        "defaultOutboundConfig": {
          "$ref": "#/$defs/WhatsAppOutboundConfig"
        }
      },
      "required": [
        "outboundMode",
        "defaultOutboundConfig"
      ]
    },
    "WhatsAppOutboundConfig": {
      "type": "object",
      "properties": {
        "connectSourcePhoneNumberArn": {
          "type": "string"
        },
        "wisdomTemplateArn": {
          "type": "string"
        }
      },
      "required": [
        "connectSourcePhoneNumberArn",
        "wisdomTemplateArn"
      ]
    },
    "WhatsAppOutboundMode": {
      "type": "object",
      "properties": {
        "agentless": {
          "$ref": "#/$defs/AgentlessConfig"
        }
      },
      "description": "Exactly one member is set."
    }
  }
}