///
      /// Create an account custom field.
      /// If the custom field already existed then update it.
      ///
      /// @param customField
      /// @return the custom field added created or updated
      /// @throws com.silanis.esl.sdk.EslException
      ///
     public CustomField CreateCustomField(CustomField customField ) {
         string path = template.UrlFor(UrlTemplate.ACCOUNT_CUSTOMFIELD_PATH).Build();
         
         CustomField sdkResponse = null;
         Silanis.ESL.API.CustomField apiResponse;
         Silanis.ESL.API.CustomField apiRequest;
 
         try {
             apiRequest = customField.toAPICustomField();
             string stringResponse;
             if ( DoesCustomFieldExist( customField.Id )){
                 stringResponse = client.Put(path,JsonConvert.SerializeObject(apiRequest, settings));
             }else{
                 stringResponse = client.Post(path,JsonConvert.SerializeObject(apiRequest, settings));
             }
             
             apiResponse = JsonConvert.DeserializeObject<Silanis.ESL.API.CustomField>(stringResponse);
             sdkResponse = CustomFieldBuilder.CustomField( apiResponse ).Build();
             return sdkResponse;
         } catch ( Exception e ) {
             throw new EslException( "Could not add/update the custom field to account." + e.Message );
         }
     }