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

package ops

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

import (
	"context"

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

// TenantAddImpersonateReq tenant add impersonate req
//
// swagger:model tenant.AddImpersonateReq
type TenantAddImpersonateReq struct {

	// expire at
	// Required: true
	ExpireAt *int64 `json:"expire_at"`

	// reason
	// Required: true
	Reason *string `json:"reason"`

	// tenant id
	// Example: 0
	// Required: true
	TenantID *string `json:"tenant_id"`
}

// Validate validates this tenant add impersonate req
func (m *TenantAddImpersonateReq) Validate(formats strfmt.Registry) error {
	var res []error

	if err := m.validateExpireAt(formats); err != nil {
		res = append(res, err)
	}

	if err := m.validateReason(formats); err != nil {
		res = append(res, err)
	}

	if err := m.validateTenantID(formats); err != nil {
		res = append(res, err)
	}

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

func (m *TenantAddImpersonateReq) validateExpireAt(formats strfmt.Registry) error {

	if err := validate.Required("expire_at", "body", m.ExpireAt); err != nil {
		return err
	}

	return nil
}

func (m *TenantAddImpersonateReq) validateReason(formats strfmt.Registry) error {

	if err := validate.Required("reason", "body", m.Reason); err != nil {
		return err
	}

	return nil
}

func (m *TenantAddImpersonateReq) validateTenantID(formats strfmt.Registry) error {

	if err := validate.Required("tenant_id", "body", m.TenantID); err != nil {
		return err
	}

	return nil
}

// ContextValidate validates this tenant add impersonate req based on context it is used
func (m *TenantAddImpersonateReq) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
	return nil
}

// MarshalBinary interface implementation
func (m *TenantAddImpersonateReq) MarshalBinary() ([]byte, error) {
	if m == nil {
		return nil, nil
	}
	return swag.WriteJSON(m)
}

// UnmarshalBinary interface implementation
func (m *TenantAddImpersonateReq) UnmarshalBinary(b []byte) error {
	var res TenantAddImpersonateReq
	if err := swag.ReadJSON(b, &res); err != nil {
		return err
	}
	*m = res
	return nil
}
