1package api 2 3func (c *Sys) InitStatus() (bool, error) { 4 r := c.c.NewRequest("GET", "/v1/sys/init") 5 resp, err := c.c.RawRequest(r) 6 if err != nil { 7 return false, err 8 } 9 defer resp.Body.Close() 10 11 var result InitStatusResponse 12 err = resp.DecodeJSON(&result) 13 return result.Initialized, err 14} 15 16func (c *Sys) Init(opts *InitRequest) (*InitResponse, error) { 17 r := c.c.NewRequest("PUT", "/v1/sys/init") 18 if err := r.SetJSONBody(opts); err != nil { 19 return nil, err 20 } 21 22 resp, err := c.c.RawRequest(r) 23 if err != nil { 24 return nil, err 25 } 26 defer resp.Body.Close() 27 28 var result InitResponse 29 err = resp.DecodeJSON(&result) 30 return &result, err 31} 32 33type InitRequest struct { 34 SecretShares int `json:"secret_shares"` 35 SecretThreshold int `json:"secret_threshold"` 36 StoredShares int `json:"stored_shares"` 37 PGPKeys []string `json:"pgp_keys"` 38 RecoveryShares int `json:"recovery_shares"` 39 RecoveryThreshold int `json:"recovery_threshold"` 40 RecoveryPGPKeys []string `json:"recovery_pgp_keys"` 41} 42 43type InitStatusResponse struct { 44 Initialized bool 45} 46 47type InitResponse struct { 48 Keys []string 49 RecoveryKeys []string `json:"recovery_keys"` 50 RootToken string `json:"root_token"` 51} 52