@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Amazon Pinpoint
@version 2016-12-01
@auth AWS SigV4
@endpoints 122
@hint download_for_search
@toc apps(90), templates(23), recommenders(5), tags(3), phone(1)

@group apps
@endpoint POST /v1/apps
@required {CreateApplicationRequest: CreateApplicationRequest}
@returns(200) {ApplicationResponse: ApplicationResponse{Arn: str, Id: str, Name: str, tags: map<str,str>?, CreationDate: str?}}

@endpoint POST /v1/apps/{application-id}/campaigns
@required {ApplicationId: str, WriteCampaignRequest: WriteCampaignRequest}
@returns(200) {CampaignResponse: CampaignResponse{AdditionalTreatments: [TreatmentResource]?, ApplicationId: str, Arn: str, CreationDate: str, CustomDeliveryConfiguration: CustomDeliveryConfiguration?{DeliveryUri: str, EndpointTypes: [str]?}, DefaultState: CampaignState?{CampaignStatus: str?}, Description: str?, HoldoutPercent: int?, Hook: CampaignHook?{LambdaFunctionName: str?, Mode: str?, WebUrl: str?}, Id: str, IsPaused: bool?, LastModifiedDate: str, Limits: CampaignLimits?{Daily: int?, MaximumDuration: int?, MessagesPerSecond: int?, Total: int?, Session: int?}, MessageConfiguration: MessageConfiguration?{ADMMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, APNSMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, BaiduMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, CustomMessage: CampaignCustomMessage?{Data: str?}, DefaultMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, EmailMessage: CampaignEmailMessage?{Body: str?, FromAddress: str?, Headers: [MessageHeader]?, HtmlBody: str?, Title: str?}, GCMMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, SMSMessage: CampaignSmsMessage?{Body: str?, MessageType: str?, OriginationNumber: str?, SenderId: str?, EntityId: str?, TemplateId: str?}, InAppMessage: CampaignInAppMessage?{Body: str?, Content: [InAppMessageContent]?, CustomConfig: map<str,str>?, Layout: str?}}, Name: str?, Schedule: Schedule?{EndTime: str?, EventFilter: CampaignEventFilter?{Dimensions: EventDimensions, FilterType: str}, Frequency: str?, IsLocalTime: bool?, QuietTime: QuietTime?{End: str?, Start: str?}, StartTime: str, Timezone: str?}, SegmentId: str, SegmentVersion: int, State: CampaignState?{CampaignStatus: str?}, tags: map<str,str>?, TemplateConfiguration: TemplateConfiguration?{EmailTemplate: Template?{Name: str?, Version: str?}, PushTemplate: Template?{Name: str?, Version: str?}, SMSTemplate: Template?{Name: str?, Version: str?}, VoiceTemplate: Template?{Name: str?, Version: str?}, InAppTemplate: Template?{Name: str?, Version: str?}}, TreatmentDescription: str?, TreatmentName: str?, Version: int?, Priority: int?}}

@endgroup

@group templates
@endpoint POST /v1/templates/{template-name}/email
@required {TemplateName: str, EmailTemplateRequest: EmailTemplateRequest}
@returns(200) {CreateTemplateMessageBody: CreateTemplateMessageBody{Arn: str?, Message: str?, RequestID: str?}}

@endgroup

@group apps
@endpoint POST /v1/apps/{application-id}/jobs/export
@required {ApplicationId: str, ExportJobRequest: ExportJobRequest}
@returns(200) {ExportJobResponse: ExportJobResponse{ApplicationId: str, CompletedPieces: int?, CompletionDate: str?, CreationDate: str, Definition: ExportJobResource{RoleArn: str, S3UrlPrefix: str, SegmentId: str?, SegmentVersion: int?}, FailedPieces: int?, Failures: [str]?, Id: str, JobStatus: str, TotalFailures: int?, TotalPieces: int?, TotalProcessed: int?, Type: str}}

@endpoint POST /v1/apps/{application-id}/jobs/import
@required {ApplicationId: str, ImportJobRequest: ImportJobRequest}
@returns(200) {ImportJobResponse: ImportJobResponse{ApplicationId: str, CompletedPieces: int?, CompletionDate: str?, CreationDate: str, Definition: ImportJobResource{DefineSegment: bool?, ExternalId: str?, Format: str, RegisterEndpoints: bool?, RoleArn: str, S3Url: str, SegmentId: str?, SegmentName: str?}, FailedPieces: int?, Failures: [str]?, Id: str, JobStatus: str, TotalFailures: int?, TotalPieces: int?, TotalProcessed: int?, Type: str}}

@endgroup

@group templates
@endpoint POST /v1/templates/{template-name}/inapp
@required {TemplateName: str, InAppTemplateRequest: InAppTemplateRequest}
@returns(200) {TemplateCreateMessageBody: TemplateCreateMessageBody{Arn: str?, Message: str?, RequestID: str?}}

@endgroup

@group apps
@endpoint POST /v1/apps/{application-id}/journeys
@required {ApplicationId: str, WriteJourneyRequest: WriteJourneyRequest}
@returns(200) {JourneyResponse: JourneyResponse{Activities: map<str,Activity>?, ApplicationId: str, CreationDate: str?, Id: str, LastModifiedDate: str?, Limits: JourneyLimits?{DailyCap: int?, EndpointReentryCap: int?, MessagesPerSecond: int?, EndpointReentryInterval: str?, TimeframeCap: JourneyTimeframeCap?{Cap: int?, Days: int?}, TotalCap: int?}, LocalTime: bool?, Name: str, QuietTime: QuietTime?{End: str?, Start: str?}, RefreshFrequency: str?, Schedule: JourneySchedule?{EndTime: str(timestamp)?, StartTime: str(timestamp)?, Timezone: str?}, StartActivity: str?, StartCondition: StartCondition?{Description: str?, EventStartCondition: EventStartCondition?{EventFilter: EventFilter?, SegmentId: str?}, SegmentStartCondition: SegmentCondition?{SegmentId: str}}, State: str?, tags: map<str,str>?, WaitForQuietTime: bool?, RefreshOnSegmentUpdate: bool?, JourneyChannelSettings: JourneyChannelSettings?{ConnectCampaignArn: str?, ConnectCampaignExecutionRoleArn: str?}, SendingSchedule: bool?, OpenHours: OpenHours?{EMAIL: map<str,[OpenHoursRule]>?, SMS: map<str,[OpenHoursRule]>?, PUSH: map<str,[OpenHoursRule]>?, VOICE: map<str,[OpenHoursRule]>?, CUSTOM: map<str,[OpenHoursRule]>?}, ClosedDays: ClosedDays?{EMAIL: [ClosedDaysRule]?, SMS: [ClosedDaysRule]?, PUSH: [ClosedDaysRule]?, VOICE: [ClosedDaysRule]?, CUSTOM: [ClosedDaysRule]?}, TimezoneEstimationMethods: [str]?}}

@endgroup

@group templates
@endpoint POST /v1/templates/{template-name}/push
@required {TemplateName: str, PushNotificationTemplateRequest: PushNotificationTemplateRequest}
@returns(200) {CreateTemplateMessageBody: CreateTemplateMessageBody{Arn: str?, Message: str?, RequestID: str?}}

@endgroup

@group recommenders
@endpoint POST /v1/recommenders
@required {CreateRecommenderConfiguration: CreateRecommenderConfiguration}
@returns(200) {RecommenderConfigurationResponse: RecommenderConfigurationResponse{Attributes: map<str,str>?, CreationDate: str, Description: str?, Id: str, LastModifiedDate: str, Name: str?, RecommendationProviderIdType: str?, RecommendationProviderRoleArn: str, RecommendationProviderUri: str, RecommendationTransformerUri: str?, RecommendationsDisplayName: str?, RecommendationsPerMessage: int?}}

@endgroup

@group apps
@endpoint POST /v1/apps/{application-id}/segments
@required {ApplicationId: str, WriteSegmentRequest: WriteSegmentRequest}
@returns(200) {SegmentResponse: SegmentResponse{ApplicationId: str, Arn: str, CreationDate: str, Dimensions: SegmentDimensions?{Attributes: map<str,AttributeDimension>?, Behavior: SegmentBehaviors?{Recency: RecencyDimension?}, Demographic: SegmentDemographics?{AppVersion: SetDimension?, Channel: SetDimension?, DeviceType: SetDimension?, Make: SetDimension?, Model: SetDimension?, Platform: SetDimension?}, Location: SegmentLocation?{Country: SetDimension?, GPSPoint: GPSPointDimension?}, Metrics: map<str,MetricDimension>?, UserAttributes: map<str,AttributeDimension>?}, Id: str, ImportDefinition: SegmentImportResource?{ChannelCounts: map<str,int>?, ExternalId: str, Format: str, RoleArn: str, S3Url: str, Size: int}, LastModifiedDate: str?, Name: str?, SegmentGroups: SegmentGroupList?{Groups: [SegmentGroup]?, Include: str?}, SegmentType: str, tags: map<str,str>?, Version: int?}}

@endgroup

@group templates
@endpoint POST /v1/templates/{template-name}/sms
@required {TemplateName: str, SMSTemplateRequest: SMSTemplateRequest}
@returns(200) {CreateTemplateMessageBody: CreateTemplateMessageBody{Arn: str?, Message: str?, RequestID: str?}}

@endpoint POST /v1/templates/{template-name}/voice
@required {TemplateName: str, VoiceTemplateRequest: VoiceTemplateRequest}
@returns(200) {CreateTemplateMessageBody: CreateTemplateMessageBody{Arn: str?, Message: str?, RequestID: str?}}

@endgroup

@group apps
@endpoint DELETE /v1/apps/{application-id}/channels/adm
@required {ApplicationId: str}
@returns(200) {ADMChannelResponse: ADMChannelResponse{ApplicationId: str?, CreationDate: str?, Enabled: bool?, HasCredential: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint DELETE /v1/apps/{application-id}/channels/apns
@required {ApplicationId: str}
@returns(200) {APNSChannelResponse: APNSChannelResponse{ApplicationId: str?, CreationDate: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasTokenKey: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint DELETE /v1/apps/{application-id}/channels/apns_sandbox
@required {ApplicationId: str}
@returns(200) {APNSSandboxChannelResponse: APNSSandboxChannelResponse{ApplicationId: str?, CreationDate: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasTokenKey: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint DELETE /v1/apps/{application-id}/channels/apns_voip
@required {ApplicationId: str}
@returns(200) {APNSVoipChannelResponse: APNSVoipChannelResponse{ApplicationId: str?, CreationDate: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasTokenKey: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint DELETE /v1/apps/{application-id}/channels/apns_voip_sandbox
@required {ApplicationId: str}
@returns(200) {APNSVoipSandboxChannelResponse: APNSVoipSandboxChannelResponse{ApplicationId: str?, CreationDate: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasTokenKey: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint DELETE /v1/apps/{application-id}
@required {ApplicationId: str}
@returns(200) {ApplicationResponse: ApplicationResponse{Arn: str, Id: str, Name: str, tags: map<str,str>?, CreationDate: str?}}

@endpoint DELETE /v1/apps/{application-id}/channels/baidu
@required {ApplicationId: str}
@returns(200) {BaiduChannelResponse: BaiduChannelResponse{ApplicationId: str?, CreationDate: str?, Credential: str, Enabled: bool?, HasCredential: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint DELETE /v1/apps/{application-id}/campaigns/{campaign-id}
@required {ApplicationId: str, CampaignId: str}
@returns(200) {CampaignResponse: CampaignResponse{AdditionalTreatments: [TreatmentResource]?, ApplicationId: str, Arn: str, CreationDate: str, CustomDeliveryConfiguration: CustomDeliveryConfiguration?{DeliveryUri: str, EndpointTypes: [str]?}, DefaultState: CampaignState?{CampaignStatus: str?}, Description: str?, HoldoutPercent: int?, Hook: CampaignHook?{LambdaFunctionName: str?, Mode: str?, WebUrl: str?}, Id: str, IsPaused: bool?, LastModifiedDate: str, Limits: CampaignLimits?{Daily: int?, MaximumDuration: int?, MessagesPerSecond: int?, Total: int?, Session: int?}, MessageConfiguration: MessageConfiguration?{ADMMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, APNSMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, BaiduMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, CustomMessage: CampaignCustomMessage?{Data: str?}, DefaultMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, EmailMessage: CampaignEmailMessage?{Body: str?, FromAddress: str?, Headers: [MessageHeader]?, HtmlBody: str?, Title: str?}, GCMMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, SMSMessage: CampaignSmsMessage?{Body: str?, MessageType: str?, OriginationNumber: str?, SenderId: str?, EntityId: str?, TemplateId: str?}, InAppMessage: CampaignInAppMessage?{Body: str?, Content: [InAppMessageContent]?, CustomConfig: map<str,str>?, Layout: str?}}, Name: str?, Schedule: Schedule?{EndTime: str?, EventFilter: CampaignEventFilter?{Dimensions: EventDimensions, FilterType: str}, Frequency: str?, IsLocalTime: bool?, QuietTime: QuietTime?{End: str?, Start: str?}, StartTime: str, Timezone: str?}, SegmentId: str, SegmentVersion: int, State: CampaignState?{CampaignStatus: str?}, tags: map<str,str>?, TemplateConfiguration: TemplateConfiguration?{EmailTemplate: Template?{Name: str?, Version: str?}, PushTemplate: Template?{Name: str?, Version: str?}, SMSTemplate: Template?{Name: str?, Version: str?}, VoiceTemplate: Template?{Name: str?, Version: str?}, InAppTemplate: Template?{Name: str?, Version: str?}}, TreatmentDescription: str?, TreatmentName: str?, Version: int?, Priority: int?}}

@endpoint DELETE /v1/apps/{application-id}/channels/email
@required {ApplicationId: str}
@returns(200) {EmailChannelResponse: EmailChannelResponse{ApplicationId: str?, ConfigurationSet: str?, CreationDate: str?, Enabled: bool?, FromAddress: str?, HasCredential: bool?, Id: str?, Identity: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, MessagesPerSecond: int?, Platform: str, RoleArn: str?, OrchestrationSendingRoleArn: str?, Version: int?}}

@endgroup

@group templates
@endpoint DELETE /v1/templates/{template-name}/email
@required {TemplateName: str}
@optional {version: str}
@returns(200) {MessageBody: MessageBody{Message: str?, RequestID: str?}}

@endgroup

@group apps
@endpoint DELETE /v1/apps/{application-id}/endpoints/{endpoint-id}
@required {ApplicationId: str, EndpointId: str}
@returns(200) {EndpointResponse: EndpointResponse{Address: str?, ApplicationId: str?, Attributes: map<str,[str]>?, ChannelType: str?, CohortId: str?, CreationDate: str?, Demographic: EndpointDemographic?{AppVersion: str?, Locale: str?, Make: str?, Model: str?, ModelVersion: str?, Platform: str?, PlatformVersion: str?, Timezone: str?}, EffectiveDate: str?, EndpointStatus: str?, Id: str?, Location: EndpointLocation?{City: str?, Country: str?, Latitude: num(f64)?, Longitude: num(f64)?, PostalCode: str?, Region: str?}, Metrics: map<str,num(f64)>?, OptOut: str?, RequestId: str?, User: EndpointUser?{UserAttributes: map<str,[str]>?, UserId: str?}}}

@endpoint DELETE /v1/apps/{application-id}/eventstream
@required {ApplicationId: str}
@returns(200) {EventStream: EventStream{ApplicationId: str, DestinationStreamArn: str, ExternalId: str?, LastModifiedDate: str?, LastUpdatedBy: str?, RoleArn: str}}

@endpoint DELETE /v1/apps/{application-id}/channels/gcm
@required {ApplicationId: str}
@returns(200) {GCMChannelResponse: GCMChannelResponse{ApplicationId: str?, CreationDate: str?, Credential: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasFcmServiceCredentials: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endgroup

@group templates
@endpoint DELETE /v1/templates/{template-name}/inapp
@required {TemplateName: str}
@optional {version: str}
@returns(200) {MessageBody: MessageBody{Message: str?, RequestID: str?}}

@endgroup

@group apps
@endpoint DELETE /v1/apps/{application-id}/journeys/{journey-id}
@required {ApplicationId: str, JourneyId: str}
@returns(200) {JourneyResponse: JourneyResponse{Activities: map<str,Activity>?, ApplicationId: str, CreationDate: str?, Id: str, LastModifiedDate: str?, Limits: JourneyLimits?{DailyCap: int?, EndpointReentryCap: int?, MessagesPerSecond: int?, EndpointReentryInterval: str?, TimeframeCap: JourneyTimeframeCap?{Cap: int?, Days: int?}, TotalCap: int?}, LocalTime: bool?, Name: str, QuietTime: QuietTime?{End: str?, Start: str?}, RefreshFrequency: str?, Schedule: JourneySchedule?{EndTime: str(timestamp)?, StartTime: str(timestamp)?, Timezone: str?}, StartActivity: str?, StartCondition: StartCondition?{Description: str?, EventStartCondition: EventStartCondition?{EventFilter: EventFilter?, SegmentId: str?}, SegmentStartCondition: SegmentCondition?{SegmentId: str}}, State: str?, tags: map<str,str>?, WaitForQuietTime: bool?, RefreshOnSegmentUpdate: bool?, JourneyChannelSettings: JourneyChannelSettings?{ConnectCampaignArn: str?, ConnectCampaignExecutionRoleArn: str?}, SendingSchedule: bool?, OpenHours: OpenHours?{EMAIL: map<str,[OpenHoursRule]>?, SMS: map<str,[OpenHoursRule]>?, PUSH: map<str,[OpenHoursRule]>?, VOICE: map<str,[OpenHoursRule]>?, CUSTOM: map<str,[OpenHoursRule]>?}, ClosedDays: ClosedDays?{EMAIL: [ClosedDaysRule]?, SMS: [ClosedDaysRule]?, PUSH: [ClosedDaysRule]?, VOICE: [ClosedDaysRule]?, CUSTOM: [ClosedDaysRule]?}, TimezoneEstimationMethods: [str]?}}

@endgroup

@group templates
@endpoint DELETE /v1/templates/{template-name}/push
@required {TemplateName: str}
@optional {version: str}
@returns(200) {MessageBody: MessageBody{Message: str?, RequestID: str?}}

@endgroup

@group recommenders
@endpoint DELETE /v1/recommenders/{recommender-id}
@required {RecommenderId: str}
@returns(200) {RecommenderConfigurationResponse: RecommenderConfigurationResponse{Attributes: map<str,str>?, CreationDate: str, Description: str?, Id: str, LastModifiedDate: str, Name: str?, RecommendationProviderIdType: str?, RecommendationProviderRoleArn: str, RecommendationProviderUri: str, RecommendationTransformerUri: str?, RecommendationsDisplayName: str?, RecommendationsPerMessage: int?}}

@endgroup

@group apps
@endpoint DELETE /v1/apps/{application-id}/segments/{segment-id}
@required {ApplicationId: str, SegmentId: str}
@returns(200) {SegmentResponse: SegmentResponse{ApplicationId: str, Arn: str, CreationDate: str, Dimensions: SegmentDimensions?{Attributes: map<str,AttributeDimension>?, Behavior: SegmentBehaviors?{Recency: RecencyDimension?}, Demographic: SegmentDemographics?{AppVersion: SetDimension?, Channel: SetDimension?, DeviceType: SetDimension?, Make: SetDimension?, Model: SetDimension?, Platform: SetDimension?}, Location: SegmentLocation?{Country: SetDimension?, GPSPoint: GPSPointDimension?}, Metrics: map<str,MetricDimension>?, UserAttributes: map<str,AttributeDimension>?}, Id: str, ImportDefinition: SegmentImportResource?{ChannelCounts: map<str,int>?, ExternalId: str, Format: str, RoleArn: str, S3Url: str, Size: int}, LastModifiedDate: str?, Name: str?, SegmentGroups: SegmentGroupList?{Groups: [SegmentGroup]?, Include: str?}, SegmentType: str, tags: map<str,str>?, Version: int?}}

@endpoint DELETE /v1/apps/{application-id}/channels/sms
@required {ApplicationId: str}
@returns(200) {SMSChannelResponse: SMSChannelResponse{ApplicationId: str?, CreationDate: str?, Enabled: bool?, HasCredential: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, PromotionalMessagesPerSecond: int?, SenderId: str?, ShortCode: str?, TransactionalMessagesPerSecond: int?, Version: int?}}

@endgroup

@group templates
@endpoint DELETE /v1/templates/{template-name}/sms
@required {TemplateName: str}
@optional {version: str}
@returns(200) {MessageBody: MessageBody{Message: str?, RequestID: str?}}

@endgroup

@group apps
@endpoint DELETE /v1/apps/{application-id}/users/{user-id}
@required {ApplicationId: str, UserId: str}
@returns(200) {EndpointsResponse: EndpointsResponse{Item: [EndpointResponse]}}

@endpoint DELETE /v1/apps/{application-id}/channels/voice
@required {ApplicationId: str}
@returns(200) {VoiceChannelResponse: VoiceChannelResponse{ApplicationId: str?, CreationDate: str?, Enabled: bool?, HasCredential: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endgroup

@group templates
@endpoint DELETE /v1/templates/{template-name}/voice
@required {TemplateName: str}
@optional {version: str}
@returns(200) {MessageBody: MessageBody{Message: str?, RequestID: str?}}

@endgroup

@group apps
@endpoint GET /v1/apps/{application-id}/channels/adm
@required {ApplicationId: str}
@returns(200) {ADMChannelResponse: ADMChannelResponse{ApplicationId: str?, CreationDate: str?, Enabled: bool?, HasCredential: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint GET /v1/apps/{application-id}/channels/apns
@required {ApplicationId: str}
@returns(200) {APNSChannelResponse: APNSChannelResponse{ApplicationId: str?, CreationDate: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasTokenKey: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint GET /v1/apps/{application-id}/channels/apns_sandbox
@required {ApplicationId: str}
@returns(200) {APNSSandboxChannelResponse: APNSSandboxChannelResponse{ApplicationId: str?, CreationDate: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasTokenKey: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint GET /v1/apps/{application-id}/channels/apns_voip
@required {ApplicationId: str}
@returns(200) {APNSVoipChannelResponse: APNSVoipChannelResponse{ApplicationId: str?, CreationDate: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasTokenKey: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint GET /v1/apps/{application-id}/channels/apns_voip_sandbox
@required {ApplicationId: str}
@returns(200) {APNSVoipSandboxChannelResponse: APNSVoipSandboxChannelResponse{ApplicationId: str?, CreationDate: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasTokenKey: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint GET /v1/apps/{application-id}
@required {ApplicationId: str}
@returns(200) {ApplicationResponse: ApplicationResponse{Arn: str, Id: str, Name: str, tags: map<str,str>?, CreationDate: str?}}

@endpoint GET /v1/apps/{application-id}/kpis/daterange/{kpi-name}
@required {ApplicationId: str, KpiName: str}
@optional {end-time: str(timestamp), next-token: str, page-size: str, start-time: str(timestamp)}
@returns(200) {ApplicationDateRangeKpiResponse: ApplicationDateRangeKpiResponse{ApplicationId: str, EndTime: str(timestamp), KpiName: str, KpiResult: BaseKpiResult{Rows: [ResultRow]}, NextToken: str?, StartTime: str(timestamp)}}

@endpoint GET /v1/apps/{application-id}/settings
@required {ApplicationId: str}
@returns(200) {ApplicationSettingsResource: ApplicationSettingsResource{ApplicationId: str, CampaignHook: CampaignHook?{LambdaFunctionName: str?, Mode: str?, WebUrl: str?}, LastModifiedDate: str?, Limits: CampaignLimits?{Daily: int?, MaximumDuration: int?, MessagesPerSecond: int?, Total: int?, Session: int?}, QuietTime: QuietTime?{End: str?, Start: str?}, JourneyLimits: ApplicationSettingsJourneyLimits?{DailyCap: int?, TimeframeCap: JourneyTimeframeCap?{Cap: int?, Days: int?}, TotalCap: int?}}}

@endpoint GET /v1/apps
@optional {page-size: str, token: str}
@returns(200) {ApplicationsResponse: ApplicationsResponse{Item: [ApplicationResponse]?, NextToken: str?}}

@endpoint GET /v1/apps/{application-id}/channels/baidu
@required {ApplicationId: str}
@returns(200) {BaiduChannelResponse: BaiduChannelResponse{ApplicationId: str?, CreationDate: str?, Credential: str, Enabled: bool?, HasCredential: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint GET /v1/apps/{application-id}/campaigns/{campaign-id}
@required {ApplicationId: str, CampaignId: str}
@returns(200) {CampaignResponse: CampaignResponse{AdditionalTreatments: [TreatmentResource]?, ApplicationId: str, Arn: str, CreationDate: str, CustomDeliveryConfiguration: CustomDeliveryConfiguration?{DeliveryUri: str, EndpointTypes: [str]?}, DefaultState: CampaignState?{CampaignStatus: str?}, Description: str?, HoldoutPercent: int?, Hook: CampaignHook?{LambdaFunctionName: str?, Mode: str?, WebUrl: str?}, Id: str, IsPaused: bool?, LastModifiedDate: str, Limits: CampaignLimits?{Daily: int?, MaximumDuration: int?, MessagesPerSecond: int?, Total: int?, Session: int?}, MessageConfiguration: MessageConfiguration?{ADMMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, APNSMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, BaiduMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, CustomMessage: CampaignCustomMessage?{Data: str?}, DefaultMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, EmailMessage: CampaignEmailMessage?{Body: str?, FromAddress: str?, Headers: [MessageHeader]?, HtmlBody: str?, Title: str?}, GCMMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, SMSMessage: CampaignSmsMessage?{Body: str?, MessageType: str?, OriginationNumber: str?, SenderId: str?, EntityId: str?, TemplateId: str?}, InAppMessage: CampaignInAppMessage?{Body: str?, Content: [InAppMessageContent]?, CustomConfig: map<str,str>?, Layout: str?}}, Name: str?, Schedule: Schedule?{EndTime: str?, EventFilter: CampaignEventFilter?{Dimensions: EventDimensions, FilterType: str}, Frequency: str?, IsLocalTime: bool?, QuietTime: QuietTime?{End: str?, Start: str?}, StartTime: str, Timezone: str?}, SegmentId: str, SegmentVersion: int, State: CampaignState?{CampaignStatus: str?}, tags: map<str,str>?, TemplateConfiguration: TemplateConfiguration?{EmailTemplate: Template?{Name: str?, Version: str?}, PushTemplate: Template?{Name: str?, Version: str?}, SMSTemplate: Template?{Name: str?, Version: str?}, VoiceTemplate: Template?{Name: str?, Version: str?}, InAppTemplate: Template?{Name: str?, Version: str?}}, TreatmentDescription: str?, TreatmentName: str?, Version: int?, Priority: int?}}

@endpoint GET /v1/apps/{application-id}/campaigns/{campaign-id}/activities
@required {ApplicationId: str, CampaignId: str}
@optional {page-size: str, token: str}
@returns(200) {ActivitiesResponse: ActivitiesResponse{Item: [ActivityResponse], NextToken: str?}}

@endpoint GET /v1/apps/{application-id}/campaigns/{campaign-id}/kpis/daterange/{kpi-name}
@required {ApplicationId: str, CampaignId: str, KpiName: str}
@optional {end-time: str(timestamp), next-token: str, page-size: str, start-time: str(timestamp)}
@returns(200) {CampaignDateRangeKpiResponse: CampaignDateRangeKpiResponse{ApplicationId: str, CampaignId: str, EndTime: str(timestamp), KpiName: str, KpiResult: BaseKpiResult{Rows: [ResultRow]}, NextToken: str?, StartTime: str(timestamp)}}

@endpoint GET /v1/apps/{application-id}/campaigns/{campaign-id}/versions/{version}
@required {ApplicationId: str, CampaignId: str, Version: str}
@returns(200) {CampaignResponse: CampaignResponse{AdditionalTreatments: [TreatmentResource]?, ApplicationId: str, Arn: str, CreationDate: str, CustomDeliveryConfiguration: CustomDeliveryConfiguration?{DeliveryUri: str, EndpointTypes: [str]?}, DefaultState: CampaignState?{CampaignStatus: str?}, Description: str?, HoldoutPercent: int?, Hook: CampaignHook?{LambdaFunctionName: str?, Mode: str?, WebUrl: str?}, Id: str, IsPaused: bool?, LastModifiedDate: str, Limits: CampaignLimits?{Daily: int?, MaximumDuration: int?, MessagesPerSecond: int?, Total: int?, Session: int?}, MessageConfiguration: MessageConfiguration?{ADMMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, APNSMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, BaiduMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, CustomMessage: CampaignCustomMessage?{Data: str?}, DefaultMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, EmailMessage: CampaignEmailMessage?{Body: str?, FromAddress: str?, Headers: [MessageHeader]?, HtmlBody: str?, Title: str?}, GCMMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, SMSMessage: CampaignSmsMessage?{Body: str?, MessageType: str?, OriginationNumber: str?, SenderId: str?, EntityId: str?, TemplateId: str?}, InAppMessage: CampaignInAppMessage?{Body: str?, Content: [InAppMessageContent]?, CustomConfig: map<str,str>?, Layout: str?}}, Name: str?, Schedule: Schedule?{EndTime: str?, EventFilter: CampaignEventFilter?{Dimensions: EventDimensions, FilterType: str}, Frequency: str?, IsLocalTime: bool?, QuietTime: QuietTime?{End: str?, Start: str?}, StartTime: str, Timezone: str?}, SegmentId: str, SegmentVersion: int, State: CampaignState?{CampaignStatus: str?}, tags: map<str,str>?, TemplateConfiguration: TemplateConfiguration?{EmailTemplate: Template?{Name: str?, Version: str?}, PushTemplate: Template?{Name: str?, Version: str?}, SMSTemplate: Template?{Name: str?, Version: str?}, VoiceTemplate: Template?{Name: str?, Version: str?}, InAppTemplate: Template?{Name: str?, Version: str?}}, TreatmentDescription: str?, TreatmentName: str?, Version: int?, Priority: int?}}

@endpoint GET /v1/apps/{application-id}/campaigns/{campaign-id}/versions
@required {ApplicationId: str, CampaignId: str}
@optional {page-size: str, token: str}
@returns(200) {CampaignsResponse: CampaignsResponse{Item: [CampaignResponse], NextToken: str?}}

@endpoint GET /v1/apps/{application-id}/campaigns
@required {ApplicationId: str}
@optional {page-size: str, token: str}
@returns(200) {CampaignsResponse: CampaignsResponse{Item: [CampaignResponse], NextToken: str?}}

@endpoint GET /v1/apps/{application-id}/channels
@required {ApplicationId: str}
@returns(200) {ChannelsResponse: ChannelsResponse{Channels: map<str,ChannelResponse>}}

@endpoint GET /v1/apps/{application-id}/channels/email
@required {ApplicationId: str}
@returns(200) {EmailChannelResponse: EmailChannelResponse{ApplicationId: str?, ConfigurationSet: str?, CreationDate: str?, Enabled: bool?, FromAddress: str?, HasCredential: bool?, Id: str?, Identity: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, MessagesPerSecond: int?, Platform: str, RoleArn: str?, OrchestrationSendingRoleArn: str?, Version: int?}}

@endgroup

@group templates
@endpoint GET /v1/templates/{template-name}/email
@required {TemplateName: str}
@optional {version: str}
@returns(200) {EmailTemplateResponse: EmailTemplateResponse{Arn: str?, CreationDate: str, DefaultSubstitutions: str?, HtmlPart: str?, LastModifiedDate: str, RecommenderId: str?, Subject: str?, Headers: [MessageHeader]?, tags: map<str,str>?, TemplateDescription: str?, TemplateName: str, TemplateType: str, TextPart: str?, Version: str?}}

@endgroup

@group apps
@endpoint GET /v1/apps/{application-id}/endpoints/{endpoint-id}
@required {ApplicationId: str, EndpointId: str}
@returns(200) {EndpointResponse: EndpointResponse{Address: str?, ApplicationId: str?, Attributes: map<str,[str]>?, ChannelType: str?, CohortId: str?, CreationDate: str?, Demographic: EndpointDemographic?{AppVersion: str?, Locale: str?, Make: str?, Model: str?, ModelVersion: str?, Platform: str?, PlatformVersion: str?, Timezone: str?}, EffectiveDate: str?, EndpointStatus: str?, Id: str?, Location: EndpointLocation?{City: str?, Country: str?, Latitude: num(f64)?, Longitude: num(f64)?, PostalCode: str?, Region: str?}, Metrics: map<str,num(f64)>?, OptOut: str?, RequestId: str?, User: EndpointUser?{UserAttributes: map<str,[str]>?, UserId: str?}}}

@endpoint GET /v1/apps/{application-id}/eventstream
@required {ApplicationId: str}
@returns(200) {EventStream: EventStream{ApplicationId: str, DestinationStreamArn: str, ExternalId: str?, LastModifiedDate: str?, LastUpdatedBy: str?, RoleArn: str}}

@endpoint GET /v1/apps/{application-id}/jobs/export/{job-id}
@required {ApplicationId: str, JobId: str}
@returns(200) {ExportJobResponse: ExportJobResponse{ApplicationId: str, CompletedPieces: int?, CompletionDate: str?, CreationDate: str, Definition: ExportJobResource{RoleArn: str, S3UrlPrefix: str, SegmentId: str?, SegmentVersion: int?}, FailedPieces: int?, Failures: [str]?, Id: str, JobStatus: str, TotalFailures: int?, TotalPieces: int?, TotalProcessed: int?, Type: str}}

@endpoint GET /v1/apps/{application-id}/jobs/export
@required {ApplicationId: str}
@optional {page-size: str, token: str}
@returns(200) {ExportJobsResponse: ExportJobsResponse{Item: [ExportJobResponse], NextToken: str?}}

@endpoint GET /v1/apps/{application-id}/channels/gcm
@required {ApplicationId: str}
@returns(200) {GCMChannelResponse: GCMChannelResponse{ApplicationId: str?, CreationDate: str?, Credential: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasFcmServiceCredentials: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint GET /v1/apps/{application-id}/jobs/import/{job-id}
@required {ApplicationId: str, JobId: str}
@returns(200) {ImportJobResponse: ImportJobResponse{ApplicationId: str, CompletedPieces: int?, CompletionDate: str?, CreationDate: str, Definition: ImportJobResource{DefineSegment: bool?, ExternalId: str?, Format: str, RegisterEndpoints: bool?, RoleArn: str, S3Url: str, SegmentId: str?, SegmentName: str?}, FailedPieces: int?, Failures: [str]?, Id: str, JobStatus: str, TotalFailures: int?, TotalPieces: int?, TotalProcessed: int?, Type: str}}

@endpoint GET /v1/apps/{application-id}/jobs/import
@required {ApplicationId: str}
@optional {page-size: str, token: str}
@returns(200) {ImportJobsResponse: ImportJobsResponse{Item: [ImportJobResponse], NextToken: str?}}

@endpoint GET /v1/apps/{application-id}/endpoints/{endpoint-id}/inappmessages
@required {ApplicationId: str, EndpointId: str}
@returns(200) {InAppMessagesResponse: InAppMessagesResponse{InAppMessageCampaigns: [InAppMessageCampaign]?}}

@endgroup

@group templates
@endpoint GET /v1/templates/{template-name}/inapp
@required {TemplateName: str}
@optional {version: str}
@returns(200) {InAppTemplateResponse: InAppTemplateResponse{Arn: str?, Content: [InAppMessageContent]?, CreationDate: str, CustomConfig: map<str,str>?, LastModifiedDate: str, Layout: str?, tags: map<str,str>?, TemplateDescription: str?, TemplateName: str, TemplateType: str, Version: str?}}

@endgroup

@group apps
@endpoint GET /v1/apps/{application-id}/journeys/{journey-id}
@required {ApplicationId: str, JourneyId: str}
@returns(200) {JourneyResponse: JourneyResponse{Activities: map<str,Activity>?, ApplicationId: str, CreationDate: str?, Id: str, LastModifiedDate: str?, Limits: JourneyLimits?{DailyCap: int?, EndpointReentryCap: int?, MessagesPerSecond: int?, EndpointReentryInterval: str?, TimeframeCap: JourneyTimeframeCap?{Cap: int?, Days: int?}, TotalCap: int?}, LocalTime: bool?, Name: str, QuietTime: QuietTime?{End: str?, Start: str?}, RefreshFrequency: str?, Schedule: JourneySchedule?{EndTime: str(timestamp)?, StartTime: str(timestamp)?, Timezone: str?}, StartActivity: str?, StartCondition: StartCondition?{Description: str?, EventStartCondition: EventStartCondition?{EventFilter: EventFilter?, SegmentId: str?}, SegmentStartCondition: SegmentCondition?{SegmentId: str}}, State: str?, tags: map<str,str>?, WaitForQuietTime: bool?, RefreshOnSegmentUpdate: bool?, JourneyChannelSettings: JourneyChannelSettings?{ConnectCampaignArn: str?, ConnectCampaignExecutionRoleArn: str?}, SendingSchedule: bool?, OpenHours: OpenHours?{EMAIL: map<str,[OpenHoursRule]>?, SMS: map<str,[OpenHoursRule]>?, PUSH: map<str,[OpenHoursRule]>?, VOICE: map<str,[OpenHoursRule]>?, CUSTOM: map<str,[OpenHoursRule]>?}, ClosedDays: ClosedDays?{EMAIL: [ClosedDaysRule]?, SMS: [ClosedDaysRule]?, PUSH: [ClosedDaysRule]?, VOICE: [ClosedDaysRule]?, CUSTOM: [ClosedDaysRule]?}, TimezoneEstimationMethods: [str]?}}

@endpoint GET /v1/apps/{application-id}/journeys/{journey-id}/kpis/daterange/{kpi-name}
@required {ApplicationId: str, JourneyId: str, KpiName: str}
@optional {end-time: str(timestamp), next-token: str, page-size: str, start-time: str(timestamp)}
@returns(200) {JourneyDateRangeKpiResponse: JourneyDateRangeKpiResponse{ApplicationId: str, EndTime: str(timestamp), JourneyId: str, KpiName: str, KpiResult: BaseKpiResult{Rows: [ResultRow]}, NextToken: str?, StartTime: str(timestamp)}}

@endpoint GET /v1/apps/{application-id}/journeys/{journey-id}/activities/{journey-activity-id}/execution-metrics
@required {ApplicationId: str, JourneyActivityId: str, JourneyId: str}
@optional {next-token: str, page-size: str}
@returns(200) {JourneyExecutionActivityMetricsResponse: JourneyExecutionActivityMetricsResponse{ActivityType: str, ApplicationId: str, JourneyActivityId: str, JourneyId: str, LastEvaluatedTime: str, Metrics: map<str,str>}}

@endpoint GET /v1/apps/{application-id}/journeys/{journey-id}/execution-metrics
@required {ApplicationId: str, JourneyId: str}
@optional {next-token: str, page-size: str}
@returns(200) {JourneyExecutionMetricsResponse: JourneyExecutionMetricsResponse{ApplicationId: str, JourneyId: str, LastEvaluatedTime: str, Metrics: map<str,str>}}

@endpoint GET /v1/apps/{application-id}/journeys/{journey-id}/runs/{run-id}/activities/{journey-activity-id}/execution-metrics
@required {ApplicationId: str, JourneyActivityId: str, JourneyId: str, RunId: str}
@optional {next-token: str, page-size: str}
@returns(200) {JourneyRunExecutionActivityMetricsResponse: JourneyRunExecutionActivityMetricsResponse{ActivityType: str, ApplicationId: str, JourneyActivityId: str, JourneyId: str, LastEvaluatedTime: str, Metrics: map<str,str>, RunId: str}}

@endpoint GET /v1/apps/{application-id}/journeys/{journey-id}/runs/{run-id}/execution-metrics
@required {ApplicationId: str, JourneyId: str, RunId: str}
@optional {next-token: str, page-size: str}
@returns(200) {JourneyRunExecutionMetricsResponse: JourneyRunExecutionMetricsResponse{ApplicationId: str, JourneyId: str, LastEvaluatedTime: str, Metrics: map<str,str>, RunId: str}}

@endpoint GET /v1/apps/{application-id}/journeys/{journey-id}/runs
@required {ApplicationId: str, JourneyId: str}
@optional {page-size: str, token: str}
@returns(200) {JourneyRunsResponse: JourneyRunsResponse{Item: [JourneyRunResponse], NextToken: str?}}

@endgroup

@group templates
@endpoint GET /v1/templates/{template-name}/push
@required {TemplateName: str}
@optional {version: str}
@returns(200) {PushNotificationTemplateResponse: PushNotificationTemplateResponse{ADM: AndroidPushNotificationTemplate?{Action: str?, Body: str?, ImageIconUrl: str?, ImageUrl: str?, RawContent: str?, SmallImageIconUrl: str?, Sound: str?, Title: str?, Url: str?}, APNS: APNSPushNotificationTemplate?{Action: str?, Body: str?, MediaUrl: str?, RawContent: str?, Sound: str?, Title: str?, Url: str?}, Arn: str?, Baidu: AndroidPushNotificationTemplate?{Action: str?, Body: str?, ImageIconUrl: str?, ImageUrl: str?, RawContent: str?, SmallImageIconUrl: str?, Sound: str?, Title: str?, Url: str?}, CreationDate: str, Default: DefaultPushNotificationTemplate?{Action: str?, Body: str?, Sound: str?, Title: str?, Url: str?}, DefaultSubstitutions: str?, GCM: AndroidPushNotificationTemplate?{Action: str?, Body: str?, ImageIconUrl: str?, ImageUrl: str?, RawContent: str?, SmallImageIconUrl: str?, Sound: str?, Title: str?, Url: str?}, LastModifiedDate: str, RecommenderId: str?, tags: map<str,str>?, TemplateDescription: str?, TemplateName: str, TemplateType: str, Version: str?}}

@endgroup

@group recommenders
@endpoint GET /v1/recommenders/{recommender-id}
@required {RecommenderId: str}
@returns(200) {RecommenderConfigurationResponse: RecommenderConfigurationResponse{Attributes: map<str,str>?, CreationDate: str, Description: str?, Id: str, LastModifiedDate: str, Name: str?, RecommendationProviderIdType: str?, RecommendationProviderRoleArn: str, RecommendationProviderUri: str, RecommendationTransformerUri: str?, RecommendationsDisplayName: str?, RecommendationsPerMessage: int?}}

@endpoint GET /v1/recommenders
@optional {page-size: str, token: str}
@returns(200) {ListRecommenderConfigurationsResponse: ListRecommenderConfigurationsResponse{Item: [RecommenderConfigurationResponse], NextToken: str?}}

@endgroup

@group apps
@endpoint GET /v1/apps/{application-id}/segments/{segment-id}
@required {ApplicationId: str, SegmentId: str}
@returns(200) {SegmentResponse: SegmentResponse{ApplicationId: str, Arn: str, CreationDate: str, Dimensions: SegmentDimensions?{Attributes: map<str,AttributeDimension>?, Behavior: SegmentBehaviors?{Recency: RecencyDimension?}, Demographic: SegmentDemographics?{AppVersion: SetDimension?, Channel: SetDimension?, DeviceType: SetDimension?, Make: SetDimension?, Model: SetDimension?, Platform: SetDimension?}, Location: SegmentLocation?{Country: SetDimension?, GPSPoint: GPSPointDimension?}, Metrics: map<str,MetricDimension>?, UserAttributes: map<str,AttributeDimension>?}, Id: str, ImportDefinition: SegmentImportResource?{ChannelCounts: map<str,int>?, ExternalId: str, Format: str, RoleArn: str, S3Url: str, Size: int}, LastModifiedDate: str?, Name: str?, SegmentGroups: SegmentGroupList?{Groups: [SegmentGroup]?, Include: str?}, SegmentType: str, tags: map<str,str>?, Version: int?}}

@endpoint GET /v1/apps/{application-id}/segments/{segment-id}/jobs/export
@required {ApplicationId: str, SegmentId: str}
@optional {page-size: str, token: str}
@returns(200) {ExportJobsResponse: ExportJobsResponse{Item: [ExportJobResponse], NextToken: str?}}

@endpoint GET /v1/apps/{application-id}/segments/{segment-id}/jobs/import
@required {ApplicationId: str, SegmentId: str}
@optional {page-size: str, token: str}
@returns(200) {ImportJobsResponse: ImportJobsResponse{Item: [ImportJobResponse], NextToken: str?}}

@endpoint GET /v1/apps/{application-id}/segments/{segment-id}/versions/{version}
@required {ApplicationId: str, SegmentId: str, Version: str}
@returns(200) {SegmentResponse: SegmentResponse{ApplicationId: str, Arn: str, CreationDate: str, Dimensions: SegmentDimensions?{Attributes: map<str,AttributeDimension>?, Behavior: SegmentBehaviors?{Recency: RecencyDimension?}, Demographic: SegmentDemographics?{AppVersion: SetDimension?, Channel: SetDimension?, DeviceType: SetDimension?, Make: SetDimension?, Model: SetDimension?, Platform: SetDimension?}, Location: SegmentLocation?{Country: SetDimension?, GPSPoint: GPSPointDimension?}, Metrics: map<str,MetricDimension>?, UserAttributes: map<str,AttributeDimension>?}, Id: str, ImportDefinition: SegmentImportResource?{ChannelCounts: map<str,int>?, ExternalId: str, Format: str, RoleArn: str, S3Url: str, Size: int}, LastModifiedDate: str?, Name: str?, SegmentGroups: SegmentGroupList?{Groups: [SegmentGroup]?, Include: str?}, SegmentType: str, tags: map<str,str>?, Version: int?}}

@endpoint GET /v1/apps/{application-id}/segments/{segment-id}/versions
@required {ApplicationId: str, SegmentId: str}
@optional {page-size: str, token: str}
@returns(200) {SegmentsResponse: SegmentsResponse{Item: [SegmentResponse], NextToken: str?}}

@endpoint GET /v1/apps/{application-id}/segments
@required {ApplicationId: str}
@optional {page-size: str, token: str}
@returns(200) {SegmentsResponse: SegmentsResponse{Item: [SegmentResponse], NextToken: str?}}

@endpoint GET /v1/apps/{application-id}/channels/sms
@required {ApplicationId: str}
@returns(200) {SMSChannelResponse: SMSChannelResponse{ApplicationId: str?, CreationDate: str?, Enabled: bool?, HasCredential: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, PromotionalMessagesPerSecond: int?, SenderId: str?, ShortCode: str?, TransactionalMessagesPerSecond: int?, Version: int?}}

@endgroup

@group templates
@endpoint GET /v1/templates/{template-name}/sms
@required {TemplateName: str}
@optional {version: str}
@returns(200) {SMSTemplateResponse: SMSTemplateResponse{Arn: str?, Body: str?, CreationDate: str, DefaultSubstitutions: str?, LastModifiedDate: str, RecommenderId: str?, tags: map<str,str>?, TemplateDescription: str?, TemplateName: str, TemplateType: str, Version: str?}}

@endgroup

@group apps
@endpoint GET /v1/apps/{application-id}/users/{user-id}
@required {ApplicationId: str, UserId: str}
@returns(200) {EndpointsResponse: EndpointsResponse{Item: [EndpointResponse]}}

@endpoint GET /v1/apps/{application-id}/channels/voice
@required {ApplicationId: str}
@returns(200) {VoiceChannelResponse: VoiceChannelResponse{ApplicationId: str?, CreationDate: str?, Enabled: bool?, HasCredential: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endgroup

@group templates
@endpoint GET /v1/templates/{template-name}/voice
@required {TemplateName: str}
@optional {version: str}
@returns(200) {VoiceTemplateResponse: VoiceTemplateResponse{Arn: str?, Body: str?, CreationDate: str, DefaultSubstitutions: str?, LanguageCode: str?, LastModifiedDate: str, tags: map<str,str>?, TemplateDescription: str?, TemplateName: str, TemplateType: str, Version: str?, VoiceId: str?}}

@endgroup

@group apps
@endpoint GET /v1/apps/{application-id}/journeys
@required {ApplicationId: str}
@optional {page-size: str, token: str}
@returns(200) {JourneysResponse: JourneysResponse{Item: [JourneyResponse], NextToken: str?}}

@endgroup

@group tags
@endpoint GET /v1/tags/{resource-arn}
@required {ResourceArn: str}
@returns(200) {TagsModel: TagsModel{tags: map<str,str>}}

@endgroup

@group templates
@endpoint GET /v1/templates/{template-name}/{template-type}/versions
@required {TemplateName: str, TemplateType: str}
@optional {next-token: str, page-size: str}
@returns(200) {TemplateVersionsResponse: TemplateVersionsResponse{Item: [TemplateVersionResponse], Message: str?, NextToken: str?, RequestID: str?}}

@endpoint GET /v1/templates
@optional {next-token: str, page-size: str, prefix: str, template-type: str}
@returns(200) {TemplatesResponse: TemplatesResponse{Item: [TemplateResponse], NextToken: str?}}

@endgroup

@group phone
@endpoint POST /v1/phone/number/validate
@required {NumberValidateRequest: NumberValidateRequest}
@returns(200) {NumberValidateResponse: NumberValidateResponse{Carrier: str?, City: str?, CleansedPhoneNumberE164: str?, CleansedPhoneNumberNational: str?, Country: str?, CountryCodeIso2: str?, CountryCodeNumeric: str?, County: str?, OriginalCountryCodeIso2: str?, OriginalPhoneNumber: str?, PhoneType: str?, PhoneTypeCode: int?, Timezone: str?, ZipCode: str?}}

@endgroup

@group apps
@endpoint POST /v1/apps/{application-id}/eventstream
@required {ApplicationId: str, WriteEventStream: WriteEventStream}
@returns(200) {EventStream: EventStream{ApplicationId: str, DestinationStreamArn: str, ExternalId: str?, LastModifiedDate: str?, LastUpdatedBy: str?, RoleArn: str}}

@endpoint POST /v1/apps/{application-id}/events
@required {ApplicationId: str, EventsRequest: EventsRequest}
@returns(200) {EventsResponse: EventsResponse{Results: map<str,ItemResponse>?}}

@endpoint PUT /v1/apps/{application-id}/attributes/{attribute-type}
@required {ApplicationId: str, AttributeType: str, UpdateAttributesRequest: UpdateAttributesRequest}
@returns(200) {AttributesResource: AttributesResource{ApplicationId: str, AttributeType: str, Attributes: [str]?}}

@endpoint POST /v1/apps/{application-id}/messages
@required {ApplicationId: str, MessageRequest: MessageRequest}
@returns(200) {MessageResponse: MessageResponse{ApplicationId: str, EndpointResult: map<str,EndpointMessageResult>?, RequestId: str?, Result: map<str,MessageResult>?}}

@endpoint POST /v1/apps/{application-id}/otp
@required {ApplicationId: str, SendOTPMessageRequestParameters: SendOTPMessageRequestParameters}
@returns(200) {MessageResponse: MessageResponse{ApplicationId: str, EndpointResult: map<str,EndpointMessageResult>?, RequestId: str?, Result: map<str,MessageResult>?}}

@endpoint POST /v1/apps/{application-id}/users-messages
@required {ApplicationId: str, SendUsersMessageRequest: SendUsersMessageRequest}
@returns(200) {SendUsersMessageResponse: SendUsersMessageResponse{ApplicationId: str, RequestId: str?, Result: map<str,map<str,EndpointMessageResult>>?}}

@endgroup

@group tags
@endpoint POST /v1/tags/{resource-arn}
@required {ResourceArn: str, TagsModel: TagsModel}

@endpoint DELETE /v1/tags/{resource-arn}
@required {ResourceArn: str, tagKeys: [str]}

@endgroup

@group apps
@endpoint PUT /v1/apps/{application-id}/channels/adm
@required {ApplicationId: str, ADMChannelRequest: ADMChannelRequest}
@returns(200) {ADMChannelResponse: ADMChannelResponse{ApplicationId: str?, CreationDate: str?, Enabled: bool?, HasCredential: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint PUT /v1/apps/{application-id}/channels/apns
@required {ApplicationId: str, APNSChannelRequest: APNSChannelRequest}
@returns(200) {APNSChannelResponse: APNSChannelResponse{ApplicationId: str?, CreationDate: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasTokenKey: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint PUT /v1/apps/{application-id}/channels/apns_sandbox
@required {ApplicationId: str, APNSSandboxChannelRequest: APNSSandboxChannelRequest}
@returns(200) {APNSSandboxChannelResponse: APNSSandboxChannelResponse{ApplicationId: str?, CreationDate: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasTokenKey: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint PUT /v1/apps/{application-id}/channels/apns_voip
@required {ApplicationId: str, APNSVoipChannelRequest: APNSVoipChannelRequest}
@returns(200) {APNSVoipChannelResponse: APNSVoipChannelResponse{ApplicationId: str?, CreationDate: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasTokenKey: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint PUT /v1/apps/{application-id}/channels/apns_voip_sandbox
@required {ApplicationId: str, APNSVoipSandboxChannelRequest: APNSVoipSandboxChannelRequest}
@returns(200) {APNSVoipSandboxChannelResponse: APNSVoipSandboxChannelResponse{ApplicationId: str?, CreationDate: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasTokenKey: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint PUT /v1/apps/{application-id}/settings
@required {ApplicationId: str, WriteApplicationSettingsRequest: WriteApplicationSettingsRequest}
@returns(200) {ApplicationSettingsResource: ApplicationSettingsResource{ApplicationId: str, CampaignHook: CampaignHook?{LambdaFunctionName: str?, Mode: str?, WebUrl: str?}, LastModifiedDate: str?, Limits: CampaignLimits?{Daily: int?, MaximumDuration: int?, MessagesPerSecond: int?, Total: int?, Session: int?}, QuietTime: QuietTime?{End: str?, Start: str?}, JourneyLimits: ApplicationSettingsJourneyLimits?{DailyCap: int?, TimeframeCap: JourneyTimeframeCap?{Cap: int?, Days: int?}, TotalCap: int?}}}

@endpoint PUT /v1/apps/{application-id}/channels/baidu
@required {ApplicationId: str, BaiduChannelRequest: BaiduChannelRequest}
@returns(200) {BaiduChannelResponse: BaiduChannelResponse{ApplicationId: str?, CreationDate: str?, Credential: str, Enabled: bool?, HasCredential: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endpoint PUT /v1/apps/{application-id}/campaigns/{campaign-id}
@required {ApplicationId: str, CampaignId: str, WriteCampaignRequest: WriteCampaignRequest}
@returns(200) {CampaignResponse: CampaignResponse{AdditionalTreatments: [TreatmentResource]?, ApplicationId: str, Arn: str, CreationDate: str, CustomDeliveryConfiguration: CustomDeliveryConfiguration?{DeliveryUri: str, EndpointTypes: [str]?}, DefaultState: CampaignState?{CampaignStatus: str?}, Description: str?, HoldoutPercent: int?, Hook: CampaignHook?{LambdaFunctionName: str?, Mode: str?, WebUrl: str?}, Id: str, IsPaused: bool?, LastModifiedDate: str, Limits: CampaignLimits?{Daily: int?, MaximumDuration: int?, MessagesPerSecond: int?, Total: int?, Session: int?}, MessageConfiguration: MessageConfiguration?{ADMMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, APNSMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, BaiduMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, CustomMessage: CampaignCustomMessage?{Data: str?}, DefaultMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, EmailMessage: CampaignEmailMessage?{Body: str?, FromAddress: str?, Headers: [MessageHeader]?, HtmlBody: str?, Title: str?}, GCMMessage: Message?{Action: str?, Body: str?, ImageIconUrl: str?, ImageSmallIconUrl: str?, ImageUrl: str?, JsonBody: str?, MediaUrl: str?, RawContent: str?, SilentPush: bool?, TimeToLive: int?, Title: str?, Url: str?}, SMSMessage: CampaignSmsMessage?{Body: str?, MessageType: str?, OriginationNumber: str?, SenderId: str?, EntityId: str?, TemplateId: str?}, InAppMessage: CampaignInAppMessage?{Body: str?, Content: [InAppMessageContent]?, CustomConfig: map<str,str>?, Layout: str?}}, Name: str?, Schedule: Schedule?{EndTime: str?, EventFilter: CampaignEventFilter?{Dimensions: EventDimensions, FilterType: str}, Frequency: str?, IsLocalTime: bool?, QuietTime: QuietTime?{End: str?, Start: str?}, StartTime: str, Timezone: str?}, SegmentId: str, SegmentVersion: int, State: CampaignState?{CampaignStatus: str?}, tags: map<str,str>?, TemplateConfiguration: TemplateConfiguration?{EmailTemplate: Template?{Name: str?, Version: str?}, PushTemplate: Template?{Name: str?, Version: str?}, SMSTemplate: Template?{Name: str?, Version: str?}, VoiceTemplate: Template?{Name: str?, Version: str?}, InAppTemplate: Template?{Name: str?, Version: str?}}, TreatmentDescription: str?, TreatmentName: str?, Version: int?, Priority: int?}}

@endpoint PUT /v1/apps/{application-id}/channels/email
@required {ApplicationId: str, EmailChannelRequest: EmailChannelRequest}
@returns(200) {EmailChannelResponse: EmailChannelResponse{ApplicationId: str?, ConfigurationSet: str?, CreationDate: str?, Enabled: bool?, FromAddress: str?, HasCredential: bool?, Id: str?, Identity: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, MessagesPerSecond: int?, Platform: str, RoleArn: str?, OrchestrationSendingRoleArn: str?, Version: int?}}

@endgroup

@group templates
@endpoint PUT /v1/templates/{template-name}/email
@required {TemplateName: str, EmailTemplateRequest: EmailTemplateRequest}
@optional {create-new-version: bool, version: str}
@returns(200) {MessageBody: MessageBody{Message: str?, RequestID: str?}}

@endgroup

@group apps
@endpoint PUT /v1/apps/{application-id}/endpoints/{endpoint-id}
@required {ApplicationId: str, EndpointId: str, EndpointRequest: EndpointRequest}
@returns(200) {MessageBody: MessageBody{Message: str?, RequestID: str?}}

@endpoint PUT /v1/apps/{application-id}/endpoints
@required {ApplicationId: str, EndpointBatchRequest: EndpointBatchRequest}
@returns(200) {MessageBody: MessageBody{Message: str?, RequestID: str?}}

@endpoint PUT /v1/apps/{application-id}/channels/gcm
@required {ApplicationId: str, GCMChannelRequest: GCMChannelRequest}
@returns(200) {GCMChannelResponse: GCMChannelResponse{ApplicationId: str?, CreationDate: str?, Credential: str?, DefaultAuthenticationMethod: str?, Enabled: bool?, HasCredential: bool?, HasFcmServiceCredentials: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endgroup

@group templates
@endpoint PUT /v1/templates/{template-name}/inapp
@required {TemplateName: str, InAppTemplateRequest: InAppTemplateRequest}
@optional {create-new-version: bool, version: str}
@returns(200) {MessageBody: MessageBody{Message: str?, RequestID: str?}}

@endgroup

@group apps
@endpoint PUT /v1/apps/{application-id}/journeys/{journey-id}
@required {ApplicationId: str, JourneyId: str, WriteJourneyRequest: WriteJourneyRequest}
@returns(200) {JourneyResponse: JourneyResponse{Activities: map<str,Activity>?, ApplicationId: str, CreationDate: str?, Id: str, LastModifiedDate: str?, Limits: JourneyLimits?{DailyCap: int?, EndpointReentryCap: int?, MessagesPerSecond: int?, EndpointReentryInterval: str?, TimeframeCap: JourneyTimeframeCap?{Cap: int?, Days: int?}, TotalCap: int?}, LocalTime: bool?, Name: str, QuietTime: QuietTime?{End: str?, Start: str?}, RefreshFrequency: str?, Schedule: JourneySchedule?{EndTime: str(timestamp)?, StartTime: str(timestamp)?, Timezone: str?}, StartActivity: str?, StartCondition: StartCondition?{Description: str?, EventStartCondition: EventStartCondition?{EventFilter: EventFilter?, SegmentId: str?}, SegmentStartCondition: SegmentCondition?{SegmentId: str}}, State: str?, tags: map<str,str>?, WaitForQuietTime: bool?, RefreshOnSegmentUpdate: bool?, JourneyChannelSettings: JourneyChannelSettings?{ConnectCampaignArn: str?, ConnectCampaignExecutionRoleArn: str?}, SendingSchedule: bool?, OpenHours: OpenHours?{EMAIL: map<str,[OpenHoursRule]>?, SMS: map<str,[OpenHoursRule]>?, PUSH: map<str,[OpenHoursRule]>?, VOICE: map<str,[OpenHoursRule]>?, CUSTOM: map<str,[OpenHoursRule]>?}, ClosedDays: ClosedDays?{EMAIL: [ClosedDaysRule]?, SMS: [ClosedDaysRule]?, PUSH: [ClosedDaysRule]?, VOICE: [ClosedDaysRule]?, CUSTOM: [ClosedDaysRule]?}, TimezoneEstimationMethods: [str]?}}

@endpoint PUT /v1/apps/{application-id}/journeys/{journey-id}/state
@required {ApplicationId: str, JourneyId: str, JourneyStateRequest: JourneyStateRequest}
@returns(200) {JourneyResponse: JourneyResponse{Activities: map<str,Activity>?, ApplicationId: str, CreationDate: str?, Id: str, LastModifiedDate: str?, Limits: JourneyLimits?{DailyCap: int?, EndpointReentryCap: int?, MessagesPerSecond: int?, EndpointReentryInterval: str?, TimeframeCap: JourneyTimeframeCap?{Cap: int?, Days: int?}, TotalCap: int?}, LocalTime: bool?, Name: str, QuietTime: QuietTime?{End: str?, Start: str?}, RefreshFrequency: str?, Schedule: JourneySchedule?{EndTime: str(timestamp)?, StartTime: str(timestamp)?, Timezone: str?}, StartActivity: str?, StartCondition: StartCondition?{Description: str?, EventStartCondition: EventStartCondition?{EventFilter: EventFilter?, SegmentId: str?}, SegmentStartCondition: SegmentCondition?{SegmentId: str}}, State: str?, tags: map<str,str>?, WaitForQuietTime: bool?, RefreshOnSegmentUpdate: bool?, JourneyChannelSettings: JourneyChannelSettings?{ConnectCampaignArn: str?, ConnectCampaignExecutionRoleArn: str?}, SendingSchedule: bool?, OpenHours: OpenHours?{EMAIL: map<str,[OpenHoursRule]>?, SMS: map<str,[OpenHoursRule]>?, PUSH: map<str,[OpenHoursRule]>?, VOICE: map<str,[OpenHoursRule]>?, CUSTOM: map<str,[OpenHoursRule]>?}, ClosedDays: ClosedDays?{EMAIL: [ClosedDaysRule]?, SMS: [ClosedDaysRule]?, PUSH: [ClosedDaysRule]?, VOICE: [ClosedDaysRule]?, CUSTOM: [ClosedDaysRule]?}, TimezoneEstimationMethods: [str]?}}

@endgroup

@group templates
@endpoint PUT /v1/templates/{template-name}/push
@required {TemplateName: str, PushNotificationTemplateRequest: PushNotificationTemplateRequest}
@optional {create-new-version: bool, version: str}
@returns(200) {MessageBody: MessageBody{Message: str?, RequestID: str?}}

@endgroup

@group recommenders
@endpoint PUT /v1/recommenders/{recommender-id}
@required {RecommenderId: str, UpdateRecommenderConfiguration: UpdateRecommenderConfiguration}
@returns(200) {RecommenderConfigurationResponse: RecommenderConfigurationResponse{Attributes: map<str,str>?, CreationDate: str, Description: str?, Id: str, LastModifiedDate: str, Name: str?, RecommendationProviderIdType: str?, RecommendationProviderRoleArn: str, RecommendationProviderUri: str, RecommendationTransformerUri: str?, RecommendationsDisplayName: str?, RecommendationsPerMessage: int?}}

@endgroup

@group apps
@endpoint PUT /v1/apps/{application-id}/segments/{segment-id}
@required {ApplicationId: str, SegmentId: str, WriteSegmentRequest: WriteSegmentRequest}
@returns(200) {SegmentResponse: SegmentResponse{ApplicationId: str, Arn: str, CreationDate: str, Dimensions: SegmentDimensions?{Attributes: map<str,AttributeDimension>?, Behavior: SegmentBehaviors?{Recency: RecencyDimension?}, Demographic: SegmentDemographics?{AppVersion: SetDimension?, Channel: SetDimension?, DeviceType: SetDimension?, Make: SetDimension?, Model: SetDimension?, Platform: SetDimension?}, Location: SegmentLocation?{Country: SetDimension?, GPSPoint: GPSPointDimension?}, Metrics: map<str,MetricDimension>?, UserAttributes: map<str,AttributeDimension>?}, Id: str, ImportDefinition: SegmentImportResource?{ChannelCounts: map<str,int>?, ExternalId: str, Format: str, RoleArn: str, S3Url: str, Size: int}, LastModifiedDate: str?, Name: str?, SegmentGroups: SegmentGroupList?{Groups: [SegmentGroup]?, Include: str?}, SegmentType: str, tags: map<str,str>?, Version: int?}}

@endpoint PUT /v1/apps/{application-id}/channels/sms
@required {ApplicationId: str, SMSChannelRequest: SMSChannelRequest}
@returns(200) {SMSChannelResponse: SMSChannelResponse{ApplicationId: str?, CreationDate: str?, Enabled: bool?, HasCredential: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, PromotionalMessagesPerSecond: int?, SenderId: str?, ShortCode: str?, TransactionalMessagesPerSecond: int?, Version: int?}}

@endgroup

@group templates
@endpoint PUT /v1/templates/{template-name}/sms
@required {TemplateName: str, SMSTemplateRequest: SMSTemplateRequest}
@optional {create-new-version: bool, version: str}
@returns(200) {MessageBody: MessageBody{Message: str?, RequestID: str?}}

@endpoint PUT /v1/templates/{template-name}/{template-type}/active-version
@required {TemplateName: str, TemplateType: str, TemplateActiveVersionRequest: TemplateActiveVersionRequest}
@returns(200) {MessageBody: MessageBody{Message: str?, RequestID: str?}}

@endgroup

@group apps
@endpoint PUT /v1/apps/{application-id}/channels/voice
@required {ApplicationId: str, VoiceChannelRequest: VoiceChannelRequest}
@returns(200) {VoiceChannelResponse: VoiceChannelResponse{ApplicationId: str?, CreationDate: str?, Enabled: bool?, HasCredential: bool?, Id: str?, IsArchived: bool?, LastModifiedBy: str?, LastModifiedDate: str?, Platform: str, Version: int?}}

@endgroup

@group templates
@endpoint PUT /v1/templates/{template-name}/voice
@required {TemplateName: str, VoiceTemplateRequest: VoiceTemplateRequest}
@optional {create-new-version: bool, version: str}
@returns(200) {MessageBody: MessageBody{Message: str?, RequestID: str?}}

@endgroup

@group apps
@endpoint POST /v1/apps/{application-id}/verify-otp
@required {ApplicationId: str, VerifyOTPMessageRequestParameters: VerifyOTPMessageRequestParameters}
@returns(200) {VerificationResponse: VerificationResponse{Valid: bool?}}

@endgroup

@end
