# Java Quick Start

## 1.  Get an API Key and Secret

If you haven’t already, [sign up for a free trial](https://www.enzoic.com/free-trial).

## 2.  Include the Enzoic Library in Your Project

The Java package is available either via package manager or direct download.

**Maven**

The enzoic-java-client is available in Maven Central. Just include the following in your pom.xml dependencies section.

```xml
<dependencies>
    <dependency>
      <groupId>com.enzoic</groupId>
      <artifactId>enzoic-java-client</artifactId>
      <version>3.0.1</version>
    </dependency>
</dependencies>
```

**Gradle**

Include the following in your build.gradle dependencies section.

```gradle
dependencies {
  compile 'com.enzoic:enzoic-java-client:3.0.1'
}
```

**Download**

You can download a version of the .jar directly from\
<https://oss.sonatype.org/content/groups/public/com/enzoic/enzoic-java-client/>

## 3.  Try Out Our Example Code

We’ve made calling the API dead simple. This sample code snippet shows you examples of calling the four supported APIs:

```java
// Create a new Enzoic instance - this is our primary interface for making API calls
Enzoic enzoic = new Enzoic(YOUR_API_KEY, YOUR_API_SECRET);

// (Optional) Set a reasonable timeout for our application, in milliseconds.
enzoic.SetRequestTimeout(500);

// Check whether a password has been compromised
if (enzoic.CheckPassword("password-to-test")) {
    System.out.println("Password is compromised");
}
else {
    System.out.println("Password is not compromised");
}

// Check whether a password has been compromised with extended return information
CheckPasswordExResponse response = enzoic.CheckPasswordEx("password-to-test");
if (response != null) {
    System.out.println("Password is compromised");
    if (response.isRevealedInExposure()) {
        System.out.println("Password has been revealed in a data breach " +
            Integer.toString(response.exposureCount()) +  
            " times and has a relative breach frequency of " +
            Integer.toString(response.relativeExposureFrequency()));
    }
    else {
        System.out.println("Password has not been revealed in a data breach, " + 
            "but exists publicly in cracking dictionaies.");
    }
}
else {
    System.out.println("Password is not compromised");
}

 
// Check whether a specific set of credentials are compromised
if (enzoic.CheckCredentials("test@enzoic.com", "password-to-test")) {
    System.out.println("Credentials are compromised");
}
else {
    System.out.println("Credentials are not compromised");
}

// Use the CheckCredentialsEx call to tweak performance by including the
// date/time of the last check and excluding BCrypt
if (enzoic.CheckCredentialsEx("test@enzoic.com", "password-to-test",
        lastCheckTimestamp, new PasswordType[] { PasswordType.BCrypt })) {
    System.out.println("Credentials are compromised");
}
else {
    System.out.println("Credentials are not compromised");
}
 
// get all exposures for a given user
ExposuresResponse exposures = enzoic.GetExposuresForUser("test@enzoic.com");
System.out.println(exposures.getCount() + " exposures found for test@enzoic.com");
 
// now get the full details for the first exposure found
ExposureDetails details = enzoic.GetExposureDetails(exposures.getExposures()[0]);
System.out.println("First exposure for test@enzoic.com was " + details.getTitle());

// get all passwords for a given user - requires special approval, 
// contact Enzoic sales
UserPasswords userPasswords = enzoic.GetUserPasswords("eicar_0@enzoic.com");
System.out.println("First password for eicar_0@enzoic.com was " + 
    userPasswords.getPasswords[0].getPassword());
```

## 4.  Learn More

That should get you started. Check out the [GitHub project page](https://github.com/Enzoic/enzoic-java-client) for more details.  Make sure you also review the [Using the Enzoic API](https://docs.enzoic.com/enzoic-api-developer-documentation/using-the-enzoic-api) page.
