// Code generated by go-swagger; DO NOT EDIT.

package models

// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command

import (
	"context"
	"encoding/json"

	"github.com/go-openapi/errors"
	"github.com/go-openapi/strfmt"
	"github.com/go-openapi/validate"
)

// HashicorpCloudResourcemanagerCheckID Enumerates all supported checks across categories.
//
//   - CHECK_ID_BILLING_IS_ONLY_ACCOUNT: BILLING
//
// Is only account checks that this billing account is this org's
// only account.
//   - CHECK_ID_BILLING_VALID_ACCOUNT_STATUS: Valid account status checks that the billing account has a valid status
//
// either "ACTIVE", "DELETING", or "TRIAL".
//   - CHECK_ID_BILLING_NO_ACTIVE_CONTRACTS: No active contracts checks that the billing account does not have an
//
// active Flex or Entitlement contract.
//   - CHECK_ID_BILLING_NO_UNPAID_INVOICES: No unpaid invoices checks that the billing account does not have any
//
// unpaid invoices remaining.
//   - CHECK_ID_BILLING_NO_ACTIVE_BILLED_RESOURCES: No active billed resources checks that the billing account does not have
//
// any billed resources attached to it anymore.
//   - CHECK_ID_IDENTITY_NO_NON_OWNER_REMAINS: IDENTITY
//   - CHECK_ID_RESOURCES_EMPTY: RESOURCES
//
// swagger:model hashicorp.cloud.resourcemanager.CheckId
type HashicorpCloudResourcemanagerCheckID string

func NewHashicorpCloudResourcemanagerCheckID(value HashicorpCloudResourcemanagerCheckID) *HashicorpCloudResourcemanagerCheckID {
	return &value
}

// Pointer returns a pointer to a freshly-allocated HashicorpCloudResourcemanagerCheckID.
func (m HashicorpCloudResourcemanagerCheckID) Pointer() *HashicorpCloudResourcemanagerCheckID {
	return &m
}

const (

	// HashicorpCloudResourcemanagerCheckIDCHECKIDUNSPECIFIED captures enum value "CHECK_ID_UNSPECIFIED"
	HashicorpCloudResourcemanagerCheckIDCHECKIDUNSPECIFIED HashicorpCloudResourcemanagerCheckID = "CHECK_ID_UNSPECIFIED"

	// HashicorpCloudResourcemanagerCheckIDCHECKIDBILLINGISONLYACCOUNT captures enum value "CHECK_ID_BILLING_IS_ONLY_ACCOUNT"
	HashicorpCloudResourcemanagerCheckIDCHECKIDBILLINGISONLYACCOUNT HashicorpCloudResourcemanagerCheckID = "CHECK_ID_BILLING_IS_ONLY_ACCOUNT"

	// HashicorpCloudResourcemanagerCheckIDCHECKIDBILLINGVALIDACCOUNTSTATUS captures enum value "CHECK_ID_BILLING_VALID_ACCOUNT_STATUS"
	HashicorpCloudResourcemanagerCheckIDCHECKIDBILLINGVALIDACCOUNTSTATUS HashicorpCloudResourcemanagerCheckID = "CHECK_ID_BILLING_VALID_ACCOUNT_STATUS"

	// HashicorpCloudResourcemanagerCheckIDCHECKIDBILLINGNOACTIVECONTRACTS captures enum value "CHECK_ID_BILLING_NO_ACTIVE_CONTRACTS"
	HashicorpCloudResourcemanagerCheckIDCHECKIDBILLINGNOACTIVECONTRACTS HashicorpCloudResourcemanagerCheckID = "CHECK_ID_BILLING_NO_ACTIVE_CONTRACTS"

	// HashicorpCloudResourcemanagerCheckIDCHECKIDBILLINGNOUNPAIDINVOICES captures enum value "CHECK_ID_BILLING_NO_UNPAID_INVOICES"
	HashicorpCloudResourcemanagerCheckIDCHECKIDBILLINGNOUNPAIDINVOICES HashicorpCloudResourcemanagerCheckID = "CHECK_ID_BILLING_NO_UNPAID_INVOICES"

	// HashicorpCloudResourcemanagerCheckIDCHECKIDBILLINGNOACTIVEBILLEDRESOURCES captures enum value "CHECK_ID_BILLING_NO_ACTIVE_BILLED_RESOURCES"
	HashicorpCloudResourcemanagerCheckIDCHECKIDBILLINGNOACTIVEBILLEDRESOURCES HashicorpCloudResourcemanagerCheckID = "CHECK_ID_BILLING_NO_ACTIVE_BILLED_RESOURCES"

	// HashicorpCloudResourcemanagerCheckIDCHECKIDIDENTITYNONONOWNERREMAINS captures enum value "CHECK_ID_IDENTITY_NO_NON_OWNER_REMAINS"
	HashicorpCloudResourcemanagerCheckIDCHECKIDIDENTITYNONONOWNERREMAINS HashicorpCloudResourcemanagerCheckID = "CHECK_ID_IDENTITY_NO_NON_OWNER_REMAINS"

	// HashicorpCloudResourcemanagerCheckIDCHECKIDIDENTITYNONONOWNERGROUPREMAINS captures enum value "CHECK_ID_IDENTITY_NO_NON_OWNER_GROUP_REMAINS"
	HashicorpCloudResourcemanagerCheckIDCHECKIDIDENTITYNONONOWNERGROUPREMAINS HashicorpCloudResourcemanagerCheckID = "CHECK_ID_IDENTITY_NO_NON_OWNER_GROUP_REMAINS"

	// HashicorpCloudResourcemanagerCheckIDCHECKIDIDENTITYSSONOTENABLED captures enum value "CHECK_ID_IDENTITY_SSO_NOT_ENABLED"
	HashicorpCloudResourcemanagerCheckIDCHECKIDIDENTITYSSONOTENABLED HashicorpCloudResourcemanagerCheckID = "CHECK_ID_IDENTITY_SSO_NOT_ENABLED"

	// HashicorpCloudResourcemanagerCheckIDCHECKIDIDENTITYSCIMNOTENABLED captures enum value "CHECK_ID_IDENTITY_SCIM_NOT_ENABLED"
	HashicorpCloudResourcemanagerCheckIDCHECKIDIDENTITYSCIMNOTENABLED HashicorpCloudResourcemanagerCheckID = "CHECK_ID_IDENTITY_SCIM_NOT_ENABLED"

	// HashicorpCloudResourcemanagerCheckIDCHECKIDIDENTITYNOSERVICEPRINCIPALREMAINS captures enum value "CHECK_ID_IDENTITY_NO_SERVICE_PRINCIPAL_REMAINS"
	HashicorpCloudResourcemanagerCheckIDCHECKIDIDENTITYNOSERVICEPRINCIPALREMAINS HashicorpCloudResourcemanagerCheckID = "CHECK_ID_IDENTITY_NO_SERVICE_PRINCIPAL_REMAINS"

	// HashicorpCloudResourcemanagerCheckIDCHECKIDRESOURCESEMPTY captures enum value "CHECK_ID_RESOURCES_EMPTY"
	HashicorpCloudResourcemanagerCheckIDCHECKIDRESOURCESEMPTY HashicorpCloudResourcemanagerCheckID = "CHECK_ID_RESOURCES_EMPTY"

	// HashicorpCloudResourcemanagerCheckIDCHECKIDRESOURCESNOPROJECTSEXIST captures enum value "CHECK_ID_RESOURCES_NO_PROJECTS_EXIST"
	HashicorpCloudResourcemanagerCheckIDCHECKIDRESOURCESNOPROJECTSEXIST HashicorpCloudResourcemanagerCheckID = "CHECK_ID_RESOURCES_NO_PROJECTS_EXIST"
)

// for schema
var hashicorpCloudResourcemanagerCheckIdEnum []interface{}

func init() {
	var res []HashicorpCloudResourcemanagerCheckID
	if err := json.Unmarshal([]byte(`["CHECK_ID_UNSPECIFIED","CHECK_ID_BILLING_IS_ONLY_ACCOUNT","CHECK_ID_BILLING_VALID_ACCOUNT_STATUS","CHECK_ID_BILLING_NO_ACTIVE_CONTRACTS","CHECK_ID_BILLING_NO_UNPAID_INVOICES","CHECK_ID_BILLING_NO_ACTIVE_BILLED_RESOURCES","CHECK_ID_IDENTITY_NO_NON_OWNER_REMAINS","CHECK_ID_IDENTITY_NO_NON_OWNER_GROUP_REMAINS","CHECK_ID_IDENTITY_SSO_NOT_ENABLED","CHECK_ID_IDENTITY_SCIM_NOT_ENABLED","CHECK_ID_IDENTITY_NO_SERVICE_PRINCIPAL_REMAINS","CHECK_ID_RESOURCES_EMPTY","CHECK_ID_RESOURCES_NO_PROJECTS_EXIST"]`), &res); err != nil {
		panic(err)
	}
	for _, v := range res {
		hashicorpCloudResourcemanagerCheckIdEnum = append(hashicorpCloudResourcemanagerCheckIdEnum, v)
	}
}

func (m HashicorpCloudResourcemanagerCheckID) validateHashicorpCloudResourcemanagerCheckIDEnum(path, location string, value HashicorpCloudResourcemanagerCheckID) error {
	if err := validate.EnumCase(path, location, value, hashicorpCloudResourcemanagerCheckIdEnum, true); err != nil {
		return err
	}
	return nil
}

// Validate validates this hashicorp cloud resourcemanager check Id
func (m HashicorpCloudResourcemanagerCheckID) Validate(formats strfmt.Registry) error {
	var res []error

	// value enum
	if err := m.validateHashicorpCloudResourcemanagerCheckIDEnum("", "body", m); err != nil {
		return err
	}

	if len(res) > 0 {
		return errors.CompositeValidationError(res...)
	}
	return nil
}

// ContextValidate validates this hashicorp cloud resourcemanager check Id based on context it is used
func (m HashicorpCloudResourcemanagerCheckID) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
	return nil
}
