// Package notifications provides primitives to interact the openapi HTTP API.
//
// Code generated by go-sdk-codegen DO NOT EDIT.
package notifications

// CreateDestinationRequest defines model for CreateDestinationRequest.
type CreateDestinationRequest struct {

	// A developer-defined name to help identify this destination.
	Name string `json:"name"`

	// The information required to create a destination resource. Applications should use one resource type (sqs or eventBridge) per destination.
	ResourceSpecification DestinationResourceSpecification `json:"resourceSpecification"`
}

// CreateDestinationResponse defines model for CreateDestinationResponse.
type CreateDestinationResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors *ErrorList `json:"errors,omitempty"`

	// Represents a destination created when you call the createDestination operation.
	Payload *Destination `json:"payload,omitempty"`
}

// CreateSubscriptionRequest defines model for CreateSubscriptionRequest.
type CreateSubscriptionRequest struct {

	// The identifier for the destination where notifications will be delivered.
	DestinationId *string `json:"destinationId,omitempty"`

	// The version of the payload object to be used in the notification.
	PayloadVersion *string `json:"payloadVersion,omitempty"`
}

// CreateSubscriptionResponse defines model for CreateSubscriptionResponse.
type CreateSubscriptionResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors *ErrorList `json:"errors,omitempty"`

	// Represents a subscription to receive notifications.
	Payload *Subscription `json:"payload,omitempty"`
}

// DeleteDestinationResponse defines model for DeleteDestinationResponse.
type DeleteDestinationResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors *ErrorList `json:"errors,omitempty"`
}

// DeleteSubscriptionByIdResponse defines model for DeleteSubscriptionByIdResponse.
type DeleteSubscriptionByIdResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors *ErrorList `json:"errors,omitempty"`
}

// Destination defines model for Destination.
type Destination struct {

	// The destination identifier generated when you created the destination.
	DestinationId string `json:"destinationId"`

	// The developer-defined name for this destination.
	Name string `json:"name"`

	// The destination resource types.
	Resource DestinationResource `json:"resource"`
}

// DestinationList defines model for DestinationList.
type DestinationList []Destination

// DestinationResource defines model for DestinationResource.
type DestinationResource struct {

	// Represents an Amazon EventBridge destination.
	EventBridge *EventBridgeResource `json:"eventBridge,omitempty"`

	// The information required to create an Amazon Simple Queue Service (Amazon SQS) queue destination.
	Sqs *SqsResource `json:"sqs,omitempty"`
}

// DestinationResourceSpecification defines model for DestinationResourceSpecification.
type DestinationResourceSpecification struct {

	// The information required to create an Amazon EventBridge destination.
	EventBridge *EventBridgeResourceSpecification `json:"eventBridge,omitempty"`

	// The information required to create an Amazon Simple Queue Service (Amazon SQS) queue destination.
	Sqs *SqsResource `json:"sqs,omitempty"`
}

// Error defines model for Error.
type Error struct {

	// An error code that identifies the type of error that occurred.
	Code string `json:"code"`

	// Additional details that can help the caller understand or fix the issue.
	Details *string `json:"details,omitempty"`

	// A message that describes the error condition in a human-readable form.
	Message string `json:"message"`
}

// ErrorList defines model for ErrorList.
type ErrorList []Error

// EventBridgeResource defines model for EventBridgeResource.
type EventBridgeResource struct {

	// The identifier for the AWS account that is responsible for charges related to receiving notifications.
	AccountId string `json:"accountId"`

	// The name of the partner event source associated with the destination.
	Name string `json:"name"`

	// The AWS region in which you receive the notifications. For AWS regions that are supported in Amazon EventBridge, see https://docs.aws.amazon.com/general/latest/gr/ev.html.
	Region string `json:"region"`
}

// EventBridgeResourceSpecification defines model for EventBridgeResourceSpecification.
type EventBridgeResourceSpecification struct {

	// The identifier for the AWS account that is responsible for charges related to receiving notifications.
	AccountId string `json:"accountId"`

	// The AWS region in which you will be receiving the notifications.
	Region string `json:"region"`
}

// GetDestinationResponse defines model for GetDestinationResponse.
type GetDestinationResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors *ErrorList `json:"errors,omitempty"`

	// Represents a destination created when you call the createDestination operation.
	Payload *Destination `json:"payload,omitempty"`
}

// GetDestinationsResponse defines model for GetDestinationsResponse.
type GetDestinationsResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors *ErrorList `json:"errors,omitempty"`

	// A list of destinations.
	Payload *DestinationList `json:"payload,omitempty"`
}

// GetSubscriptionByIdResponse defines model for GetSubscriptionByIdResponse.
type GetSubscriptionByIdResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors *ErrorList `json:"errors,omitempty"`

	// Represents a subscription to receive notifications.
	Payload *Subscription `json:"payload,omitempty"`
}

// GetSubscriptionResponse defines model for GetSubscriptionResponse.
type GetSubscriptionResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors *ErrorList `json:"errors,omitempty"`

	// Represents a subscription to receive notifications.
	Payload *Subscription `json:"payload,omitempty"`
}

// SqsResource defines model for SqsResource.
type SqsResource struct {

	// The Amazon Resource Name (ARN) associated with the SQS queue.
	Arn string `json:"arn"`
}

// Subscription defines model for Subscription.
type Subscription struct {

	// The identifier for the destination where notifications will be delivered.
	DestinationId string `json:"destinationId"`

	// The version of the payload object to be used in the notification.
	PayloadVersion string `json:"payloadVersion"`

	// The subscription identifier generated when the subscription is created.
	SubscriptionId string `json:"subscriptionId"`
}

// NotificationType defines model for NotificationType.
type NotificationType string

// List of NotificationType
const (
	NotificationType_ANY_OFFER_CHANGED            NotificationType = "ANY_OFFER_CHANGED"
	NotificationType_B2B_ANY_OFFER_CHANGED        NotificationType = "B2B_ANY_OFFER_CHANGED"
	NotificationType_BRANDED_ITEM_CONTENT_CHANGE  NotificationType = "BRANDED_ITEM_CONTENT_CHANGE"
	NotificationType_FBA_OUTBOUND_SHIPMENT_STATUS NotificationType = "FBA_OUTBOUND_SHIPMENT_STATUS"
	NotificationType_FEED_PROCESSING_FINISHED     NotificationType = "FEED_PROCESSING_FINISHED"
	NotificationType_FEE_PROMOTION                NotificationType = "FEE_PROMOTION"
	NotificationType_FULFILLMENT_ORDER_STATUS     NotificationType = "FULFILLMENT_ORDER_STATUS"
	NotificationType_ITEM_PRODUCT_TYPE_CHANGE     NotificationType = "ITEM_PRODUCT_TYPE_CHANGE"
	NotificationType_MFN_ORDER_STATUS_CHANGE      NotificationType = "MFN_ORDER_STATUS_CHANGE"
	NotificationType_REPORT_PROCESSING_FINISHED   NotificationType = "REPORT_PROCESSING_FINISHED"
)

// CreateDestinationJSONBody defines parameters for CreateDestination.
type CreateDestinationJSONBody CreateDestinationRequest

// CreateSubscriptionJSONBody defines parameters for CreateSubscription.
type CreateSubscriptionJSONBody CreateSubscriptionRequest

// CreateDestinationRequestBody defines body for CreateDestination for application/json ContentType.
type CreateDestinationJSONRequestBody CreateDestinationJSONBody

// CreateSubscriptionRequestBody defines body for CreateSubscription for application/json ContentType.
type CreateSubscriptionJSONRequestBody CreateSubscriptionJSONBody
