package requests import ( "time" "github.com/shopspring/decimal" ) // CreateResidenceRequest represents the request to create a residence type CreateResidenceRequest struct { Name string `json:"name" validate:"required,min=1,max=200"` PropertyTypeID *uint `json:"property_type_id"` StreetAddress string `json:"street_address" validate:"max=255"` ApartmentUnit string `json:"apartment_unit" validate:"max=50"` City string `json:"city" validate:"max=100"` StateProvince string `json:"state_province" validate:"max=100"` PostalCode string `json:"postal_code" validate:"max=20"` Country string `json:"country" validate:"max=100"` Bedrooms *int `json:"bedrooms" validate:"omitempty,min=0"` Bathrooms *decimal.Decimal `json:"bathrooms"` SquareFootage *int `json:"square_footage" validate:"omitempty,min=0"` LotSize *decimal.Decimal `json:"lot_size"` YearBuilt *int `json:"year_built"` Description string `json:"description" validate:"max=10000"` PurchaseDate *time.Time `json:"purchase_date"` PurchasePrice *decimal.Decimal `json:"purchase_price"` IsPrimary *bool `json:"is_primary"` // Home Profile HeatingType *string `json:"heating_type" validate:"omitempty,oneof=gas_furnace electric_furnace heat_pump boiler radiant other"` CoolingType *string `json:"cooling_type" validate:"omitempty,oneof=central_ac window_ac heat_pump evaporative none other"` WaterHeaterType *string `json:"water_heater_type" validate:"omitempty,oneof=tank_gas tank_electric tankless_gas tankless_electric heat_pump solar other"` RoofType *string `json:"roof_type" validate:"omitempty,oneof=asphalt_shingle metal tile slate wood_shake flat other"` HasPool *bool `json:"has_pool"` HasSprinklerSystem *bool `json:"has_sprinkler_system"` HasSeptic *bool `json:"has_septic"` HasFireplace *bool `json:"has_fireplace"` HasGarage *bool `json:"has_garage"` HasBasement *bool `json:"has_basement"` HasAttic *bool `json:"has_attic"` ExteriorType *string `json:"exterior_type" validate:"omitempty,oneof=brick vinyl_siding wood_siding stucco stone fiber_cement other"` FlooringPrimary *string `json:"flooring_primary" validate:"omitempty,oneof=hardwood laminate tile carpet vinyl concrete other"` LandscapingType *string `json:"landscaping_type" validate:"omitempty,oneof=lawn desert xeriscape garden mixed none other"` } // UpdateResidenceRequest represents the request to update a residence type UpdateResidenceRequest struct { Name *string `json:"name" validate:"omitempty,min=1,max=200"` PropertyTypeID *uint `json:"property_type_id"` StreetAddress *string `json:"street_address" validate:"omitempty,max=255"` ApartmentUnit *string `json:"apartment_unit" validate:"omitempty,max=50"` City *string `json:"city" validate:"omitempty,max=100"` StateProvince *string `json:"state_province" validate:"omitempty,max=100"` PostalCode *string `json:"postal_code" validate:"omitempty,max=20"` Country *string `json:"country" validate:"omitempty,max=100"` Bedrooms *int `json:"bedrooms" validate:"omitempty,min=0"` Bathrooms *decimal.Decimal `json:"bathrooms"` SquareFootage *int `json:"square_footage" validate:"omitempty,min=0"` LotSize *decimal.Decimal `json:"lot_size"` YearBuilt *int `json:"year_built"` Description *string `json:"description" validate:"omitempty,max=10000"` PurchaseDate *time.Time `json:"purchase_date"` PurchasePrice *decimal.Decimal `json:"purchase_price"` IsPrimary *bool `json:"is_primary"` // Home Profile HeatingType *string `json:"heating_type" validate:"omitempty,oneof=gas_furnace electric_furnace heat_pump boiler radiant other"` CoolingType *string `json:"cooling_type" validate:"omitempty,oneof=central_ac window_ac heat_pump evaporative none other"` WaterHeaterType *string `json:"water_heater_type" validate:"omitempty,oneof=tank_gas tank_electric tankless_gas tankless_electric heat_pump solar other"` RoofType *string `json:"roof_type" validate:"omitempty,oneof=asphalt_shingle metal tile slate wood_shake flat other"` HasPool *bool `json:"has_pool"` HasSprinklerSystem *bool `json:"has_sprinkler_system"` HasSeptic *bool `json:"has_septic"` HasFireplace *bool `json:"has_fireplace"` HasGarage *bool `json:"has_garage"` HasBasement *bool `json:"has_basement"` HasAttic *bool `json:"has_attic"` ExteriorType *string `json:"exterior_type" validate:"omitempty,oneof=brick vinyl_siding wood_siding stucco stone fiber_cement other"` FlooringPrimary *string `json:"flooring_primary" validate:"omitempty,oneof=hardwood laminate tile carpet vinyl concrete other"` LandscapingType *string `json:"landscaping_type" validate:"omitempty,oneof=lawn desert xeriscape garden mixed none other"` } // JoinWithCodeRequest represents the request to join a residence via share code type JoinWithCodeRequest struct { Code string `json:"code" validate:"required,len=6"` } // GenerateShareCodeRequest represents the request to generate a share code type GenerateShareCodeRequest struct { ExpiresInHours int `json:"expires_in_hours" validate:"omitempty,min=1"` // Default: 24 hours }