code: private AppIdentity identifyApp(ApiConfiguration apiConfig) throws IOException, HttpException {
  		// convert to json bytes
  		byte[] jsonBytes = objectMapper.writer().writeValueAsBytes(apiConfig.getEnvDetail());
  
  		if (LOGGER.isDebugEnabled())
  		{
  			LOGGER.debug("IdentifyApp Request: {}", new String(jsonBytes, "UTF-8"));
  		}
  		
  		// post to stackify
  		final HttpClient httpClient = new HttpClient(apiConfig);
  		final String responseString = httpClient.post("/Metrics/IdentifyApp", jsonBytes);
  
  		LOGGER.debug("IdentifyApp Response: {}", responseString);
  		
  		// deserialize the response and return the app identity
  		ObjectReader jsonReader = objectMapper.reader(new TypeReference<AppIdentity>(){});
  		AppIdentity identity = jsonReader.readValue(responseString);
  		
  		// make sure it has a valid DeviceAppID before accepting it
  		
  		if (deviceAppIdRequired)
  		{
  			if (identity.getDeviceAppId() == null)
  			{
  				throw new NullPointerException("DeviceAppId is null");
  			}
  		}
  		
  		// done
  		
  		return identity;
  	}
docs: Retrieves the application identity given the environment details
  @return The application identity
  @throws IOException
  @throws HttpException