@@ -79,11 +79,8 @@ func (e *APIError) Unwrap() error {
7979 return e .e
8080}
8181
82- type InvalidCredentialsError struct {}
83-
84- func (e InvalidCredentialsError ) Error () string {
85- return "invalid credentials"
86- }
82+ var InvalidCredentialsError = fmt .Errorf ("invalid credentials" )
83+ var InvalidCodeError = fmt .Errorf ("invalid enrollment code" )
8784
8885type EnrollMeta struct {
8986 OrganizationID string
@@ -163,6 +160,13 @@ func (c *Client) Enroll(ctx context.Context, logger logrus.FieldLogger, code str
163160 return nil , nil , nil , nil , & APIError {e : fmt .Errorf ("error decoding JSON response: %s\n body: %s" , err , b ), ReqID : reqID }
164161 }
165162
163+ // Check for *only* an "invalid code" error returned by the API
164+ if len (r .Errors ) == 1 {
165+ if err := r .Errors [0 ]; err .Path == "code" && err .Code == "ERR_INVALID_VALUE" {
166+ return nil , nil , nil , nil , & APIError {e : InvalidCodeError , ReqID : reqID }
167+ }
168+ }
169+
166170 // Check for any errors returned by the API
167171 if err := r .Errors .ToError (); err != nil {
168172 return nil , nil , nil , nil , & APIError {e : fmt .Errorf ("unexpected error during enrollment: %v" , err ), ReqID : reqID }
@@ -404,7 +408,7 @@ func (c *Client) streamingPostDNClient(ctx context.Context, reqType string, valu
404408 case http .StatusOK :
405409 sc .respBytes = respBody
406410 case http .StatusUnauthorized :
407- sc .err .Store (InvalidCredentialsError {} )
411+ sc .err .Store (InvalidCredentialsError )
408412 default :
409413 var errors struct {
410414 Errors message.APIErrors
@@ -451,7 +455,7 @@ func (c *Client) postDNClient(ctx context.Context, reqType string, value []byte,
451455 case http .StatusOK :
452456 return respBody , nil
453457 case http .StatusUnauthorized :
454- return nil , InvalidCredentialsError {}
458+ return nil , InvalidCredentialsError
455459 default :
456460 var errors struct {
457461 Errors message.APIErrors
0 commit comments