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

package shared

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

type Boldsign string

const (
	BoldsignBoldsign Boldsign = "boldsign"
)

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

type SourceBoldsign struct {
	// Your BoldSign API key. You can generate it by navigating to the API menu in the BoldSign app, selecting 'API Key', and clicking 'Generate API Key'. Copy the generated key and paste it here.
	APIKey     string    `json:"api_key"`
	StartDate  time.Time `json:"start_date"`
	sourceType Boldsign  `const:"boldsign" json:"sourceType"`
}

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

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

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

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

func (o *SourceBoldsign) GetSourceType() Boldsign {
	return BoldsignBoldsign
}
