github.com/aiven/aiven-go-client@v1.36.0/service_types.go (about) 1 package aiven 2 3 type ( 4 // GetServicePlanResponse Aiven API request 5 // GET https://api.aiven.io/v1/project/<project>/service-types/<service_type>/plans/<service_plan> 6 GetServicePlanResponse struct { 7 APIResponse 8 DiskSpaceCapMB int `json:"disk_space_cap_mb"` 9 DiskSpaceMB int `json:"disk_space_mb"` 10 DiskSpaceStepMB int `json:"disk_space_step_mb"` 11 //TODO: remaining fields 12 } 13 14 // GetServicePlanPricingResponse Aiven API request 15 // GET https://api.aiven.io/v1/project/<project>/pricing/service-types/<service_type>/plans/<service_plan>/cloud/<cloud> 16 GetServicePlanPricingResponse struct { 17 APIResponse 18 BasePriceUSD string `json:"base_price_usd"` 19 ExtraDiskPricePerGBUSD string `json:"extra_disk_price_per_gb_usd"` 20 //TODO: remaining fields 21 } 22 23 // ServiceTypesHandler is the client that interacts with the Service Types API endpoints on Aiven. 24 ServiceTypesHandler struct { 25 client *Client 26 } 27 ) 28 29 // Get fetches the service plan from Aiven 30 func (h *ServiceTypesHandler) GetPlan(project, serviceType, servicePlan string) (*GetServicePlanResponse, error) { 31 path := buildPath("project", project, "service-types", serviceType, "plans", servicePlan) 32 bts, err := h.client.doGetRequest(path, nil) 33 if err != nil { 34 return nil, err 35 } 36 37 var r GetServicePlanResponse 38 errR := checkAPIResponse(bts, &r) 39 40 return &r, errR 41 } 42 43 // Get fetches the pricing for the service plan from Aiven 44 func (h *ServiceTypesHandler) GetPlanPricing(project, serviceType, servicePlan, cloudName string) (*GetServicePlanPricingResponse, error) { 45 path := buildPath("project", project, "pricing", "service-types", serviceType, "plans", servicePlan, "clouds", cloudName) 46 bts, err := h.client.doGetRequest(path, nil) 47 if err != nil { 48 return nil, err 49 } 50 51 var r GetServicePlanPricingResponse 52 errR := checkAPIResponse(bts, &r) 53 54 return &r, errR 55 }