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"` Bathrooms *decimal.Decimal `json:"bathrooms"` SquareFootage *int `json:"square_footage"` LotSize *decimal.Decimal `json:"lot_size"` YearBuilt *int `json:"year_built"` Description string `json:"description"` PurchaseDate *time.Time `json:"purchase_date"` PurchasePrice *decimal.Decimal `json:"purchase_price"` IsPrimary *bool `json:"is_primary"` } // 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"` Bathrooms *decimal.Decimal `json:"bathrooms"` SquareFootage *int `json:"square_footage"` LotSize *decimal.Decimal `json:"lot_size"` YearBuilt *int `json:"year_built"` Description *string `json:"description"` PurchaseDate *time.Time `json:"purchase_date"` PurchasePrice *decimal.Decimal `json:"purchase_price"` IsPrimary *bool `json:"is_primary"` } // 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"` // Default: 24 hours }