// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.

package shared

import (
	"encoding/json"
	"errors"
	"fmt"
	"github.com/airbytehq/terraform-provider-airbyte/internal/sdk/internal/utils"
	"time"
)

// SourceFacebookMarketingUpdateValidAdStatuses - An enumeration.
type SourceFacebookMarketingUpdateValidAdStatuses string

const (
	SourceFacebookMarketingUpdateValidAdStatusesActive             SourceFacebookMarketingUpdateValidAdStatuses = "ACTIVE"
	SourceFacebookMarketingUpdateValidAdStatusesAdsetPaused        SourceFacebookMarketingUpdateValidAdStatuses = "ADSET_PAUSED"
	SourceFacebookMarketingUpdateValidAdStatusesArchived           SourceFacebookMarketingUpdateValidAdStatuses = "ARCHIVED"
	SourceFacebookMarketingUpdateValidAdStatusesCampaignPaused     SourceFacebookMarketingUpdateValidAdStatuses = "CAMPAIGN_PAUSED"
	SourceFacebookMarketingUpdateValidAdStatusesDeleted            SourceFacebookMarketingUpdateValidAdStatuses = "DELETED"
	SourceFacebookMarketingUpdateValidAdStatusesDisapproved        SourceFacebookMarketingUpdateValidAdStatuses = "DISAPPROVED"
	SourceFacebookMarketingUpdateValidAdStatusesInProcess          SourceFacebookMarketingUpdateValidAdStatuses = "IN_PROCESS"
	SourceFacebookMarketingUpdateValidAdStatusesPaused             SourceFacebookMarketingUpdateValidAdStatuses = "PAUSED"
	SourceFacebookMarketingUpdateValidAdStatusesPendingBillingInfo SourceFacebookMarketingUpdateValidAdStatuses = "PENDING_BILLING_INFO"
	SourceFacebookMarketingUpdateValidAdStatusesPendingReview      SourceFacebookMarketingUpdateValidAdStatuses = "PENDING_REVIEW"
	SourceFacebookMarketingUpdateValidAdStatusesPreapproved        SourceFacebookMarketingUpdateValidAdStatuses = "PREAPPROVED"
	SourceFacebookMarketingUpdateValidAdStatusesWithIssues         SourceFacebookMarketingUpdateValidAdStatuses = "WITH_ISSUES"
)

func (e SourceFacebookMarketingUpdateValidAdStatuses) ToPointer() *SourceFacebookMarketingUpdateValidAdStatuses {
	return &e
}
func (e *SourceFacebookMarketingUpdateValidAdStatuses) UnmarshalJSON(data []byte) error {
	var v string
	if err := json.Unmarshal(data, &v); err != nil {
		return err
	}
	switch v {
	case "ACTIVE":
		fallthrough
	case "ADSET_PAUSED":
		fallthrough
	case "ARCHIVED":
		fallthrough
	case "CAMPAIGN_PAUSED":
		fallthrough
	case "DELETED":
		fallthrough
	case "DISAPPROVED":
		fallthrough
	case "IN_PROCESS":
		fallthrough
	case "PAUSED":
		fallthrough
	case "PENDING_BILLING_INFO":
		fallthrough
	case "PENDING_REVIEW":
		fallthrough
	case "PREAPPROVED":
		fallthrough
	case "WITH_ISSUES":
		*e = SourceFacebookMarketingUpdateValidAdStatuses(v)
		return nil
	default:
		return fmt.Errorf("invalid value for SourceFacebookMarketingUpdateValidAdStatuses: %v", v)
	}
}

// SourceFacebookMarketingUpdateValidAdSetStatuses - An enumeration.
type SourceFacebookMarketingUpdateValidAdSetStatuses string

const (
	SourceFacebookMarketingUpdateValidAdSetStatusesActive         SourceFacebookMarketingUpdateValidAdSetStatuses = "ACTIVE"
	SourceFacebookMarketingUpdateValidAdSetStatusesArchived       SourceFacebookMarketingUpdateValidAdSetStatuses = "ARCHIVED"
	SourceFacebookMarketingUpdateValidAdSetStatusesCampaignPaused SourceFacebookMarketingUpdateValidAdSetStatuses = "CAMPAIGN_PAUSED"
	SourceFacebookMarketingUpdateValidAdSetStatusesDeleted        SourceFacebookMarketingUpdateValidAdSetStatuses = "DELETED"
	SourceFacebookMarketingUpdateValidAdSetStatusesInProcess      SourceFacebookMarketingUpdateValidAdSetStatuses = "IN_PROCESS"
	SourceFacebookMarketingUpdateValidAdSetStatusesPaused         SourceFacebookMarketingUpdateValidAdSetStatuses = "PAUSED"
	SourceFacebookMarketingUpdateValidAdSetStatusesWithIssues     SourceFacebookMarketingUpdateValidAdSetStatuses = "WITH_ISSUES"
)

func (e SourceFacebookMarketingUpdateValidAdSetStatuses) ToPointer() *SourceFacebookMarketingUpdateValidAdSetStatuses {
	return &e
}
func (e *SourceFacebookMarketingUpdateValidAdSetStatuses) UnmarshalJSON(data []byte) error {
	var v string
	if err := json.Unmarshal(data, &v); err != nil {
		return err
	}
	switch v {
	case "ACTIVE":
		fallthrough
	case "ARCHIVED":
		fallthrough
	case "CAMPAIGN_PAUSED":
		fallthrough
	case "DELETED":
		fallthrough
	case "IN_PROCESS":
		fallthrough
	case "PAUSED":
		fallthrough
	case "WITH_ISSUES":
		*e = SourceFacebookMarketingUpdateValidAdSetStatuses(v)
		return nil
	default:
		return fmt.Errorf("invalid value for SourceFacebookMarketingUpdateValidAdSetStatuses: %v", v)
	}
}

// SourceFacebookMarketingUpdateValidCampaignStatuses - An enumeration.
type SourceFacebookMarketingUpdateValidCampaignStatuses string

const (
	SourceFacebookMarketingUpdateValidCampaignStatusesActive     SourceFacebookMarketingUpdateValidCampaignStatuses = "ACTIVE"
	SourceFacebookMarketingUpdateValidCampaignStatusesArchived   SourceFacebookMarketingUpdateValidCampaignStatuses = "ARCHIVED"
	SourceFacebookMarketingUpdateValidCampaignStatusesDeleted    SourceFacebookMarketingUpdateValidCampaignStatuses = "DELETED"
	SourceFacebookMarketingUpdateValidCampaignStatusesInProcess  SourceFacebookMarketingUpdateValidCampaignStatuses = "IN_PROCESS"
	SourceFacebookMarketingUpdateValidCampaignStatusesPaused     SourceFacebookMarketingUpdateValidCampaignStatuses = "PAUSED"
	SourceFacebookMarketingUpdateValidCampaignStatusesWithIssues SourceFacebookMarketingUpdateValidCampaignStatuses = "WITH_ISSUES"
)

func (e SourceFacebookMarketingUpdateValidCampaignStatuses) ToPointer() *SourceFacebookMarketingUpdateValidCampaignStatuses {
	return &e
}
func (e *SourceFacebookMarketingUpdateValidCampaignStatuses) UnmarshalJSON(data []byte) error {
	var v string
	if err := json.Unmarshal(data, &v); err != nil {
		return err
	}
	switch v {
	case "ACTIVE":
		fallthrough
	case "ARCHIVED":
		fallthrough
	case "DELETED":
		fallthrough
	case "IN_PROCESS":
		fallthrough
	case "PAUSED":
		fallthrough
	case "WITH_ISSUES":
		*e = SourceFacebookMarketingUpdateValidCampaignStatuses(v)
		return nil
	default:
		return fmt.Errorf("invalid value for SourceFacebookMarketingUpdateValidCampaignStatuses: %v", v)
	}
}

type SourceFacebookMarketingUpdateSchemasAuthType string

const (
	SourceFacebookMarketingUpdateSchemasAuthTypeService SourceFacebookMarketingUpdateSchemasAuthType = "Service"
)

func (e SourceFacebookMarketingUpdateSchemasAuthType) ToPointer() *SourceFacebookMarketingUpdateSchemasAuthType {
	return &e
}
func (e *SourceFacebookMarketingUpdateSchemasAuthType) UnmarshalJSON(data []byte) error {
	var v string
	if err := json.Unmarshal(data, &v); err != nil {
		return err
	}
	switch v {
	case "Service":
		*e = SourceFacebookMarketingUpdateSchemasAuthType(v)
		return nil
	default:
		return fmt.Errorf("invalid value for SourceFacebookMarketingUpdateSchemasAuthType: %v", v)
	}
}

type SourceFacebookMarketingUpdateServiceAccountKeyAuthentication struct {
	// The value of the generated access token. From your App’s Dashboard, click on "Marketing API" then "Tools". Select permissions <b>ads_management, ads_read, read_insights, business_management</b>. Then click on "Get token". See the <a href="https://docs.airbyte.com/integrations/sources/facebook-marketing">docs</a> for more information.
	AccessToken string                                        `json:"access_token"`
	authType    *SourceFacebookMarketingUpdateSchemasAuthType `const:"Service" json:"auth_type"`
}

func (s SourceFacebookMarketingUpdateServiceAccountKeyAuthentication) MarshalJSON() ([]byte, error) {
	return utils.MarshalJSON(s, "", false)
}

func (s *SourceFacebookMarketingUpdateServiceAccountKeyAuthentication) UnmarshalJSON(data []byte) error {
	if err := utils.UnmarshalJSON(data, &s, "", false, true); err != nil {
		return err
	}
	return nil
}

func (o *SourceFacebookMarketingUpdateServiceAccountKeyAuthentication) GetAccessToken() string {
	if o == nil {
		return ""
	}
	return o.AccessToken
}

func (o *SourceFacebookMarketingUpdateServiceAccountKeyAuthentication) GetAuthType() *SourceFacebookMarketingUpdateSchemasAuthType {
	return SourceFacebookMarketingUpdateSchemasAuthTypeService.ToPointer()
}

type SourceFacebookMarketingUpdateAuthType string

const (
	SourceFacebookMarketingUpdateAuthTypeClient SourceFacebookMarketingUpdateAuthType = "Client"
)

func (e SourceFacebookMarketingUpdateAuthType) ToPointer() *SourceFacebookMarketingUpdateAuthType {
	return &e
}
func (e *SourceFacebookMarketingUpdateAuthType) UnmarshalJSON(data []byte) error {
	var v string
	if err := json.Unmarshal(data, &v); err != nil {
		return err
	}
	switch v {
	case "Client":
		*e = SourceFacebookMarketingUpdateAuthType(v)
		return nil
	default:
		return fmt.Errorf("invalid value for SourceFacebookMarketingUpdateAuthType: %v", v)
	}
}

type SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth struct {
	// The value of the generated access token. From your App’s Dashboard, click on "Marketing API" then "Tools". Select permissions <b>ads_management, ads_read, read_insights, business_management</b>. Then click on "Get token". See the <a href="https://docs.airbyte.com/integrations/sources/facebook-marketing">docs</a> for more information.
	AccessToken *string                                `json:"access_token,omitempty"`
	authType    *SourceFacebookMarketingUpdateAuthType `const:"Client" json:"auth_type"`
	// Client ID for the Facebook Marketing API
	ClientID string `json:"client_id"`
	// Client Secret for the Facebook Marketing API
	ClientSecret string `json:"client_secret"`
}

func (s SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth) MarshalJSON() ([]byte, error) {
	return utils.MarshalJSON(s, "", false)
}

func (s *SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth) UnmarshalJSON(data []byte) error {
	if err := utils.UnmarshalJSON(data, &s, "", false, true); err != nil {
		return err
	}
	return nil
}

func (o *SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth) GetAccessToken() *string {
	if o == nil {
		return nil
	}
	return o.AccessToken
}

func (o *SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth) GetAuthType() *SourceFacebookMarketingUpdateAuthType {
	return SourceFacebookMarketingUpdateAuthTypeClient.ToPointer()
}

func (o *SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth) GetClientID() string {
	if o == nil {
		return ""
	}
	return o.ClientID
}

func (o *SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth) GetClientSecret() string {
	if o == nil {
		return ""
	}
	return o.ClientSecret
}

type SourceFacebookMarketingUpdateAuthenticationType string

const (
	SourceFacebookMarketingUpdateAuthenticationTypeSourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth SourceFacebookMarketingUpdateAuthenticationType = "source-facebook-marketing-update_Authenticate via Facebook Marketing (Oauth)"
	SourceFacebookMarketingUpdateAuthenticationTypeSourceFacebookMarketingUpdateServiceAccountKeyAuthentication       SourceFacebookMarketingUpdateAuthenticationType = "source-facebook-marketing-update_Service Account Key Authentication"
)

// SourceFacebookMarketingUpdateAuthentication - Credentials for connecting to the Facebook Marketing API
type SourceFacebookMarketingUpdateAuthentication struct {
	SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth *SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth `queryParam:"inline"`
	SourceFacebookMarketingUpdateServiceAccountKeyAuthentication       *SourceFacebookMarketingUpdateServiceAccountKeyAuthentication       `queryParam:"inline"`

	Type SourceFacebookMarketingUpdateAuthenticationType
}

func CreateSourceFacebookMarketingUpdateAuthenticationSourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth(sourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth) SourceFacebookMarketingUpdateAuthentication {
	typ := SourceFacebookMarketingUpdateAuthenticationTypeSourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth

	return SourceFacebookMarketingUpdateAuthentication{
		SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth: &sourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth,
		Type: typ,
	}
}

func CreateSourceFacebookMarketingUpdateAuthenticationSourceFacebookMarketingUpdateServiceAccountKeyAuthentication(sourceFacebookMarketingUpdateServiceAccountKeyAuthentication SourceFacebookMarketingUpdateServiceAccountKeyAuthentication) SourceFacebookMarketingUpdateAuthentication {
	typ := SourceFacebookMarketingUpdateAuthenticationTypeSourceFacebookMarketingUpdateServiceAccountKeyAuthentication

	return SourceFacebookMarketingUpdateAuthentication{
		SourceFacebookMarketingUpdateServiceAccountKeyAuthentication: &sourceFacebookMarketingUpdateServiceAccountKeyAuthentication,
		Type: typ,
	}
}

func (u *SourceFacebookMarketingUpdateAuthentication) UnmarshalJSON(data []byte) error {

	var sourceFacebookMarketingUpdateServiceAccountKeyAuthentication SourceFacebookMarketingUpdateServiceAccountKeyAuthentication = SourceFacebookMarketingUpdateServiceAccountKeyAuthentication{}
	if err := utils.UnmarshalJSON(data, &sourceFacebookMarketingUpdateServiceAccountKeyAuthentication, "", true, true); err == nil {
		u.SourceFacebookMarketingUpdateServiceAccountKeyAuthentication = &sourceFacebookMarketingUpdateServiceAccountKeyAuthentication
		u.Type = SourceFacebookMarketingUpdateAuthenticationTypeSourceFacebookMarketingUpdateServiceAccountKeyAuthentication
		return nil
	}

	var sourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth = SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth{}
	if err := utils.UnmarshalJSON(data, &sourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth, "", true, true); err == nil {
		u.SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth = &sourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth
		u.Type = SourceFacebookMarketingUpdateAuthenticationTypeSourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth
		return nil
	}

	return fmt.Errorf("could not unmarshal `%s` into any supported union types for SourceFacebookMarketingUpdateAuthentication", string(data))
}

func (u SourceFacebookMarketingUpdateAuthentication) MarshalJSON() ([]byte, error) {
	if u.SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth != nil {
		return utils.MarshalJSON(u.SourceFacebookMarketingUpdateAuthenticateViaFacebookMarketingOauth, "", true)
	}

	if u.SourceFacebookMarketingUpdateServiceAccountKeyAuthentication != nil {
		return utils.MarshalJSON(u.SourceFacebookMarketingUpdateServiceAccountKeyAuthentication, "", true)
	}

	return nil, errors.New("could not marshal union type SourceFacebookMarketingUpdateAuthentication: all fields are null")
}

// SourceFacebookMarketingUpdateValidActionBreakdowns - An enumeration.
type SourceFacebookMarketingUpdateValidActionBreakdowns string

const (
	SourceFacebookMarketingUpdateValidActionBreakdownsActionCanvasComponentName SourceFacebookMarketingUpdateValidActionBreakdowns = "action_canvas_component_name"
	SourceFacebookMarketingUpdateValidActionBreakdownsActionCarouselCardID      SourceFacebookMarketingUpdateValidActionBreakdowns = "action_carousel_card_id"
	SourceFacebookMarketingUpdateValidActionBreakdownsActionCarouselCardName    SourceFacebookMarketingUpdateValidActionBreakdowns = "action_carousel_card_name"
	SourceFacebookMarketingUpdateValidActionBreakdownsActionDestination         SourceFacebookMarketingUpdateValidActionBreakdowns = "action_destination"
	SourceFacebookMarketingUpdateValidActionBreakdownsActionDevice              SourceFacebookMarketingUpdateValidActionBreakdowns = "action_device"
	SourceFacebookMarketingUpdateValidActionBreakdownsActionReaction            SourceFacebookMarketingUpdateValidActionBreakdowns = "action_reaction"
	SourceFacebookMarketingUpdateValidActionBreakdownsActionTargetID            SourceFacebookMarketingUpdateValidActionBreakdowns = "action_target_id"
	SourceFacebookMarketingUpdateValidActionBreakdownsActionType                SourceFacebookMarketingUpdateValidActionBreakdowns = "action_type"
	SourceFacebookMarketingUpdateValidActionBreakdownsActionVideoSound          SourceFacebookMarketingUpdateValidActionBreakdowns = "action_video_sound"
	SourceFacebookMarketingUpdateValidActionBreakdownsActionVideoType           SourceFacebookMarketingUpdateValidActionBreakdowns = "action_video_type"
	SourceFacebookMarketingUpdateValidActionBreakdownsConversionDestination     SourceFacebookMarketingUpdateValidActionBreakdowns = "conversion_destination"
	SourceFacebookMarketingUpdateValidActionBreakdownsMatchedPersonaID          SourceFacebookMarketingUpdateValidActionBreakdowns = "matched_persona_id"
	SourceFacebookMarketingUpdateValidActionBreakdownsMatchedPersonaName        SourceFacebookMarketingUpdateValidActionBreakdowns = "matched_persona_name"
	SourceFacebookMarketingUpdateValidActionBreakdownsSignalSourceBucket        SourceFacebookMarketingUpdateValidActionBreakdowns = "signal_source_bucket"
	SourceFacebookMarketingUpdateValidActionBreakdownsStandardEventContentType  SourceFacebookMarketingUpdateValidActionBreakdowns = "standard_event_content_type"
)

func (e SourceFacebookMarketingUpdateValidActionBreakdowns) ToPointer() *SourceFacebookMarketingUpdateValidActionBreakdowns {
	return &e
}
func (e *SourceFacebookMarketingUpdateValidActionBreakdowns) UnmarshalJSON(data []byte) error {
	var v string
	if err := json.Unmarshal(data, &v); err != nil {
		return err
	}
	switch v {
	case "action_canvas_component_name":
		fallthrough
	case "action_carousel_card_id":
		fallthrough
	case "action_carousel_card_name":
		fallthrough
	case "action_destination":
		fallthrough
	case "action_device":
		fallthrough
	case "action_reaction":
		fallthrough
	case "action_target_id":
		fallthrough
	case "action_type":
		fallthrough
	case "action_video_sound":
		fallthrough
	case "action_video_type":
		fallthrough
	case "conversion_destination":
		fallthrough
	case "matched_persona_id":
		fallthrough
	case "matched_persona_name":
		fallthrough
	case "signal_source_bucket":
		fallthrough
	case "standard_event_content_type":
		*e = SourceFacebookMarketingUpdateValidActionBreakdowns(v)
		return nil
	default:
		return fmt.Errorf("invalid value for SourceFacebookMarketingUpdateValidActionBreakdowns: %v", v)
	}
}

// SourceFacebookMarketingUpdateValidBreakdowns - An enumeration.
type SourceFacebookMarketingUpdateValidBreakdowns string

const (
	SourceFacebookMarketingUpdateValidBreakdownsAdFormatAsset                             SourceFacebookMarketingUpdateValidBreakdowns = "ad_format_asset"
	SourceFacebookMarketingUpdateValidBreakdownsAge                                       SourceFacebookMarketingUpdateValidBreakdowns = "age"
	SourceFacebookMarketingUpdateValidBreakdownsAppID                                     SourceFacebookMarketingUpdateValidBreakdowns = "app_id"
	SourceFacebookMarketingUpdateValidBreakdownsBodyAsset                                 SourceFacebookMarketingUpdateValidBreakdowns = "body_asset"
	SourceFacebookMarketingUpdateValidBreakdownsBreakdownReportingAdID                    SourceFacebookMarketingUpdateValidBreakdowns = "breakdown_reporting_ad_id"
	SourceFacebookMarketingUpdateValidBreakdownsCallToActionAsset                         SourceFacebookMarketingUpdateValidBreakdowns = "call_to_action_asset"
	SourceFacebookMarketingUpdateValidBreakdownsCoarseConversionValue                     SourceFacebookMarketingUpdateValidBreakdowns = "coarse_conversion_value"
	SourceFacebookMarketingUpdateValidBreakdownsConversionDestination                     SourceFacebookMarketingUpdateValidBreakdowns = "conversion_destination"
	SourceFacebookMarketingUpdateValidBreakdownsCountry                                   SourceFacebookMarketingUpdateValidBreakdowns = "country"
	SourceFacebookMarketingUpdateValidBreakdownsDescriptionAsset                          SourceFacebookMarketingUpdateValidBreakdowns = "description_asset"
	SourceFacebookMarketingUpdateValidBreakdownsDevicePlatform                            SourceFacebookMarketingUpdateValidBreakdowns = "device_platform"
	SourceFacebookMarketingUpdateValidBreakdownsDma                                       SourceFacebookMarketingUpdateValidBreakdowns = "dma"
	SourceFacebookMarketingUpdateValidBreakdownsFidelityType                              SourceFacebookMarketingUpdateValidBreakdowns = "fidelity_type"
	SourceFacebookMarketingUpdateValidBreakdownsFrequencyValue                            SourceFacebookMarketingUpdateValidBreakdowns = "frequency_value"
	SourceFacebookMarketingUpdateValidBreakdownsGender                                    SourceFacebookMarketingUpdateValidBreakdowns = "gender"
	SourceFacebookMarketingUpdateValidBreakdownsHourlyStatsAggregatedByAdvertiserTimeZone SourceFacebookMarketingUpdateValidBreakdowns = "hourly_stats_aggregated_by_advertiser_time_zone"
	SourceFacebookMarketingUpdateValidBreakdownsHourlyStatsAggregatedByAudienceTimeZone   SourceFacebookMarketingUpdateValidBreakdowns = "hourly_stats_aggregated_by_audience_time_zone"
	SourceFacebookMarketingUpdateValidBreakdownsHsid                                      SourceFacebookMarketingUpdateValidBreakdowns = "hsid"
	SourceFacebookMarketingUpdateValidBreakdownsImageAsset                                SourceFacebookMarketingUpdateValidBreakdowns = "image_asset"
	SourceFacebookMarketingUpdateValidBreakdownsImpressionDevice                          SourceFacebookMarketingUpdateValidBreakdowns = "impression_device"
	SourceFacebookMarketingUpdateValidBreakdownsIsConversionIDModeled                     SourceFacebookMarketingUpdateValidBreakdowns = "is_conversion_id_modeled"
	SourceFacebookMarketingUpdateValidBreakdownsIsRenderedAsDelayedSkipAd                 SourceFacebookMarketingUpdateValidBreakdowns = "is_rendered_as_delayed_skip_ad"
	SourceFacebookMarketingUpdateValidBreakdownsLandingDestination                        SourceFacebookMarketingUpdateValidBreakdowns = "landing_destination"
	SourceFacebookMarketingUpdateValidBreakdownsLinkURLAsset                              SourceFacebookMarketingUpdateValidBreakdowns = "link_url_asset"
	SourceFacebookMarketingUpdateValidBreakdownsMarketingMessagesBtnName                  SourceFacebookMarketingUpdateValidBreakdowns = "marketing_messages_btn_name"
	SourceFacebookMarketingUpdateValidBreakdownsMdsaLandingDestination                    SourceFacebookMarketingUpdateValidBreakdowns = "mdsa_landing_destination"
	SourceFacebookMarketingUpdateValidBreakdownsMediaAssetURL                             SourceFacebookMarketingUpdateValidBreakdowns = "media_asset_url"
	SourceFacebookMarketingUpdateValidBreakdownsMediaCreator                              SourceFacebookMarketingUpdateValidBreakdowns = "media_creator"
	SourceFacebookMarketingUpdateValidBreakdownsMediaDestinationURL                       SourceFacebookMarketingUpdateValidBreakdowns = "media_destination_url"
	SourceFacebookMarketingUpdateValidBreakdownsMediaFormat                               SourceFacebookMarketingUpdateValidBreakdowns = "media_format"
	SourceFacebookMarketingUpdateValidBreakdownsMediaOriginURL                            SourceFacebookMarketingUpdateValidBreakdowns = "media_origin_url"
	SourceFacebookMarketingUpdateValidBreakdownsMediaTextContent                          SourceFacebookMarketingUpdateValidBreakdowns = "media_text_content"
	SourceFacebookMarketingUpdateValidBreakdownsMediaType                                 SourceFacebookMarketingUpdateValidBreakdowns = "media_type"
	SourceFacebookMarketingUpdateValidBreakdownsMmm                                       SourceFacebookMarketingUpdateValidBreakdowns = "mmm"
	SourceFacebookMarketingUpdateValidBreakdownsPlacePageID                               SourceFacebookMarketingUpdateValidBreakdowns = "place_page_id"
	SourceFacebookMarketingUpdateValidBreakdownsPlatformPosition                          SourceFacebookMarketingUpdateValidBreakdowns = "platform_position"
	SourceFacebookMarketingUpdateValidBreakdownsPostbackSequenceIndex                     SourceFacebookMarketingUpdateValidBreakdowns = "postback_sequence_index"
	SourceFacebookMarketingUpdateValidBreakdownsProductID                                 SourceFacebookMarketingUpdateValidBreakdowns = "product_id"
	SourceFacebookMarketingUpdateValidBreakdownsPublisherPlatform                         SourceFacebookMarketingUpdateValidBreakdowns = "publisher_platform"
	SourceFacebookMarketingUpdateValidBreakdownsRedownload                                SourceFacebookMarketingUpdateValidBreakdowns = "redownload"
	SourceFacebookMarketingUpdateValidBreakdownsRegion                                    SourceFacebookMarketingUpdateValidBreakdowns = "region"
	SourceFacebookMarketingUpdateValidBreakdownsSignalSourceBucket                        SourceFacebookMarketingUpdateValidBreakdowns = "signal_source_bucket"
	SourceFacebookMarketingUpdateValidBreakdownsSkanCampaignID                            SourceFacebookMarketingUpdateValidBreakdowns = "skan_campaign_id"
	SourceFacebookMarketingUpdateValidBreakdownsSkanConversionID                          SourceFacebookMarketingUpdateValidBreakdowns = "skan_conversion_id"
	SourceFacebookMarketingUpdateValidBreakdownsSkanVersion                               SourceFacebookMarketingUpdateValidBreakdowns = "skan_version"
	SourceFacebookMarketingUpdateValidBreakdownsSotAttributionModelType                   SourceFacebookMarketingUpdateValidBreakdowns = "sot_attribution_model_type"
	SourceFacebookMarketingUpdateValidBreakdownsSotAttributionWindow                      SourceFacebookMarketingUpdateValidBreakdowns = "sot_attribution_window"
	SourceFacebookMarketingUpdateValidBreakdownsSotChannel                                SourceFacebookMarketingUpdateValidBreakdowns = "sot_channel"
	SourceFacebookMarketingUpdateValidBreakdownsSotEventType                              SourceFacebookMarketingUpdateValidBreakdowns = "sot_event_type"
	SourceFacebookMarketingUpdateValidBreakdownsSotSource                                 SourceFacebookMarketingUpdateValidBreakdowns = "sot_source"
	SourceFacebookMarketingUpdateValidBreakdownsStandardEventContentType                  SourceFacebookMarketingUpdateValidBreakdowns = "standard_event_content_type"
	SourceFacebookMarketingUpdateValidBreakdownsTitleAsset                                SourceFacebookMarketingUpdateValidBreakdowns = "title_asset"
	SourceFacebookMarketingUpdateValidBreakdownsUserPersonaID                             SourceFacebookMarketingUpdateValidBreakdowns = "user_persona_id"
	SourceFacebookMarketingUpdateValidBreakdownsUserPersonaName                           SourceFacebookMarketingUpdateValidBreakdowns = "user_persona_name"
	SourceFacebookMarketingUpdateValidBreakdownsVideoAsset                                SourceFacebookMarketingUpdateValidBreakdowns = "video_asset"
)

func (e SourceFacebookMarketingUpdateValidBreakdowns) ToPointer() *SourceFacebookMarketingUpdateValidBreakdowns {
	return &e
}
func (e *SourceFacebookMarketingUpdateValidBreakdowns) UnmarshalJSON(data []byte) error {
	var v string
	if err := json.Unmarshal(data, &v); err != nil {
		return err
	}
	switch v {
	case "ad_format_asset":
		fallthrough
	case "age":
		fallthrough
	case "app_id":
		fallthrough
	case "body_asset":
		fallthrough
	case "breakdown_reporting_ad_id":
		fallthrough
	case "call_to_action_asset":
		fallthrough
	case "coarse_conversion_value":
		fallthrough
	case "conversion_destination":
		fallthrough
	case "country":
		fallthrough
	case "description_asset":
		fallthrough
	case "device_platform":
		fallthrough
	case "dma":
		fallthrough
	case "fidelity_type":
		fallthrough
	case "frequency_value":
		fallthrough
	case "gender":
		fallthrough
	case "hourly_stats_aggregated_by_advertiser_time_zone":
		fallthrough
	case "hourly_stats_aggregated_by_audience_time_zone":
		fallthrough
	case "hsid":
		fallthrough
	case "image_asset":
		fallthrough
	case "impression_device":
		fallthrough
	case "is_conversion_id_modeled":
		fallthrough
	case "is_rendered_as_delayed_skip_ad":
		fallthrough
	case "landing_destination":
		fallthrough
	case "link_url_asset":
		fallthrough
	case "marketing_messages_btn_name":
		fallthrough
	case "mdsa_landing_destination":
		fallthrough
	case "media_asset_url":
		fallthrough
	case "media_creator":
		fallthrough
	case "media_destination_url":
		fallthrough
	case "media_format":
		fallthrough
	case "media_origin_url":
		fallthrough
	case "media_text_content":
		fallthrough
	case "media_type":
		fallthrough
	case "mmm":
		fallthrough
	case "place_page_id":
		fallthrough
	case "platform_position":
		fallthrough
	case "postback_sequence_index":
		fallthrough
	case "product_id":
		fallthrough
	case "publisher_platform":
		fallthrough
	case "redownload":
		fallthrough
	case "region":
		fallthrough
	case "signal_source_bucket":
		fallthrough
	case "skan_campaign_id":
		fallthrough
	case "skan_conversion_id":
		fallthrough
	case "skan_version":
		fallthrough
	case "sot_attribution_model_type":
		fallthrough
	case "sot_attribution_window":
		fallthrough
	case "sot_channel":
		fallthrough
	case "sot_event_type":
		fallthrough
	case "sot_source":
		fallthrough
	case "standard_event_content_type":
		fallthrough
	case "title_asset":
		fallthrough
	case "user_persona_id":
		fallthrough
	case "user_persona_name":
		fallthrough
	case "video_asset":
		*e = SourceFacebookMarketingUpdateValidBreakdowns(v)
		return nil
	default:
		return fmt.Errorf("invalid value for SourceFacebookMarketingUpdateValidBreakdowns: %v", v)
	}
}

// SourceFacebookMarketingUpdateValidEnums - An enumeration.
type SourceFacebookMarketingUpdateValidEnums string

const (
	SourceFacebookMarketingUpdateValidEnumsAccountCurrency                                  SourceFacebookMarketingUpdateValidEnums = "account_currency"
	SourceFacebookMarketingUpdateValidEnumsAccountID                                        SourceFacebookMarketingUpdateValidEnums = "account_id"
	SourceFacebookMarketingUpdateValidEnumsAccountName                                      SourceFacebookMarketingUpdateValidEnums = "account_name"
	SourceFacebookMarketingUpdateValidEnumsActionValues                                     SourceFacebookMarketingUpdateValidEnums = "action_values"
	SourceFacebookMarketingUpdateValidEnumsActions                                          SourceFacebookMarketingUpdateValidEnums = "actions"
	SourceFacebookMarketingUpdateValidEnumsAdClickActions                                   SourceFacebookMarketingUpdateValidEnums = "ad_click_actions"
	SourceFacebookMarketingUpdateValidEnumsAdID                                             SourceFacebookMarketingUpdateValidEnums = "ad_id"
	SourceFacebookMarketingUpdateValidEnumsAdImpressionActions                              SourceFacebookMarketingUpdateValidEnums = "ad_impression_actions"
	SourceFacebookMarketingUpdateValidEnumsAdName                                           SourceFacebookMarketingUpdateValidEnums = "ad_name"
	SourceFacebookMarketingUpdateValidEnumsAdsetEnd                                         SourceFacebookMarketingUpdateValidEnums = "adset_end"
	SourceFacebookMarketingUpdateValidEnumsAdsetID                                          SourceFacebookMarketingUpdateValidEnums = "adset_id"
	SourceFacebookMarketingUpdateValidEnumsAdsetName                                        SourceFacebookMarketingUpdateValidEnums = "adset_name"
	SourceFacebookMarketingUpdateValidEnumsAgeTargeting                                     SourceFacebookMarketingUpdateValidEnums = "age_targeting"
	SourceFacebookMarketingUpdateValidEnumsAttributionSetting                               SourceFacebookMarketingUpdateValidEnums = "attribution_setting"
	SourceFacebookMarketingUpdateValidEnumsAuctionBid                                       SourceFacebookMarketingUpdateValidEnums = "auction_bid"
	SourceFacebookMarketingUpdateValidEnumsAuctionCompetitiveness                           SourceFacebookMarketingUpdateValidEnums = "auction_competitiveness"
	SourceFacebookMarketingUpdateValidEnumsAuctionMaxCompetitorBid                          SourceFacebookMarketingUpdateValidEnums = "auction_max_competitor_bid"
	SourceFacebookMarketingUpdateValidEnumsAveragePurchasesConversionValue                  SourceFacebookMarketingUpdateValidEnums = "average_purchases_conversion_value"
	SourceFacebookMarketingUpdateValidEnumsBuyingType                                       SourceFacebookMarketingUpdateValidEnums = "buying_type"
	SourceFacebookMarketingUpdateValidEnumsCampaignID                                       SourceFacebookMarketingUpdateValidEnums = "campaign_id"
	SourceFacebookMarketingUpdateValidEnumsCampaignName                                     SourceFacebookMarketingUpdateValidEnums = "campaign_name"
	SourceFacebookMarketingUpdateValidEnumsCanvasAvgViewPercent                             SourceFacebookMarketingUpdateValidEnums = "canvas_avg_view_percent"
	SourceFacebookMarketingUpdateValidEnumsCanvasAvgViewTime                                SourceFacebookMarketingUpdateValidEnums = "canvas_avg_view_time"
	SourceFacebookMarketingUpdateValidEnumsCatalogSegmentActions                            SourceFacebookMarketingUpdateValidEnums = "catalog_segment_actions"
	SourceFacebookMarketingUpdateValidEnumsCatalogSegmentValue                              SourceFacebookMarketingUpdateValidEnums = "catalog_segment_value"
	SourceFacebookMarketingUpdateValidEnumsCatalogSegmentValueMobilePurchaseRoas            SourceFacebookMarketingUpdateValidEnums = "catalog_segment_value_mobile_purchase_roas"
	SourceFacebookMarketingUpdateValidEnumsCatalogSegmentValueOmniPurchaseRoas              SourceFacebookMarketingUpdateValidEnums = "catalog_segment_value_omni_purchase_roas"
	SourceFacebookMarketingUpdateValidEnumsCatalogSegmentValueWebsitePurchaseRoas           SourceFacebookMarketingUpdateValidEnums = "catalog_segment_value_website_purchase_roas"
	SourceFacebookMarketingUpdateValidEnumsClicks                                           SourceFacebookMarketingUpdateValidEnums = "clicks"
	SourceFacebookMarketingUpdateValidEnumsConversionRateRanking                            SourceFacebookMarketingUpdateValidEnums = "conversion_rate_ranking"
	SourceFacebookMarketingUpdateValidEnumsConversionValues                                 SourceFacebookMarketingUpdateValidEnums = "conversion_values"
	SourceFacebookMarketingUpdateValidEnumsConversions                                      SourceFacebookMarketingUpdateValidEnums = "conversions"
	SourceFacebookMarketingUpdateValidEnumsConvertedProductQuantity                         SourceFacebookMarketingUpdateValidEnums = "converted_product_quantity"
	SourceFacebookMarketingUpdateValidEnumsConvertedProductValue                            SourceFacebookMarketingUpdateValidEnums = "converted_product_value"
	SourceFacebookMarketingUpdateValidEnumsCostPer15SecVideoView                            SourceFacebookMarketingUpdateValidEnums = "cost_per_15_sec_video_view"
	SourceFacebookMarketingUpdateValidEnumsCostPer2SecContinuousVideoView                   SourceFacebookMarketingUpdateValidEnums = "cost_per_2_sec_continuous_video_view"
	SourceFacebookMarketingUpdateValidEnumsCostPerActionType                                SourceFacebookMarketingUpdateValidEnums = "cost_per_action_type"
	SourceFacebookMarketingUpdateValidEnumsCostPerAdClick                                   SourceFacebookMarketingUpdateValidEnums = "cost_per_ad_click"
	SourceFacebookMarketingUpdateValidEnumsCostPerConversion                                SourceFacebookMarketingUpdateValidEnums = "cost_per_conversion"
	SourceFacebookMarketingUpdateValidEnumsCostPerDdaCountbyConvs                           SourceFacebookMarketingUpdateValidEnums = "cost_per_dda_countby_convs"
	SourceFacebookMarketingUpdateValidEnumsCostPerEstimatedAdRecallers                      SourceFacebookMarketingUpdateValidEnums = "cost_per_estimated_ad_recallers"
	SourceFacebookMarketingUpdateValidEnumsCostPerInlineLinkClick                           SourceFacebookMarketingUpdateValidEnums = "cost_per_inline_link_click"
	SourceFacebookMarketingUpdateValidEnumsCostPerInlinePostEngagement                      SourceFacebookMarketingUpdateValidEnums = "cost_per_inline_post_engagement"
	SourceFacebookMarketingUpdateValidEnumsCostPerOneThousandAdImpression                   SourceFacebookMarketingUpdateValidEnums = "cost_per_one_thousand_ad_impression"
	SourceFacebookMarketingUpdateValidEnumsCostPerOutboundClick                             SourceFacebookMarketingUpdateValidEnums = "cost_per_outbound_click"
	SourceFacebookMarketingUpdateValidEnumsCostPerThruplay                                  SourceFacebookMarketingUpdateValidEnums = "cost_per_thruplay"
	SourceFacebookMarketingUpdateValidEnumsCostPerUniqueActionType                          SourceFacebookMarketingUpdateValidEnums = "cost_per_unique_action_type"
	SourceFacebookMarketingUpdateValidEnumsCostPerUniqueClick                               SourceFacebookMarketingUpdateValidEnums = "cost_per_unique_click"
	SourceFacebookMarketingUpdateValidEnumsCostPerUniqueConversion                          SourceFacebookMarketingUpdateValidEnums = "cost_per_unique_conversion"
	SourceFacebookMarketingUpdateValidEnumsCostPerUniqueInlineLinkClick                     SourceFacebookMarketingUpdateValidEnums = "cost_per_unique_inline_link_click"
	SourceFacebookMarketingUpdateValidEnumsCostPerUniqueOutboundClick                       SourceFacebookMarketingUpdateValidEnums = "cost_per_unique_outbound_click"
	SourceFacebookMarketingUpdateValidEnumsCpc                                              SourceFacebookMarketingUpdateValidEnums = "cpc"
	SourceFacebookMarketingUpdateValidEnumsCpm                                              SourceFacebookMarketingUpdateValidEnums = "cpm"
	SourceFacebookMarketingUpdateValidEnumsCpp                                              SourceFacebookMarketingUpdateValidEnums = "cpp"
	SourceFacebookMarketingUpdateValidEnumsCreatedTime                                      SourceFacebookMarketingUpdateValidEnums = "created_time"
	SourceFacebookMarketingUpdateValidEnumsCreativeMediaType                                SourceFacebookMarketingUpdateValidEnums = "creative_media_type"
	SourceFacebookMarketingUpdateValidEnumsCtr                                              SourceFacebookMarketingUpdateValidEnums = "ctr"
	SourceFacebookMarketingUpdateValidEnumsDateStart                                        SourceFacebookMarketingUpdateValidEnums = "date_start"
	SourceFacebookMarketingUpdateValidEnumsDateStop                                         SourceFacebookMarketingUpdateValidEnums = "date_stop"
	SourceFacebookMarketingUpdateValidEnumsDdaCountbyConvs                                  SourceFacebookMarketingUpdateValidEnums = "dda_countby_convs"
	SourceFacebookMarketingUpdateValidEnumsDdaResults                                       SourceFacebookMarketingUpdateValidEnums = "dda_results"
	SourceFacebookMarketingUpdateValidEnumsEngagementRateRanking                            SourceFacebookMarketingUpdateValidEnums = "engagement_rate_ranking"
	SourceFacebookMarketingUpdateValidEnumsEstimatedAdRecallRate                            SourceFacebookMarketingUpdateValidEnums = "estimated_ad_recall_rate"
	SourceFacebookMarketingUpdateValidEnumsEstimatedAdRecallRateLowerBound                  SourceFacebookMarketingUpdateValidEnums = "estimated_ad_recall_rate_lower_bound"
	SourceFacebookMarketingUpdateValidEnumsEstimatedAdRecallRateUpperBound                  SourceFacebookMarketingUpdateValidEnums = "estimated_ad_recall_rate_upper_bound"
	SourceFacebookMarketingUpdateValidEnumsEstimatedAdRecallers                             SourceFacebookMarketingUpdateValidEnums = "estimated_ad_recallers"
	SourceFacebookMarketingUpdateValidEnumsEstimatedAdRecallersLowerBound                   SourceFacebookMarketingUpdateValidEnums = "estimated_ad_recallers_lower_bound"
	SourceFacebookMarketingUpdateValidEnumsEstimatedAdRecallersUpperBound                   SourceFacebookMarketingUpdateValidEnums = "estimated_ad_recallers_upper_bound"
	SourceFacebookMarketingUpdateValidEnumsFrequency                                        SourceFacebookMarketingUpdateValidEnums = "frequency"
	SourceFacebookMarketingUpdateValidEnumsFullViewImpressions                              SourceFacebookMarketingUpdateValidEnums = "full_view_impressions"
	SourceFacebookMarketingUpdateValidEnumsFullViewReach                                    SourceFacebookMarketingUpdateValidEnums = "full_view_reach"
	SourceFacebookMarketingUpdateValidEnumsGenderTargeting                                  SourceFacebookMarketingUpdateValidEnums = "gender_targeting"
	SourceFacebookMarketingUpdateValidEnumsImpressions                                      SourceFacebookMarketingUpdateValidEnums = "impressions"
	SourceFacebookMarketingUpdateValidEnumsInlineLinkClickCtr                               SourceFacebookMarketingUpdateValidEnums = "inline_link_click_ctr"
	SourceFacebookMarketingUpdateValidEnumsInlineLinkClicks                                 SourceFacebookMarketingUpdateValidEnums = "inline_link_clicks"
	SourceFacebookMarketingUpdateValidEnumsInlinePostEngagement                             SourceFacebookMarketingUpdateValidEnums = "inline_post_engagement"
	SourceFacebookMarketingUpdateValidEnumsInstagramUpcomingEventRemindersSet               SourceFacebookMarketingUpdateValidEnums = "instagram_upcoming_event_reminders_set"
	SourceFacebookMarketingUpdateValidEnumsInstantExperienceClicksToOpen                    SourceFacebookMarketingUpdateValidEnums = "instant_experience_clicks_to_open"
	SourceFacebookMarketingUpdateValidEnumsInstantExperienceClicksToStart                   SourceFacebookMarketingUpdateValidEnums = "instant_experience_clicks_to_start"
	SourceFacebookMarketingUpdateValidEnumsInstantExperienceOutboundClicks                  SourceFacebookMarketingUpdateValidEnums = "instant_experience_outbound_clicks"
	SourceFacebookMarketingUpdateValidEnumsInteractiveComponentTap                          SourceFacebookMarketingUpdateValidEnums = "interactive_component_tap"
	SourceFacebookMarketingUpdateValidEnumsLabels                                           SourceFacebookMarketingUpdateValidEnums = "labels"
	SourceFacebookMarketingUpdateValidEnumsLocation                                         SourceFacebookMarketingUpdateValidEnums = "location"
	SourceFacebookMarketingUpdateValidEnumsMarketingMessagesCostPerDelivered                SourceFacebookMarketingUpdateValidEnums = "marketing_messages_cost_per_delivered"
	SourceFacebookMarketingUpdateValidEnumsMarketingMessagesCostPerLinkBtnClick             SourceFacebookMarketingUpdateValidEnums = "marketing_messages_cost_per_link_btn_click"
	SourceFacebookMarketingUpdateValidEnumsMarketingMessagesDeliveryRate                    SourceFacebookMarketingUpdateValidEnums = "marketing_messages_delivery_rate"
	SourceFacebookMarketingUpdateValidEnumsMarketingMessagesLinkBtnClickRate                SourceFacebookMarketingUpdateValidEnums = "marketing_messages_link_btn_click_rate"
	SourceFacebookMarketingUpdateValidEnumsMarketingMessagesMediaViewRate                   SourceFacebookMarketingUpdateValidEnums = "marketing_messages_media_view_rate"
	SourceFacebookMarketingUpdateValidEnumsMarketingMessagesPhoneCallBtnClickRate           SourceFacebookMarketingUpdateValidEnums = "marketing_messages_phone_call_btn_click_rate"
	SourceFacebookMarketingUpdateValidEnumsMarketingMessagesQuickReplyBtnClickRate          SourceFacebookMarketingUpdateValidEnums = "marketing_messages_quick_reply_btn_click_rate"
	SourceFacebookMarketingUpdateValidEnumsMarketingMessagesReadRate                        SourceFacebookMarketingUpdateValidEnums = "marketing_messages_read_rate"
	SourceFacebookMarketingUpdateValidEnumsMarketingMessagesSpend                           SourceFacebookMarketingUpdateValidEnums = "marketing_messages_spend"
	SourceFacebookMarketingUpdateValidEnumsMarketingMessagesWebsitePurchaseValues           SourceFacebookMarketingUpdateValidEnums = "marketing_messages_website_purchase_values"
	SourceFacebookMarketingUpdateValidEnumsMobileAppPurchaseRoas                            SourceFacebookMarketingUpdateValidEnums = "mobile_app_purchase_roas"
	SourceFacebookMarketingUpdateValidEnumsObjective                                        SourceFacebookMarketingUpdateValidEnums = "objective"
	SourceFacebookMarketingUpdateValidEnumsOnsiteConversionMessagingDetectedPurchaseDeduped SourceFacebookMarketingUpdateValidEnums = "onsite_conversion_messaging_detected_purchase_deduped"
	SourceFacebookMarketingUpdateValidEnumsOptimizationGoal                                 SourceFacebookMarketingUpdateValidEnums = "optimization_goal"
	SourceFacebookMarketingUpdateValidEnumsOutboundClicks                                   SourceFacebookMarketingUpdateValidEnums = "outbound_clicks"
	SourceFacebookMarketingUpdateValidEnumsOutboundClicksCtr                                SourceFacebookMarketingUpdateValidEnums = "outbound_clicks_ctr"
	SourceFacebookMarketingUpdateValidEnumsPlacePageName                                    SourceFacebookMarketingUpdateValidEnums = "place_page_name"
	SourceFacebookMarketingUpdateValidEnumsPurchaseRoas                                     SourceFacebookMarketingUpdateValidEnums = "purchase_roas"
	SourceFacebookMarketingUpdateValidEnumsQualifyingQuestionQualifyAnswerRate              SourceFacebookMarketingUpdateValidEnums = "qualifying_question_qualify_answer_rate"
	SourceFacebookMarketingUpdateValidEnumsQualityRanking                                   SourceFacebookMarketingUpdateValidEnums = "quality_ranking"
	SourceFacebookMarketingUpdateValidEnumsReach                                            SourceFacebookMarketingUpdateValidEnums = "reach"
	SourceFacebookMarketingUpdateValidEnumsShopsAssistedPurchases                           SourceFacebookMarketingUpdateValidEnums = "shops_assisted_purchases"
	SourceFacebookMarketingUpdateValidEnumsSocialSpend                                      SourceFacebookMarketingUpdateValidEnums = "social_spend"
	SourceFacebookMarketingUpdateValidEnumsSpend                                            SourceFacebookMarketingUpdateValidEnums = "spend"
	SourceFacebookMarketingUpdateValidEnumsTotalPostbacks                                   SourceFacebookMarketingUpdateValidEnums = "total_postbacks"
	SourceFacebookMarketingUpdateValidEnumsTotalPostbacksDetailed                           SourceFacebookMarketingUpdateValidEnums = "total_postbacks_detailed"
	SourceFacebookMarketingUpdateValidEnumsTotalPostbacksDetailedV4                         SourceFacebookMarketingUpdateValidEnums = "total_postbacks_detailed_v4"
	SourceFacebookMarketingUpdateValidEnumsUniqueActions                                    SourceFacebookMarketingUpdateValidEnums = "unique_actions"
	SourceFacebookMarketingUpdateValidEnumsUniqueClicks                                     SourceFacebookMarketingUpdateValidEnums = "unique_clicks"
	SourceFacebookMarketingUpdateValidEnumsUniqueConversions                                SourceFacebookMarketingUpdateValidEnums = "unique_conversions"
	SourceFacebookMarketingUpdateValidEnumsUniqueCtr                                        SourceFacebookMarketingUpdateValidEnums = "unique_ctr"
	SourceFacebookMarketingUpdateValidEnumsUniqueInlineLinkClickCtr                         SourceFacebookMarketingUpdateValidEnums = "unique_inline_link_click_ctr"
	SourceFacebookMarketingUpdateValidEnumsUniqueInlineLinkClicks                           SourceFacebookMarketingUpdateValidEnums = "unique_inline_link_clicks"
	SourceFacebookMarketingUpdateValidEnumsUniqueLinkClicksCtr                              SourceFacebookMarketingUpdateValidEnums = "unique_link_clicks_ctr"
	SourceFacebookMarketingUpdateValidEnumsUniqueOutboundClicks                             SourceFacebookMarketingUpdateValidEnums = "unique_outbound_clicks"
	SourceFacebookMarketingUpdateValidEnumsUniqueOutboundClicksCtr                          SourceFacebookMarketingUpdateValidEnums = "unique_outbound_clicks_ctr"
	SourceFacebookMarketingUpdateValidEnumsUniqueVideoContinuous2SecWatchedActions          SourceFacebookMarketingUpdateValidEnums = "unique_video_continuous_2_sec_watched_actions"
	SourceFacebookMarketingUpdateValidEnumsUniqueVideoView15Sec                             SourceFacebookMarketingUpdateValidEnums = "unique_video_view_15_sec"
	SourceFacebookMarketingUpdateValidEnumsUpdatedTime                                      SourceFacebookMarketingUpdateValidEnums = "updated_time"
	SourceFacebookMarketingUpdateValidEnumsVideo15SecWatchedActions                         SourceFacebookMarketingUpdateValidEnums = "video_15_sec_watched_actions"
	SourceFacebookMarketingUpdateValidEnumsVideo30SecWatchedActions                         SourceFacebookMarketingUpdateValidEnums = "video_30_sec_watched_actions"
	SourceFacebookMarketingUpdateValidEnumsVideoAvgTimeWatchedActions                       SourceFacebookMarketingUpdateValidEnums = "video_avg_time_watched_actions"
	SourceFacebookMarketingUpdateValidEnumsVideoContinuous2SecWatchedActions                SourceFacebookMarketingUpdateValidEnums = "video_continuous_2_sec_watched_actions"
	SourceFacebookMarketingUpdateValidEnumsVideoP100WatchedActions                          SourceFacebookMarketingUpdateValidEnums = "video_p100_watched_actions"
	SourceFacebookMarketingUpdateValidEnumsVideoP25WatchedActions                           SourceFacebookMarketingUpdateValidEnums = "video_p25_watched_actions"
	SourceFacebookMarketingUpdateValidEnumsVideoP50WatchedActions                           SourceFacebookMarketingUpdateValidEnums = "video_p50_watched_actions"
	SourceFacebookMarketingUpdateValidEnumsVideoP75WatchedActions                           SourceFacebookMarketingUpdateValidEnums = "video_p75_watched_actions"
	SourceFacebookMarketingUpdateValidEnumsVideoP95WatchedActions                           SourceFacebookMarketingUpdateValidEnums = "video_p95_watched_actions"
	SourceFacebookMarketingUpdateValidEnumsVideoPlayActions                                 SourceFacebookMarketingUpdateValidEnums = "video_play_actions"
	SourceFacebookMarketingUpdateValidEnumsVideoPlayCurveActions                            SourceFacebookMarketingUpdateValidEnums = "video_play_curve_actions"
	SourceFacebookMarketingUpdateValidEnumsVideoPlayRetention0To15sActions                  SourceFacebookMarketingUpdateValidEnums = "video_play_retention_0_to_15s_actions"
	SourceFacebookMarketingUpdateValidEnumsVideoPlayRetention20To60sActions                 SourceFacebookMarketingUpdateValidEnums = "video_play_retention_20_to_60s_actions"
	SourceFacebookMarketingUpdateValidEnumsVideoPlayRetentionGraphActions                   SourceFacebookMarketingUpdateValidEnums = "video_play_retention_graph_actions"
	SourceFacebookMarketingUpdateValidEnumsVideoThruplayWatchedActions                      SourceFacebookMarketingUpdateValidEnums = "video_thruplay_watched_actions"
	SourceFacebookMarketingUpdateValidEnumsVideoTimeWatchedActions                          SourceFacebookMarketingUpdateValidEnums = "video_time_watched_actions"
	SourceFacebookMarketingUpdateValidEnumsWebsiteCtr                                       SourceFacebookMarketingUpdateValidEnums = "website_ctr"
	SourceFacebookMarketingUpdateValidEnumsWebsitePurchaseRoas                              SourceFacebookMarketingUpdateValidEnums = "website_purchase_roas"
	SourceFacebookMarketingUpdateValidEnumsWishBid                                          SourceFacebookMarketingUpdateValidEnums = "wish_bid"
)

func (e SourceFacebookMarketingUpdateValidEnums) ToPointer() *SourceFacebookMarketingUpdateValidEnums {
	return &e
}
func (e *SourceFacebookMarketingUpdateValidEnums) UnmarshalJSON(data []byte) error {
	var v string
	if err := json.Unmarshal(data, &v); err != nil {
		return err
	}
	switch v {
	case "account_currency":
		fallthrough
	case "account_id":
		fallthrough
	case "account_name":
		fallthrough
	case "action_values":
		fallthrough
	case "actions":
		fallthrough
	case "ad_click_actions":
		fallthrough
	case "ad_id":
		fallthrough
	case "ad_impression_actions":
		fallthrough
	case "ad_name":
		fallthrough
	case "adset_end":
		fallthrough
	case "adset_id":
		fallthrough
	case "adset_name":
		fallthrough
	case "age_targeting":
		fallthrough
	case "attribution_setting":
		fallthrough
	case "auction_bid":
		fallthrough
	case "auction_competitiveness":
		fallthrough
	case "auction_max_competitor_bid":
		fallthrough
	case "average_purchases_conversion_value":
		fallthrough
	case "buying_type":
		fallthrough
	case "campaign_id":
		fallthrough
	case "campaign_name":
		fallthrough
	case "canvas_avg_view_percent":
		fallthrough
	case "canvas_avg_view_time":
		fallthrough
	case "catalog_segment_actions":
		fallthrough
	case "catalog_segment_value":
		fallthrough
	case "catalog_segment_value_mobile_purchase_roas":
		fallthrough
	case "catalog_segment_value_omni_purchase_roas":
		fallthrough
	case "catalog_segment_value_website_purchase_roas":
		fallthrough
	case "clicks":
		fallthrough
	case "conversion_rate_ranking":
		fallthrough
	case "conversion_values":
		fallthrough
	case "conversions":
		fallthrough
	case "converted_product_quantity":
		fallthrough
	case "converted_product_value":
		fallthrough
	case "cost_per_15_sec_video_view":
		fallthrough
	case "cost_per_2_sec_continuous_video_view":
		fallthrough
	case "cost_per_action_type":
		fallthrough
	case "cost_per_ad_click":
		fallthrough
	case "cost_per_conversion":
		fallthrough
	case "cost_per_dda_countby_convs":
		fallthrough
	case "cost_per_estimated_ad_recallers":
		fallthrough
	case "cost_per_inline_link_click":
		fallthrough
	case "cost_per_inline_post_engagement":
		fallthrough
	case "cost_per_one_thousand_ad_impression":
		fallthrough
	case "cost_per_outbound_click":
		fallthrough
	case "cost_per_thruplay":
		fallthrough
	case "cost_per_unique_action_type":
		fallthrough
	case "cost_per_unique_click":
		fallthrough
	case "cost_per_unique_conversion":
		fallthrough
	case "cost_per_unique_inline_link_click":
		fallthrough
	case "cost_per_unique_outbound_click":
		fallthrough
	case "cpc":
		fallthrough
	case "cpm":
		fallthrough
	case "cpp":
		fallthrough
	case "created_time":
		fallthrough
	case "creative_media_type":
		fallthrough
	case "ctr":
		fallthrough
	case "date_start":
		fallthrough
	case "date_stop":
		fallthrough
	case "dda_countby_convs":
		fallthrough
	case "dda_results":
		fallthrough
	case "engagement_rate_ranking":
		fallthrough
	case "estimated_ad_recall_rate":
		fallthrough
	case "estimated_ad_recall_rate_lower_bound":
		fallthrough
	case "estimated_ad_recall_rate_upper_bound":
		fallthrough
	case "estimated_ad_recallers":
		fallthrough
	case "estimated_ad_recallers_lower_bound":
		fallthrough
	case "estimated_ad_recallers_upper_bound":
		fallthrough
	case "frequency":
		fallthrough
	case "full_view_impressions":
		fallthrough
	case "full_view_reach":
		fallthrough
	case "gender_targeting":
		fallthrough
	case "impressions":
		fallthrough
	case "inline_link_click_ctr":
		fallthrough
	case "inline_link_clicks":
		fallthrough
	case "inline_post_engagement":
		fallthrough
	case "instagram_upcoming_event_reminders_set":
		fallthrough
	case "instant_experience_clicks_to_open":
		fallthrough
	case "instant_experience_clicks_to_start":
		fallthrough
	case "instant_experience_outbound_clicks":
		fallthrough
	case "interactive_component_tap":
		fallthrough
	case "labels":
		fallthrough
	case "location":
		fallthrough
	case "marketing_messages_cost_per_delivered":
		fallthrough
	case "marketing_messages_cost_per_link_btn_click":
		fallthrough
	case "marketing_messages_delivery_rate":
		fallthrough
	case "marketing_messages_link_btn_click_rate":
		fallthrough
	case "marketing_messages_media_view_rate":
		fallthrough
	case "marketing_messages_phone_call_btn_click_rate":
		fallthrough
	case "marketing_messages_quick_reply_btn_click_rate":
		fallthrough
	case "marketing_messages_read_rate":
		fallthrough
	case "marketing_messages_spend":
		fallthrough
	case "marketing_messages_website_purchase_values":
		fallthrough
	case "mobile_app_purchase_roas":
		fallthrough
	case "objective":
		fallthrough
	case "onsite_conversion_messaging_detected_purchase_deduped":
		fallthrough
	case "optimization_goal":
		fallthrough
	case "outbound_clicks":
		fallthrough
	case "outbound_clicks_ctr":
		fallthrough
	case "place_page_name":
		fallthrough
	case "purchase_roas":
		fallthrough
	case "qualifying_question_qualify_answer_rate":
		fallthrough
	case "quality_ranking":
		fallthrough
	case "reach":
		fallthrough
	case "shops_assisted_purchases":
		fallthrough
	case "social_spend":
		fallthrough
	case "spend":
		fallthrough
	case "total_postbacks":
		fallthrough
	case "total_postbacks_detailed":
		fallthrough
	case "total_postbacks_detailed_v4":
		fallthrough
	case "unique_actions":
		fallthrough
	case "unique_clicks":
		fallthrough
	case "unique_conversions":
		fallthrough
	case "unique_ctr":
		fallthrough
	case "unique_inline_link_click_ctr":
		fallthrough
	case "unique_inline_link_clicks":
		fallthrough
	case "unique_link_clicks_ctr":
		fallthrough
	case "unique_outbound_clicks":
		fallthrough
	case "unique_outbound_clicks_ctr":
		fallthrough
	case "unique_video_continuous_2_sec_watched_actions":
		fallthrough
	case "unique_video_view_15_sec":
		fallthrough
	case "updated_time":
		fallthrough
	case "video_15_sec_watched_actions":
		fallthrough
	case "video_30_sec_watched_actions":
		fallthrough
	case "video_avg_time_watched_actions":
		fallthrough
	case "video_continuous_2_sec_watched_actions":
		fallthrough
	case "video_p100_watched_actions":
		fallthrough
	case "video_p25_watched_actions":
		fallthrough
	case "video_p50_watched_actions":
		fallthrough
	case "video_p75_watched_actions":
		fallthrough
	case "video_p95_watched_actions":
		fallthrough
	case "video_play_actions":
		fallthrough
	case "video_play_curve_actions":
		fallthrough
	case "video_play_retention_0_to_15s_actions":
		fallthrough
	case "video_play_retention_20_to_60s_actions":
		fallthrough
	case "video_play_retention_graph_actions":
		fallthrough
	case "video_thruplay_watched_actions":
		fallthrough
	case "video_time_watched_actions":
		fallthrough
	case "website_ctr":
		fallthrough
	case "website_purchase_roas":
		fallthrough
	case "wish_bid":
		*e = SourceFacebookMarketingUpdateValidEnums(v)
		return nil
	default:
		return fmt.Errorf("invalid value for SourceFacebookMarketingUpdateValidEnums: %v", v)
	}
}

// SourceFacebookMarketingUpdateLevel - Chosen level for API
type SourceFacebookMarketingUpdateLevel string

const (
	SourceFacebookMarketingUpdateLevelAd       SourceFacebookMarketingUpdateLevel = "ad"
	SourceFacebookMarketingUpdateLevelAdset    SourceFacebookMarketingUpdateLevel = "adset"
	SourceFacebookMarketingUpdateLevelCampaign SourceFacebookMarketingUpdateLevel = "campaign"
	SourceFacebookMarketingUpdateLevelAccount  SourceFacebookMarketingUpdateLevel = "account"
)

func (e SourceFacebookMarketingUpdateLevel) ToPointer() *SourceFacebookMarketingUpdateLevel {
	return &e
}
func (e *SourceFacebookMarketingUpdateLevel) UnmarshalJSON(data []byte) error {
	var v string
	if err := json.Unmarshal(data, &v); err != nil {
		return err
	}
	switch v {
	case "ad":
		fallthrough
	case "adset":
		fallthrough
	case "campaign":
		fallthrough
	case "account":
		*e = SourceFacebookMarketingUpdateLevel(v)
		return nil
	default:
		return fmt.Errorf("invalid value for SourceFacebookMarketingUpdateLevel: %v", v)
	}
}

// SourceFacebookMarketingUpdateInsightConfig - Config for custom insights
type SourceFacebookMarketingUpdateInsightConfig struct {
	// A list of chosen action_breakdowns for action_breakdowns
	ActionBreakdowns []SourceFacebookMarketingUpdateValidActionBreakdowns `json:"action_breakdowns,omitempty"`
	// A list of chosen breakdowns for breakdowns
	Breakdowns []SourceFacebookMarketingUpdateValidBreakdowns `json:"breakdowns,omitempty"`
	// The date until which you'd like to replicate data for this stream, in the format YYYY-MM-DDT00:00:00Z. All data generated between the start date and this end date will be replicated. Not setting this option will result in always syncing the latest data.
	EndDate *time.Time `json:"end_date,omitempty"`
	// A list of chosen fields for fields parameter
	Fields []SourceFacebookMarketingUpdateValidEnums `json:"fields,omitempty"`
	// The insights job timeout
	InsightsJobTimeout *int64 `default:"60" json:"insights_job_timeout"`
	// The attribution window
	InsightsLookbackWindow *int64 `default:"28" json:"insights_lookback_window"`
	// Chosen level for API
	Level *SourceFacebookMarketingUpdateLevel `default:"ad" json:"level"`
	// The name value of insight
	Name string `json:"name"`
	// The date from which you'd like to replicate data for this stream, in the format YYYY-MM-DDT00:00:00Z.
	StartDate *time.Time `json:"start_date,omitempty"`
	// Time window in days by which to aggregate statistics. The sync will be chunked into N day intervals, where N is the number of days you specified. For example, if you set this value to 7, then all statistics will be reported as 7-day aggregates by starting from the start_date. If the start and end dates are October 1st and October 30th, then the connector will output 5 records: 01 - 06, 07 - 13, 14 - 20, 21 - 27, and 28 - 30 (3 days only). The minimum allowed value for this field is 1, and the maximum is 89.
	TimeIncrement *int64 `default:"1" json:"time_increment"`
}

func (s SourceFacebookMarketingUpdateInsightConfig) MarshalJSON() ([]byte, error) {
	return utils.MarshalJSON(s, "", false)
}

func (s *SourceFacebookMarketingUpdateInsightConfig) UnmarshalJSON(data []byte) error {
	if err := utils.UnmarshalJSON(data, &s, "", false, false); err != nil {
		return err
	}
	return nil
}

func (o *SourceFacebookMarketingUpdateInsightConfig) GetActionBreakdowns() []SourceFacebookMarketingUpdateValidActionBreakdowns {
	if o == nil {
		return nil
	}
	return o.ActionBreakdowns
}

func (o *SourceFacebookMarketingUpdateInsightConfig) GetBreakdowns() []SourceFacebookMarketingUpdateValidBreakdowns {
	if o == nil {
		return nil
	}
	return o.Breakdowns
}

func (o *SourceFacebookMarketingUpdateInsightConfig) GetEndDate() *time.Time {
	if o == nil {
		return nil
	}
	return o.EndDate
}

func (o *SourceFacebookMarketingUpdateInsightConfig) GetFields() []SourceFacebookMarketingUpdateValidEnums {
	if o == nil {
		return nil
	}
	return o.Fields
}

func (o *SourceFacebookMarketingUpdateInsightConfig) GetInsightsJobTimeout() *int64 {
	if o == nil {
		return nil
	}
	return o.InsightsJobTimeout
}

func (o *SourceFacebookMarketingUpdateInsightConfig) GetInsightsLookbackWindow() *int64 {
	if o == nil {
		return nil
	}
	return o.InsightsLookbackWindow
}

func (o *SourceFacebookMarketingUpdateInsightConfig) GetLevel() *SourceFacebookMarketingUpdateLevel {
	if o == nil {
		return nil
	}
	return o.Level
}

func (o *SourceFacebookMarketingUpdateInsightConfig) GetName() string {
	if o == nil {
		return ""
	}
	return o.Name
}

func (o *SourceFacebookMarketingUpdateInsightConfig) GetStartDate() *time.Time {
	if o == nil {
		return nil
	}
	return o.StartDate
}

func (o *SourceFacebookMarketingUpdateInsightConfig) GetTimeIncrement() *int64 {
	if o == nil {
		return nil
	}
	return o.TimeIncrement
}

type SourceFacebookMarketingUpdate struct {
	// The value of the generated access token. From your App’s Dashboard, click on "Marketing API" then "Tools". Select permissions <b>ads_management, ads_read, read_insights, business_management</b>. Then click on "Get token". See the <a href="https://docs.airbyte.com/integrations/sources/facebook-marketing">docs</a> for more information.
	AccessToken *string `json:"access_token,omitempty"`
	// The Facebook Ad account ID(s) to pull data from. The Ad account ID number is in the account dropdown menu or in your browser's address bar of your <a href="https://adsmanager.facebook.com/adsmanager/">Meta Ads Manager</a>. See the <a href="https://www.facebook.com/business/help/1492627900875762">docs</a> for more information.
	AccountIds []string `json:"account_ids"`
	// Select the statuses you want to be loaded in the stream. If no specific statuses are selected, the API's default behavior applies, and some statuses may be filtered out.
	AdStatuses []SourceFacebookMarketingUpdateValidAdStatuses `json:"ad_statuses,omitempty"`
	// Select the statuses you want to be loaded in the stream. If no specific statuses are selected, the API's default behavior applies, and some statuses may be filtered out.
	AdsetStatuses []SourceFacebookMarketingUpdateValidAdSetStatuses `json:"adset_statuses,omitempty"`
	// Select the statuses you want to be loaded in the stream. If no specific statuses are selected, the API's default behavior applies, and some statuses may be filtered out.
	CampaignStatuses []SourceFacebookMarketingUpdateValidCampaignStatuses `json:"campaign_statuses,omitempty"`
	// Credentials for connecting to the Facebook Marketing API
	Credentials SourceFacebookMarketingUpdateAuthentication `json:"credentials"`
	// A list which contains ad statistics entries, each entry must have a name and can contains fields, breakdowns or action_breakdowns. Click on "add" to fill this field.
	CustomInsights []SourceFacebookMarketingUpdateInsightConfig `json:"custom_insights,omitempty"`
	// The date until which you'd like to replicate data for all incremental streams, in the format YYYY-MM-DDT00:00:00Z. All data generated between the start date and this end date will be replicated. Not setting this option will result in always syncing the latest data.
	EndDate *time.Time `json:"end_date,omitempty"`
	// Set to active if you want to fetch the thumbnail_url and store the result in thumbnail_data_url for each Ad Creative.
	FetchThumbnailImages *bool `default:"false" json:"fetch_thumbnail_images"`
	// Insights Job Timeout establishes the maximum amount of time (in minutes) of waiting for the report job to complete. When timeout is reached the job is considered failed and we are trying to request smaller amount of data by breaking the job to few smaller ones. If you definitely know that 60 minutes is not enough for your report to be processed then you can decrease the timeout value, so we start breaking job to smaller parts faster.
	InsightsJobTimeout *int64 `default:"60" json:"insights_job_timeout"`
	// The attribution window. Facebook freezes insight data 28 days after it was generated, which means that all data from the past 28 days may have changed since we last emitted it, so you can retrieve refreshed insights from the past by setting this parameter. If you set a custom lookback window value in Facebook account, please provide the same value here.
	InsightsLookbackWindow *int64 `default:"28" json:"insights_lookback_window"`
	// Page size used when sending requests to Facebook API to specify number of records per page when response has pagination. Most users do not need to set this field unless they specifically need to tune the connector to address specific issues or use cases.
	PageSize *int64 `default:"100" json:"page_size"`
	// The date from which you'd like to replicate data for all incremental streams, in the format YYYY-MM-DDT00:00:00Z. If not set then all data will be replicated for usual streams and only last 2 years for insight streams.
	StartDate *time.Time `json:"start_date,omitempty"`
}

func (s SourceFacebookMarketingUpdate) MarshalJSON() ([]byte, error) {
	return utils.MarshalJSON(s, "", false)
}

func (s *SourceFacebookMarketingUpdate) UnmarshalJSON(data []byte) error {
	if err := utils.UnmarshalJSON(data, &s, "", false, false); err != nil {
		return err
	}
	return nil
}

func (o *SourceFacebookMarketingUpdate) GetAccessToken() *string {
	if o == nil {
		return nil
	}
	return o.AccessToken
}

func (o *SourceFacebookMarketingUpdate) GetAccountIds() []string {
	if o == nil {
		return []string{}
	}
	return o.AccountIds
}

func (o *SourceFacebookMarketingUpdate) GetAdStatuses() []SourceFacebookMarketingUpdateValidAdStatuses {
	if o == nil {
		return nil
	}
	return o.AdStatuses
}

func (o *SourceFacebookMarketingUpdate) GetAdsetStatuses() []SourceFacebookMarketingUpdateValidAdSetStatuses {
	if o == nil {
		return nil
	}
	return o.AdsetStatuses
}

func (o *SourceFacebookMarketingUpdate) GetCampaignStatuses() []SourceFacebookMarketingUpdateValidCampaignStatuses {
	if o == nil {
		return nil
	}
	return o.CampaignStatuses
}

func (o *SourceFacebookMarketingUpdate) GetCredentials() SourceFacebookMarketingUpdateAuthentication {
	if o == nil {
		return SourceFacebookMarketingUpdateAuthentication{}
	}
	return o.Credentials
}

func (o *SourceFacebookMarketingUpdate) GetCustomInsights() []SourceFacebookMarketingUpdateInsightConfig {
	if o == nil {
		return nil
	}
	return o.CustomInsights
}

func (o *SourceFacebookMarketingUpdate) GetEndDate() *time.Time {
	if o == nil {
		return nil
	}
	return o.EndDate
}

func (o *SourceFacebookMarketingUpdate) GetFetchThumbnailImages() *bool {
	if o == nil {
		return nil
	}
	return o.FetchThumbnailImages
}

func (o *SourceFacebookMarketingUpdate) GetInsightsJobTimeout() *int64 {
	if o == nil {
		return nil
	}
	return o.InsightsJobTimeout
}

func (o *SourceFacebookMarketingUpdate) GetInsightsLookbackWindow() *int64 {
	if o == nil {
		return nil
	}
	return o.InsightsLookbackWindow
}

func (o *SourceFacebookMarketingUpdate) GetPageSize() *int64 {
	if o == nil {
		return nil
	}
	return o.PageSize
}

func (o *SourceFacebookMarketingUpdate) GetStartDate() *time.Time {
	if o == nil {
		return nil
	}
	return o.StartDate
}
