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

package shared

import (
	"github.com/airbytehq/terraform-provider-airbyte/internal/sdk/internal/utils"
	"github.com/airbytehq/terraform-provider-airbyte/internal/sdk/types"
)

type SourceNasaUpdate struct {
	// API access key used to retrieve data from the NASA APOD API.
	APIKey string `json:"api_key"`
	// Indicates whether concept tags should be returned with the rest of the response.  The concept tags are not necessarily included in the explanation, but rather derived from common search tags that are associated with the description text. (Better than just pure text search.) Defaults to False.
	ConceptTags *bool `default:"false" json:"concept_tags"`
	// A positive integer, no greater than 100. If this is specified then `count` randomly  chosen images will be returned in a JSON array. Cannot be used in conjunction with  `date` or `start_date` and `end_date`.
	Count *int64 `json:"count,omitempty"`
	// Indicates that end of a date range. If `start_date` is specified without an `end_date` then `end_date` defaults to the current date.
	EndDate *types.Date `json:"end_date,omitempty"`
	// Indicates the start of a date range. All images in the range from `start_date` to  `end_date` will be returned in a JSON array. Must be after 1995-06-16, the first day an APOD picture was posted. There are no images for tomorrow available through this API.
	StartDate *types.Date `json:"start_date,omitempty"`
	// Indicates whether the API should return a thumbnail image URL for video files. If set to True, the API returns URL of video thumbnail. If an APOD is not a video, this parameter is ignored.
	Thumbs *bool `default:"false" json:"thumbs"`
}

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

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

func (o *SourceNasaUpdate) GetAPIKey() string {
	if o == nil {
		return ""
	}
	return o.APIKey
}

func (o *SourceNasaUpdate) GetConceptTags() *bool {
	if o == nil {
		return nil
	}
	return o.ConceptTags
}

func (o *SourceNasaUpdate) GetCount() *int64 {
	if o == nil {
		return nil
	}
	return o.Count
}

func (o *SourceNasaUpdate) GetEndDate() *types.Date {
	if o == nil {
		return nil
	}
	return o.EndDate
}

func (o *SourceNasaUpdate) GetStartDate() *types.Date {
	if o == nil {
		return nil
	}
	return o.StartDate
}

func (o *SourceNasaUpdate) GetThumbs() *bool {
	if o == nil {
		return nil
	}
	return o.Thumbs
}
