This is an automated email from the ASF dual-hosted git repository.

sblackmon pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/streams.git


The following commit(s) were added to refs/heads/master by this push:
     new b8f4c0e  implements Full Contact SDK
     new 956cc7a  Merge pull request #473 from steveblackmon/STREAMS-631
b8f4c0e is described below

commit b8f4c0ec4ab54845864ac5704dace8a14f7f8f7b
Author: Steve Blackmon @steveblackmon <[email protected]>
AuthorDate: Tue Dec 11 09:09:48 2018 -0600

    implements Full Contact SDK
    
    untested
---
 streams-contrib/pom.xml                            |   1 +
 .../streams-processor-fullcontact/pom.xml          | 149 ++++++++++++++
 .../streams/fullcontact/CompanyEnrichment.java     |  34 ++++
 .../apache/streams/fullcontact/FullContact.java    | 112 +++++++++++
 .../streams/fullcontact/PersonEnrichment.java      |  34 ++++
 .../api/CompanySubscriptionRequest.json            |  19 ++
 .../fullcontact/api/EnrichCompanyRequest.json      |  15 ++
 .../fullcontact/api/EnrichPersonRequest.json       |  27 +++
 .../fullcontact/api/PersonSubscriptionRequest.json |  22 ++
 .../config/FullContactConfiguration.json           |  15 ++
 .../streams/fullcontact/pojo/CompanyDetails.json   | 222 +++++++++++++++++++++
 .../streams/fullcontact/pojo/CompanySummary.json   |  64 ++++++
 .../fullcontact/pojo/CompanyTrafficRank.json       |  17 ++
 .../org/apache/streams/fullcontact/pojo/Day.json   |  20 ++
 .../org/apache/streams/fullcontact/pojo/Group.json |  25 +++
 .../streams/fullcontact/pojo/PersonDetails.json    |  98 +++++++++
 .../fullcontact/pojo/PersonEmploymentItem.json     |  37 ++++
 .../fullcontact/pojo/PersonInterestItem.json       |  29 +++
 .../streams/fullcontact/pojo/PersonPhoto.json      |  19 ++
 .../streams/fullcontact/pojo/PersonProfile.json    |  38 ++++
 .../streams/fullcontact/pojo/PersonProfiles.json   | 168 ++++++++++++++++
 .../streams/fullcontact/pojo/PersonSummary.json    | 106 ++++++++++
 .../apache/streams/fullcontact/pojo/PersonURL.json |  19 ++
 23 files changed, 1290 insertions(+)

diff --git a/streams-contrib/pom.xml b/streams-contrib/pom.xml
index 341a6b7..e92c1e8 100644
--- a/streams-contrib/pom.xml
+++ b/streams-contrib/pom.xml
@@ -49,6 +49,7 @@
         <module>streams-persist-neo4j</module>
         <module>streams-persist-riak</module>
         <module>streams-amazon-aws</module>
+        <module>streams-processor-fullcontact</module>
         <module>streams-processor-jackson</module>
         <module>streams-processor-json</module>
         <module>streams-processor-urls</module>
diff --git a/streams-contrib/streams-processor-fullcontact/pom.xml 
b/streams-contrib/streams-processor-fullcontact/pom.xml
new file mode 100644
index 0000000..dc9440c
--- /dev/null
+++ b/streams-contrib/streams-processor-fullcontact/pom.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.streams</groupId>
+        <artifactId>streams-contrib</artifactId>
+        <version>0.6.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>streams-processor-fullcontact</artifactId>
+    <name>${project.artifactId}</name>
+
+    <description>FullContact API Processors</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.typesafe</groupId>
+            <artifactId>config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-pojo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.juneau</groupId>
+            <artifactId>juneau-rest-client</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-testing</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+            <type>test-jar</type>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <testSourceDirectory>src/test/java</testSourceDirectory>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+        <testResources>
+            <testResource>
+                <directory>src/test/resources</directory>
+            </testResource>
+        </testResources>
+        <plugins>
+            <!--<plugin>-->
+                <!--<groupId>org.apache.streams.plugins</groupId>-->
+                <!--<artifactId>streams-plugin-pojo</artifactId>-->
+                <!--<version>${project.version}</version>-->
+                <!--<configuration>-->
+                    <!--<sourcePaths>-->
+                        
<!--<sourcePath>${project.basedir}/src/main/jsonschema</sourcePath>-->
+                    <!--</sourcePaths>-->
+                <!--</configuration>-->
+            <!--</plugin>-->
+            <plugin>
+                <groupId>org.jsonschema2pojo</groupId>
+                <artifactId>jsonschema2pojo-maven-plugin</artifactId>
+                <version>0.5.1</version>
+                <executions>
+                    <execution>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <annotationStyle>none</annotationStyle>
+                    
<includeAdditionalProperties>false</includeAdditionalProperties>
+                    <includeHashcodeAndEquals>true</includeHashcodeAndEquals>
+                    
<outputDirectory>${project.basedir}/target/generated-sources/pojo</outputDirectory>
+                    <propertyWordDelimiters></propertyWordDelimiters>
+                    <removeOldOutput>true</removeOldOutput>
+                    <serializable>true</serializable>
+                    <sourcePaths>
+                        
<sourcePath>${project.basedir}/src/main/jsonschema</sourcePath>
+                    </sourcePaths>
+                    <useCommonsLang3>true</useCommonsLang3>
+                    <useDoubleNumbers>true</useDoubleNumbers>
+                    <useLongIntegers>true</useLongIntegers>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>add-source</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>target/generated-sources/pojo</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/java/org/apache/streams/fullcontact/CompanyEnrichment.java
 
b/streams-contrib/streams-processor-fullcontact/src/main/java/org/apache/streams/fullcontact/CompanyEnrichment.java
new file mode 100644
index 0000000..6782374
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/java/org/apache/streams/fullcontact/CompanyEnrichment.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.streams.fullcontact;
+
+import org.apache.streams.fullcontact.api.EnrichCompanyRequest;
+import org.apache.streams.fullcontact.pojo.CompanySummary;
+
+import org.apache.juneau.http.annotation.Body;
+import org.apache.juneau.remote.RemoteInterface;
+import org.apache.juneau.rest.client.remote.RemoteMethod;
+
+@RemoteInterface(path = "https://api.fullcontact.com/v3/company.enrich";)
+public interface CompanyEnrichment {
+
+  @RemoteMethod(method ="POST")
+  public CompanySummary enrichCompany(@Body EnrichCompanyRequest request);
+
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/java/org/apache/streams/fullcontact/FullContact.java
 
b/streams-contrib/streams-processor-fullcontact/src/main/java/org/apache/streams/fullcontact/FullContact.java
new file mode 100644
index 0000000..c79c70a
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/java/org/apache/streams/fullcontact/FullContact.java
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.streams.fullcontact;
+
+import org.apache.streams.fullcontact.api.EnrichCompanyRequest;
+import org.apache.streams.fullcontact.api.EnrichPersonRequest;
+import org.apache.streams.fullcontact.config.FullContactConfiguration;
+import org.apache.streams.fullcontact.pojo.CompanySummary;
+import org.apache.streams.fullcontact.pojo.PersonSummary;
+
+import com.google.common.util.concurrent.Uninterruptibles;
+import org.apache.juneau.json.JsonParser;
+import org.apache.juneau.json.JsonSerializer;
+import org.apache.juneau.rest.client.RestCall;
+import org.apache.juneau.rest.client.RestClient;
+import org.apache.juneau.rest.client.RestClientBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Implementation of api.fullcontact.com interfaces using juneau.
+ */
+public class FullContact implements CompanyEnrichment, PersonEnrichment {
+
+  private static final Logger LOGGER = 
LoggerFactory.getLogger(FullContact.class);
+
+  private FullContactConfiguration configuration;
+
+  JsonParser parser;
+  JsonSerializer serializer;
+
+  RestClientBuilder restClientBuilder;
+  RestClient restClient;
+
+  private FullContact(FullContactConfiguration configuration) throws 
InstantiationException {
+    this.configuration = configuration;
+    this.parser = JsonParser.DEFAULT.builder()
+      .ignoreUnknownBeanProperties(true)
+      .build();
+    this.serializer = JsonSerializer.DEFAULT.builder()
+      .trimEmptyCollections(true)
+      .trimEmptyMaps(true)
+      .build();
+    this.restClientBuilder = RestClient.create()
+      .accept("application/json")
+      .contentType("application/json")
+      .disableAutomaticRetries()
+      .disableCookieManagement()
+      .disableRedirectHandling()
+      .header("Authorization", "Bearer "+configuration.getToken())
+      .parser(parser)
+      .serializer(serializer)
+      .rootUrl(baseUrl());
+    this.restClient = restClientBuilder.build();
+  }
+
+  private String baseUrl() {
+    return "https://api.fullcontact.com/v3/";;
+  }
+
+  @Override
+  public CompanySummary enrichCompany(EnrichCompanyRequest request) {
+    try {
+      RestCall call = restClient
+        .doPost(baseUrl() + "company.enrich")
+        .input(request);
+      String responseJson = call.getResponseAsString();
+      CompanySummary result = parser.parse(responseJson, CompanySummary.class);
+      return result;
+    } catch( Exception e ) {
+      LOGGER.error("Exception", e);
+      return new CompanySummary();
+    } finally {
+      Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
+    }
+  }
+
+  @Override
+  public PersonSummary enrichPerson(EnrichPersonRequest request) {
+    try {
+      RestCall call = restClient
+        .doPost(baseUrl() + "company.enrich")
+        .input(request);
+      String responseJson = call.getResponseAsString();
+      PersonSummary result = parser.parse(responseJson, PersonSummary.class);
+      return result;
+    } catch( Exception e ) {
+      LOGGER.error("Exception", e);
+      return new PersonSummary();
+    } finally {
+      Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/java/org/apache/streams/fullcontact/PersonEnrichment.java
 
b/streams-contrib/streams-processor-fullcontact/src/main/java/org/apache/streams/fullcontact/PersonEnrichment.java
new file mode 100644
index 0000000..d3ad2f5
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/java/org/apache/streams/fullcontact/PersonEnrichment.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.streams.fullcontact;
+
+import org.apache.streams.fullcontact.api.EnrichPersonRequest;
+import org.apache.streams.fullcontact.pojo.PersonSummary;
+
+import org.apache.juneau.http.annotation.Body;
+import org.apache.juneau.remote.RemoteInterface;
+import org.apache.juneau.rest.client.remote.RemoteMethod;
+
+@RemoteInterface(path = "https://api.fullcontact.com/v3/person.enrich";)
+public interface PersonEnrichment {
+
+  @RemoteMethod(method ="POST")
+  public PersonSummary enrichPerson(@Body EnrichPersonRequest request);
+
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/CompanySubscriptionRequest.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/CompanySubscriptionRequest.json
new file mode 100644
index 0000000..b9ff59f
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/CompanySubscriptionRequest.json
@@ -0,0 +1,19 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.api.CompanySubscriptionRequest",
+  "properties": {
+    "domain": {
+      "type": "string",
+      "description": "The domain name of the company to lookup. (Queryable)"
+    },
+    "webhookUrl": {
+      "type": "string",
+      "description": "Some description about webhook URL."
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/EnrichCompanyRequest.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/EnrichCompanyRequest.json
new file mode 100644
index 0000000..022381b
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/EnrichCompanyRequest.json
@@ -0,0 +1,15 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.api.EnrichCompanyRequest",
+  "properties": {
+    "domain": {
+      "type": "string",
+      "description": "The domain the enrich from. (Queryable)"
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/EnrichPersonRequest.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/EnrichPersonRequest.json
new file mode 100644
index 0000000..1e7d2a9
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/EnrichPersonRequest.json
@@ -0,0 +1,27 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.api.EnrichPersonRequest",
+  "properties": {
+    "email": {
+      "type": "string",
+      "description": "The email address of the contact. (Queryable)"
+    },
+    "emailHash": {
+      "type": "string",
+      "description": "Either an MD5 or SHA-256 hash representation of the 
email address to query. Be certain to lowercase and trim the email address 
prior to hashing. (Queryable)"
+    },
+    "twitter": {
+      "type": "string",
+      "description": "Twitter handle of the contact. Acceptable formats 
include handle (with or without \"@\"), as well as the URL to the profile. 
(Queryable)"
+    },
+    "phone": {
+      "type": "string",
+      "description": "Phone number of the contact. (Queryable)"
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/PersonSubscriptionRequest.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/PersonSubscriptionRequest.json
new file mode 100644
index 0000000..3204c62
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/PersonSubscriptionRequest.json
@@ -0,0 +1,22 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.api.PersonSubscriptionRequest",
+  "extends": {
+    "$ref": "../pojo/PersonSummary.json"
+  },
+  "properties": {
+    "webhookUrl": {
+      "type": "string",
+      "description": "Some description about webhook URL."
+    },
+    "subscriptionId": {
+      "type": "string",
+      "description": "Some description about webhook URL."
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/config/FullContactConfiguration.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/config/FullContactConfiguration.json
new file mode 100644
index 0000000..7ca3ac6
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/config/FullContactConfiguration.json
@@ -0,0 +1,15 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaInterfaces": ["java.io.Serializable"],
+  "javaType": "org.apache.streams.fullcontact.config.FullContactConfiguration",
+  "properties": {
+    "token": {
+      "type": "string"
+    }
+  }
+}
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/CompanyDetails.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/CompanyDetails.json
new file mode 100644
index 0000000..b26b13a
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/CompanyDetails.json
@@ -0,0 +1,222 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.pojo.CompanyDetails",
+  "properties": {
+    "entity": {
+      "type": "object",
+      "javaType": "org.apache.streams.fullcontact.pojo.CompanyEntity",
+      "properties": {
+        "name": {
+          "type": "string"
+        },
+        "founded": {
+          "type": "integer"
+        },
+        "employees": {
+          "type": "integer"
+        }
+      }
+    },
+    "locales": {
+      "type": "array",
+      "items": {
+        "javaType": "org.apache.streams.fullcontact.pojo.CompanyLocale",
+        "properties": {
+          "code": {
+            "type": "string"
+          },
+          "name": {
+            "type": "string"
+          }
+        }
+      }
+    },
+    "categories": {
+      "type": "array",
+      "items": {
+        "javaType": "org.apache.streams.fullcontact.pojo.CompanyCategory",
+        "properties": {
+          "code": {
+            "type": "string"
+          },
+          "name": {
+            "type": "string"
+          }
+        }
+      }
+    },
+    "industries": {
+      "type": "array",
+      "items": {
+        "javaType": "org.apache.streams.fullcontact.pojo.CompanyIndustry",
+        "properties": {
+          "code": {
+            "type": "string"
+          },
+          "name": {
+            "type": "string"
+          },
+          "type": {
+            "type": "string"
+          }
+        }
+      }
+    },
+    "emails": {
+      "type": "array",
+      "items": {
+        "javaType": "org.apache.streams.fullcontact.pojo.CompanyEmail",
+        "properties": {
+          "label": {
+            "type": "string"
+          },
+          "value": {
+            "type": "string"
+          }
+        }
+      }
+    },
+    "locations": {
+      "type": "array",
+      "items": {
+        "javaType": "org.apache.streams.fullcontact.pojo.CompanyLocation",
+        "properties": {
+          "label": {
+            "type": "string"
+          },
+          "addressLine1": {
+            "type": "string"
+          },
+          "addressLine2": {
+            "type": "string"
+          },
+          "city": {
+            "type": "string"
+          },
+          "region": {
+            "type": "string"
+          },
+          "regionCode": {
+            "type": "string"
+          },
+          "postalCode": {
+            "type": "string"
+          },
+          "country": {
+            "type": "string"
+          },
+          "countryCode": {
+            "type": "string"
+          },
+          "formatted": {
+            "type": "string"
+          }
+        }
+      }
+    },
+    "keyPeople": {
+      "type": "array",
+      "description": "The Key People Data Add-on will return a list of 
influential individuals within an organization, including their full name, 
title, and an accompanying photo or avatar.",
+      "items": {
+        "type": "object",
+        "javaType": "org.apache.streams.fullcontact.CompanyKeyPerson",
+        "properties": {
+          "fullName": {
+            "type": "string",
+            "description": "The full name of the person."
+          },
+          "title": {
+            "type": "string",
+            "description": "The job title of the person."
+          },
+          "avatar": {
+            "type": "string",
+            "description": "A URL to a photo or avatar of the person."
+          }
+        }
+      }
+    },
+    "keywords": {
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    },
+    "images": {
+      "type": "array",
+      "items": {
+        "javaType": "org.apache.streams.fullcontact.pojo.CompanyImage",
+        "properties": {
+          "label": {
+            "type": "string"
+          },
+          "url": {
+            "type": "string"
+          }
+        }
+      }
+    },
+    "phones": {
+      "type": "array",
+      "items": {
+        "javaType": "org.apache.streams.fullcontact.pojo.CompanyPhone",
+        "properties": {
+          "label": {
+            "type": "string"
+          },
+          "value": {
+            "type": "string"
+          }
+        }
+      }
+    },
+    "profiles": {
+      "type": "object",
+      "javaType": "org.apache.streams.fullcontact.pojo.CompanyProfiles",
+      "description": "The All Social Profiles Data Add-on enables API 
consumers to retrieve a list of all known social profiles of a given contact, 
returning data for each social platform such as any applicable 
usernames/handles, the URL of the platform, any bio that the user supplied, and 
more.",
+      "additionalProperties": {
+        "$ref": "./CompanyTrafficRank.json"
+      }
+    },
+    "traffic": {
+      "type": "object",
+      "javaType": "org.apache.streams.fullcontact.pojo.CompanyTraffic",
+      "properties": {
+        "countryRank": {
+          "type": "object",
+          "javaType": 
"org.apache.streams.fullcontact.pojo.CompanyTrafficCountryRank",
+          "additionalProperties": {
+            "$ref": "./CompanyTrafficRank.json"
+          }
+        },
+        "localeRank": {
+          "type": "object",
+          "javaType": 
"org.apache.streams.fullcontact.pojo.CompanyTrafficLocaleRank",
+          "additionalProperties": {
+            "javaType": 
"org.apache.streams.fullcontact.pojo.CompanyTrafficRank"
+          }
+        }
+      }
+    },
+    "urls": {
+      "type": "array",
+      "items": {
+        "javaType": "org.apache.streams.fullcontact.pojo.CompanyURL",
+        "properties": {
+          "label": {
+            "type": "string"
+          },
+          "url": {
+            "type": "string"
+          }
+        }
+      }
+    }
+
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/CompanySummary.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/CompanySummary.json
new file mode 100644
index 0000000..f2a6d66
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/CompanySummary.json
@@ -0,0 +1,64 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.pojo.CompanySummary",
+  "properties": {
+    "name": {
+      "type": "string",
+      "description": "The name of the company."
+    },
+    "location": {
+      "type": "string",
+      "description": "The location or address of the company."
+    },
+    "twitter": {
+      "type": "string",
+      "description": "The URL to the twitter profile associated with the 
company."
+    },
+    "linkedin": {
+      "type": "string",
+      "description": "The URL to the LinkedIn profile associated with the 
company."
+    },
+    "facebook": {
+      "type": "string",
+      "description": "The URL to the Facebook page associated with the 
company."
+    },
+    "bio": {
+      "type": "string",
+      "description": "The company's bio."
+    },
+    "logo": {
+      "type": "string",
+      "description": "URL to the logo or image for the company."
+    },
+    "website": {
+      "type": "string",
+      "description": "URL to the company's website."
+    },
+    "founded": {
+      "type": "integer",
+      "description": "The year the company was founded."
+    },
+    "employees": {
+      "type": "integer",
+      "description": "An approximate number of employees with the company."
+    },
+    "locale": {
+      "type": "string",
+      "description": "The locale of the company."
+    },
+    "category": {
+      "type": "string",
+      "description": "The category of the company. Possible values are Adult, 
Email Provider, Education, SMS, or Other."
+    },
+    "details": {
+      "type": "object",
+      "description": "When included, additional details about the company 
provided through Data Add-ons will be available here.",
+      "$ref": "./CompanyDetails.json"
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/CompanyTrafficRank.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/CompanyTrafficRank.json
new file mode 100644
index 0000000..3bf75f0
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/CompanyTrafficRank.json
@@ -0,0 +1,17 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.pojo.CompanyTrafficRank",
+  "properties": {
+    "rank": {
+      "type": "string"
+    },
+    "name": {
+      "type": "string"
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/Day.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/Day.json
new file mode 100644
index 0000000..d829cbb
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/Day.json
@@ -0,0 +1,20 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.pojo.Day",
+  "properties": {
+    "year": {
+      "type": "integer"
+    },
+    "month": {
+      "type": "integer"
+    },
+    "day": {
+      "type": "integer"
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/Group.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/Group.json
new file mode 100644
index 0000000..bc5a780
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/Group.json
@@ -0,0 +1,25 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.pojo.Group",
+  "javaInterfaces": ["java.io.Serializable"],
+  "additionalProperties": false,
+  "properties": {
+    "path": {
+      "type": "string"
+    },
+    "summary": {
+      "type": "string"
+    },
+    "title": {
+      "type": "string"
+    },
+    "type": {
+      "type": "string"
+    }
+  }
+}
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonDetails.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonDetails.json
new file mode 100644
index 0000000..1fa1ddb
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonDetails.json
@@ -0,0 +1,98 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.pojo.PersonDetails",
+  "properties": {
+    "education": {
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    },
+    "emails": {
+      "type": "array",
+      "items": {
+        "type": "object",
+        "properties": {
+          "label": {
+            "type": "string"
+          },
+          "value": {
+            "type": "string"
+          }
+        }
+      }
+    },
+    "employment": {
+      "type": "array",
+      "description": "The Employment History Data Add-on returns current and 
historical employment history for a given contact. This data includes the 
organization and title during employment and approximate start and end dates.",
+      "items": {
+        "$ref": "./PersonEmploymentItem.json"
+      }
+    },
+    "interests": {
+      "type": "array",
+      "description": "The Affinities Data Add-on enables API consumers to 
better understand the interests of a contact. The data returned includes a list 
of interests that have been attributed to the contact, along with the level of 
affinity for the given interest and the category that the interest is within.",
+      "items": {
+        "$ref": "./PersonInterestItem.json"
+      }
+    },
+    "locations": {
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    },
+    "phones": {
+      "type": "array",
+      "items": {
+        "type": "object",
+        "properties": {
+          "label": {
+            "type": "string"
+          },
+          "value": {
+            "type": "string"
+          }
+        }
+      }
+    },
+    "photos": {
+      "type": "array",
+      "description": "Additionally, any profile pictures and URLs to other 
websites associated width the contact will be returned.",
+      "items": {
+        "type": "object",
+        "properties": {
+          "label": {
+            "type": "string"
+          },
+          "value": {
+            "type": "string"
+          }
+        }
+      }
+    },
+    "profiles": {
+      "$ref": "./PersonProfiles.json"
+    },
+    "urls": {
+      "type": "array",
+      "description": "Additionally, any profile pictures and URLs to other 
websites associated width the contact will be returned.",
+      "items": {
+        "type": "object",
+        "properties": {
+          "label": {
+            "type": "string"
+          },
+          "value": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonEmploymentItem.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonEmploymentItem.json
new file mode 100644
index 0000000..39c0526
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonEmploymentItem.json
@@ -0,0 +1,37 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.pojo.PersonEmploymentItem",
+  "properties": {
+    "name": {
+      "type": "string",
+      "description": "The name of the organization/place of employment."
+    },
+    "domain": {
+      "type": "string",
+      "description": "The domain of the organization/place of employment."
+    },
+    "current": {
+      "type": "boolean",
+      "description": "Indicator of whether or not this is the current place of 
employment."
+    },
+    "title": {
+      "type": "string",
+      "description": "Job or position title."
+    },
+    "start": {
+      "type": "object",
+      "$ref": "./Day.json",
+      "description": "Object representing start date."
+    },
+    "end": {
+      "type": "string",
+      "$ref": "./Day.json",
+      "description": "Object representing start date."
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonInterestItem.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonInterestItem.json
new file mode 100644
index 0000000..2aa7e63
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonInterestItem.json
@@ -0,0 +1,29 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.pojo.PersonInterestItem",
+  "properties": {
+    "affinity": {
+      "type": "string"
+    },
+    "category": {
+      "type": "string"
+    },
+    "id": {
+      "type": "string"
+    },
+    "name": {
+      "type": "string"
+    },
+    "parentIds": {
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonPhoto.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonPhoto.json
new file mode 100644
index 0000000..07b97b4
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonPhoto.json
@@ -0,0 +1,19 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.pojo.PersonPhoto",
+  "properties": {
+    "label": {
+      "type": "string",
+      "description": "The type of photo."
+    },
+    "value": {
+      "type": "string",
+      "description": "The URL to the photo."
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonProfile.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonProfile.json
new file mode 100644
index 0000000..1f1d707
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonProfile.json
@@ -0,0 +1,38 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.pojo.PersonProfile",
+  "properties": {
+    "bio": {
+      "type": "string",
+      "description": "Bio of the profile form the social platform."
+    },
+    "followers": {
+      "type": "integer",
+      "description": "Number of follows of the profile, if applicable."
+    },
+    "following": {
+      "type": "integer",
+      "description": "Number of profiles or topics the user is following, if 
applicable."
+    },
+    "service": {
+      "type": "string"
+    },
+    "url": {
+      "type": "string",
+      "description": "URL to the profile on the social platform."
+    },
+    "userid": {
+      "type": "string",
+      "description": "User ID associated with the profile."
+    },
+    "username": {
+      "type": "string",
+      "description": "Displayable username of the profile."
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonProfiles.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonProfiles.json
new file mode 100644
index 0000000..897be88
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonProfiles.json
@@ -0,0 +1,168 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.pojo.PersonProfiles",
+  "description": "The All Social Profiles Data Add-on enables API consumers to 
retrieve a list of all known social profiles of a given contact, returning data 
for each social platform such as any applicable usernames/handles, the URL of 
the platform, any bio that the user supplied, and more.",
+  "properties": {
+    "aboutme": {
+      "$ref": "./PersonProfile.json"
+    },
+    "angellist": {
+      "$ref": "./PersonProfile.json"
+    },
+    "bandcamp": {
+      "$ref": "./PersonProfile.json"
+    },
+    "behance": {
+      "$ref": "./PersonProfile.json"
+    },
+    "blogger": {
+      "$ref": "./PersonProfile.json"
+    },
+    "crunchbase": {
+      "$ref": "./PersonProfile.json"
+    },
+    "delicious": {
+      "$ref": "./PersonProfile.json"
+    },
+    "deviantart": {
+      "$ref": "./PersonProfile.json"
+    },
+    "dribbble": {
+      "$ref": "./PersonProfile.json"
+    },
+    "facebook": {
+      "$ref": "./PersonProfile.json"
+    },
+    "facebookpage": {
+      "$ref": "./PersonProfile.json"
+    },
+    "flavorsme": {
+      "$ref": "./PersonProfile.json"
+    },
+    "flickr": {
+      "$ref": "./PersonProfile.json"
+    },
+    "foursquare": {
+      "$ref": "./PersonProfile.json"
+    },
+    "getsatisfaction": {
+      "$ref": "./PersonProfile.json"
+    },
+    "goodreads": {
+      "$ref": "./PersonProfile.json"
+    },
+    "google": {
+      "$ref": "./PersonProfile.json"
+    },
+    "googleplus": {
+      "$ref": "./PersonProfile.json"
+    },
+    "gravatar": {
+      "$ref": "./PersonProfile.json"
+    },
+    "hackernews": {
+      "$ref": "./PersonProfile.json"
+    },
+    "hiim": {
+      "$ref": "./PersonProfile.json"
+    },
+    "identica": {
+      "$ref": "./PersonProfile.json"
+    },
+    "instagram": {
+      "$ref": "./PersonProfile.json"
+    },
+    "intensedebate": {
+      "$ref": "./PersonProfile.json"
+    },
+    "keybase": {
+      "$ref": "./PersonProfile.json"
+    },
+    "klout": {
+      "$ref": "./PersonProfile.json"
+    },
+    "lastfm": {
+      "$ref": "./PersonProfile.json"
+    },
+    "linkedin": {
+      "$ref": "./PersonProfile.json"
+    },
+    "livejournal": {
+      "$ref": "./PersonProfile.json"
+    },
+    "medium": {
+      "$ref": "./PersonProfile.json"
+    },
+    "myspace": {
+      "$ref": "./PersonProfile.json"
+    },
+    "pandora": {
+      "$ref": "./PersonProfile.json"
+    },
+    "pinboard": {
+      "$ref": "./PersonProfile.json"
+    },
+    "pinterest": {
+      "$ref": "./PersonProfile.json"
+    },
+    "plancast": {
+      "$ref": "./PersonProfile.json"
+    },
+    "posterous": {
+      "$ref": "./PersonProfile.json"
+    },
+    "quora": {
+      "$ref": "./PersonProfile.json"
+    },
+    "reddit": {
+      "$ref": "./PersonProfile.json"
+    },
+    "reverbnation": {
+      "$ref": "./PersonProfile.json"
+    },
+    "scribd": {
+      "$ref": "./PersonProfile.json"
+    },
+    "slideshare": {
+      "$ref": "./PersonProfile.json"
+    },
+    "soundcloud": {
+      "$ref": "./PersonProfile.json"
+    },
+    "spotify": {
+      "$ref": "./PersonProfile.json"
+    },
+    "tripit": {
+      "$ref": "./PersonProfile.json"
+    },
+    "tumblr": {
+      "$ref": "./PersonProfile.json"
+    },
+    "twitter": {
+      "$ref": "./PersonProfile.json"
+    },
+    "vimeo": {
+      "$ref": "./PersonProfile.json"
+    },
+    "weibo": {
+      "$ref": "./PersonProfile.json"
+    },
+    "wordpress": {
+      "$ref": "./PersonProfile.json"
+    },
+    "yahoo": {
+      "$ref": "./PersonProfile.json"
+    },
+    "yelp": {
+      "$ref": "./PersonProfile.json"
+    },
+    "youtube": {
+      "$ref": "./PersonProfile.json"
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonSummary.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonSummary.json
new file mode 100644
index 0000000..5e28c01
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonSummary.json
@@ -0,0 +1,106 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.pojo.PersonSummary",
+  "properties": {
+    "ageRange": {
+      "type": "string",
+      "description": "Age range of the contact."
+    },
+    "avatar": {
+      "type": "string",
+      "description": "URL of the contact's photo."
+    },
+    "bio": {
+      "type": "string",
+      "description": "Biography of the contact."
+    },
+    "dataAddons": {
+      "type": "array",
+      "items": {
+        "type": "object",
+        "properties": {
+          "applied": {
+            "type": "boolean"
+          },
+          "description": {
+            "type": "string"
+          },
+          "docLink": {
+            "type": "string"
+          },
+          "enabled": {
+            "type": "boolean"
+          },
+          "id": {
+            "type": "string"
+          },
+          "name": {
+            "type": "string"
+          }
+        }
+      }
+    },
+    "details": {
+      "type": "object",
+      "description": "When included, additional details about the contact 
provided through Data Add-ons will be available here.",
+      "$ref": "./PersonDetails.json"
+    },
+    "email": {
+      "type": "string",
+      "description": "The email address of the contact. (Queryable)"
+    },
+    "emailHash": {
+      "type": "string",
+      "description": "Either an MD5 or SHA-256 hash representation of the 
email address to query. Be certain to lowercase and trim the email address 
prior to hashing. (Queryable)"
+    },
+    "facebook": {
+      "type": "string",
+      "description": "URL of the contact's Facebook profile."
+    },
+    "fullName": {
+      "type": "string",
+      "description": "Full name of the contact."
+    },
+    "gender": {
+      "type": "string",
+      "description": "Gender of the contact."
+    },
+    "linkedin": {
+      "type": "string",
+      "description": "URL of the contact's LinkedIn profile."
+    },
+    "location": {
+      "type": "string",
+      "description": "Location of the contact. Depending on data quality, the 
exactness of this value may vary."
+    },
+    "organization": {
+      "type": "string",
+      "description": "Current or most recent place of work."
+    },
+    "title": {
+      "type": "string",
+      "description": "Current or most recent job title."
+    },
+    "twitter": {
+      "type": "string",
+      "description": "Twitter handle of the contact. Acceptable formats 
include handle (with or without \"@\"), as well as the URL to the profile. 
(Queryable)"
+    },
+    "phone": {
+      "type": "string",
+      "description": "Phone number of the contact. (Queryable)"
+    },
+    "updated": {
+      "type": "string",
+      "description": "Date-time last updated."
+    },
+    "website": {
+      "type": "string",
+      "description": "URL of the contact's website."
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonURL.json
 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonURL.json
new file mode 100644
index 0000000..e12ba93
--- /dev/null
+++ 
b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/pojo/PersonURL.json
@@ -0,0 +1,19 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema";,
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0";
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.pojo.PersonURL",
+  "properties": {
+    "label": {
+      "type": "string",
+      "description": "The type of URL/website."
+    },
+    "value": {
+      "type": "string",
+      "description": "The URL of the website."
+    }
+  }
+}
\ No newline at end of file

Reply via email to