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