// 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 (
	strfmt "github.com/go-openapi/strfmt"

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

// GetSovereigntyStructuresOKBodyItems get_sovereignty_structures_200_ok
//
// 200 ok object
// swagger:model getSovereigntyStructuresOKBodyItems

type GetSovereigntyStructuresOKBodyItems struct {

	// get_sovereignty_structures_alliance_id
	//
	// The alliance that owns the structure.
	//
	// Required: true
	AllianceID *int32 `json:"alliance_id"`

	// get_sovereignty_structures_solar_system_id
	//
	// Solar system in which the structure is located.
	//
	// Required: true
	SolarSystemID *int32 `json:"solar_system_id"`

	// get_sovereignty_structures_structure_id
	//
	// Unique item ID for this structure.
	// Required: true
	StructureID *int64 `json:"structure_id"`

	// get_sovereignty_structures_structure_type_id
	//
	// A reference to the type of structure this is.
	//
	// Required: true
	StructureTypeID *int32 `json:"structure_type_id"`

	// get_sovereignty_structures_vulnerability_occupancy_level
	//
	// The occupancy level for the next or current vulnerability window. This takes into account all development indexes and capital system bonuses. Also known as Activity Defense Multiplier from in the client. It increases the time that attackers must spend using their entosis links on the structure.
	//
	VulnerabilityOccupancyLevel float32 `json:"vulnerability_occupancy_level,omitempty"`

	// get_sovereignty_structures_vulnerable_end_time
	//
	// The time at which the next or current vulnerability window ends. At the end of a vulnerability window the next window is recalculated and locked in along with the vulnerabilityOccupancyLevel. If the structure is not in 100% entosis control of the defender, it will go in to 'overtime' and stay vulnerable for as long as that situation persists. Only once the defenders have 100% entosis control and has the vulnerableEndTime passed does the vulnerability interval expire and a new one is calculated.
	//
	VulnerableEndTime strfmt.DateTime `json:"vulnerable_end_time,omitempty"`

	// get_sovereignty_structures_vulnerable_start_time
	//
	// The next time at which the structure will become vulnerable. Or the start time of the current window if current time is between this and vulnerableEndTime.
	//
	VulnerableStartTime strfmt.DateTime `json:"vulnerable_start_time,omitempty"`
}

/* polymorph getSovereigntyStructuresOKBodyItems alliance_id false */

/* polymorph getSovereigntyStructuresOKBodyItems solar_system_id false */

/* polymorph getSovereigntyStructuresOKBodyItems structure_id false */

/* polymorph getSovereigntyStructuresOKBodyItems structure_type_id false */

/* polymorph getSovereigntyStructuresOKBodyItems vulnerability_occupancy_level false */

/* polymorph getSovereigntyStructuresOKBodyItems vulnerable_end_time false */

/* polymorph getSovereigntyStructuresOKBodyItems vulnerable_start_time false */

// Validate validates this get sovereignty structures o k body items
func (m *GetSovereigntyStructuresOKBodyItems) Validate(formats strfmt.Registry) error {
	var res []error

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

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

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

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

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

func (m *GetSovereigntyStructuresOKBodyItems) validateAllianceID(formats strfmt.Registry) error {

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

	return nil
}

func (m *GetSovereigntyStructuresOKBodyItems) validateSolarSystemID(formats strfmt.Registry) error {

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

	return nil
}

func (m *GetSovereigntyStructuresOKBodyItems) validateStructureID(formats strfmt.Registry) error {

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

	return nil
}

func (m *GetSovereigntyStructuresOKBodyItems) validateStructureTypeID(formats strfmt.Registry) error {

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

	return nil
}

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

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