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