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

package components

import (
	"encoding/json"
	"fmt"
)

type TrackedScanTaskStatus string

const (
	TrackedScanTaskStatusUnknown   TrackedScanTaskStatus = ""
	TrackedScanTaskStatusScanning  TrackedScanTaskStatus = "scanning"
	TrackedScanTaskStatusScanned   TrackedScanTaskStatus = "scanned"
	TrackedScanTaskStatusRejected  TrackedScanTaskStatus = "rejected"
	TrackedScanTaskStatusTimedOut  TrackedScanTaskStatus = "timed_out"
	TrackedScanTaskStatusCompleted TrackedScanTaskStatus = "completed"
	TrackedScanTaskStatusIgnored   TrackedScanTaskStatus = "ignored"
)

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

type TrackedScanTask struct {
	Description *string                `json:"description,omitempty"`
	Status      *TrackedScanTaskStatus `json:"status,omitempty"`
	UpdateTime  *string                `json:"update_time,omitempty"`
}

func (o *TrackedScanTask) GetDescription() *string {
	if o == nil {
		return nil
	}
	return o.Description
}

func (o *TrackedScanTask) GetStatus() *TrackedScanTaskStatus {
	if o == nil {
		return nil
	}
	return o.Status
}

func (o *TrackedScanTask) GetUpdateTime() *string {
	if o == nil {
		return nil
	}
	return o.UpdateTime
}
