summaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
Diffstat (limited to 'services')
-rw-r--r--services/Makefile3
-rw-r--r--services/linkedin/Makefile34
-rw-r--r--services/linkedin/communications.json31
-rw-r--r--services/linkedin/companies.json127
-rw-r--r--services/linkedin/groups.json278
-rw-r--r--services/linkedin/jobs.json101
-rw-r--r--services/linkedin/linkedin.pngbin0 -> 190123 bytes
-rw-r--r--services/linkedin/network.json81
-rw-r--r--services/linkedin/oauth.json44
-rw-r--r--services/linkedin/people.json150
10 files changed, 849 insertions, 0 deletions
diff --git a/services/Makefile b/services/Makefile
index eb54875..10a704f 100644
--- a/services/Makefile
+++ b/services/Makefile
@@ -4,6 +4,7 @@ SPORE2DOT := perl ../utils/spore2dot.pl
check: spore_validation.rx
@make -C github check
@make -C googlemaps check
+ @make -C linkedin check
@$(VALIDATOR) amazons3.json
@$(VALIDATOR) backtweet.json
@$(VALIDATOR) backtype.json
@@ -37,6 +38,7 @@ png: \
twitter.png
@make -C github png
@make -C googlemaps png
+ @make -C linkedin png
%.png : %.dot
dot -T png -o $@ $<
@@ -47,4 +49,5 @@ png: \
clean:
@make -C github clean
@make -C googlemaps clean
+ @make -C linkedin clean
-rm *.png *.dot spore_validation.rx
diff --git a/services/linkedin/Makefile b/services/linkedin/Makefile
new file mode 100644
index 0000000..f48c51e
--- /dev/null
+++ b/services/linkedin/Makefile
@@ -0,0 +1,34 @@
+
+VALIDATOR := perl ../../utils/validator.pl --schema spore_validation.rx --description
+SPORE2DOT := perl ../../utils/spore2dot.pl
+
+check: spore_validation.rx
+ @$(VALIDATOR) oauth.json
+ @$(VALIDATOR) people.json
+ @$(VALIDATOR) groups.json
+ @$(VALIDATOR) companies.json
+ @$(VALIDATOR) jobs.json
+ @$(VALIDATOR) network.json
+ @$(VALIDATOR) communications.json
+
+test: check
+
+spore_validation.rx:
+ wget http://github.com/SPORE/specifications/raw/master/spore_validation.rx
+
+png: linkedin.png
+
+%.png: %.dot
+ dot -T png -o $@ $<
+
+linkedin.dot: \
+ people.json \
+ groups.json \
+ companies.json \
+ jobs.json \
+ network.json \
+ communications.json
+ $(SPORE2DOT) $^ > $@
+
+clean:
+ -rm *.png *.dot spore_validation.rx
diff --git a/services/linkedin/communications.json b/services/linkedin/communications.json
new file mode 100644
index 0000000..820017d
--- /dev/null
+++ b/services/linkedin/communications.json
@@ -0,0 +1,31 @@
+{
+ "version" : "0.1",
+ "base_url" : "http://api.linkedin.com",
+ "methods" : {
+ "send_message" : {
+ "path" : "/v1/people/~/mailbox",
+ "method" : "POST",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_payload" : true,
+ "expected_status" : [ 201 ]
+ },
+ "send_invitation" : {
+ "path" : "/v1/people/~/mailbox",
+ "method" : "POST",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_payload" : true,
+ "expected_status" : [ 201 ]
+ }
+ },
+ "authentication" : true,
+ "authority" : "http://github.com/SPORE",
+ "name" : "LinkedIn",
+ "meta" : {
+ "documentation" : "http://developer.linkedin.com/",
+ "module" : "Communications"
+ }
+}
diff --git a/services/linkedin/companies.json b/services/linkedin/companies.json
new file mode 100644
index 0000000..8507253
--- /dev/null
+++ b/services/linkedin/companies.json
@@ -0,0 +1,127 @@
+{
+ "version" : "0.1",
+ "base_url" : "http://api.linkedin.com",
+ "methods" : {
+ "company_by_id" : {
+ "path" : "/v1/compagnies/:id:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id",
+ "selector"
+ ],
+ "optional_params" : [
+ "format"
+ ],
+ "expected_status" : [ 200, 404 ]
+ },
+ "company_by_name" : {
+ "path" : "/v1/companies/universal-name=:name:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "name",
+ "selector"
+ ],
+ "optional_params" : [
+ "format"
+ ],
+ "expected_status" : [ 200, 404 ]
+ },
+ "search_company" : {
+ "path" : "/v1/company-search:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "selector"
+ ],
+ "optional_params" : [
+ "keywords",
+ "hq-only",
+ "facet",
+ "facets",
+ "start",
+ "count",
+ "sort",
+ "format"
+ ],
+ "expected_status" : [ 200 ]
+ },
+ "my_followed_companies" : {
+ "path" : "/v1/people/~/following/companies:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "selector"
+ ],
+ "optional_params" : [
+ "format"
+ ],
+ "expected_status" : [ 200 ]
+ },
+ "follow_company" : {
+ "path" : "/v1/people/~/following/companies",
+ "method" : "POST",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_payload" : true,
+ "expected_status" : [ 201 ]
+ },
+ "unfollow_company" : {
+ "path" : "/v1/people/~/following/companies/id=:id",
+ "method" : "DELETE",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id"
+ ],
+ "expected_status" : [ 204 ]
+ },
+ "suggestion_companies" : {
+ "path" : "/v1/people/~/suggestions/to-follow/companies:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "selector"
+ ],
+ "optional_params" : [
+ "format"
+ ],
+ "expected_status" : [ 200 ]
+ },
+ "company_products" : {
+ "path" : "/v1/companies/:id/products:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id",
+ "selector"
+ ],
+ "optional_params" : [
+ "format"
+ ],
+ "expected_status" : [ 200 ]
+ }
+ },
+ "authentication" : true,
+ "authority" : "http://github.com/SPORE",
+ "name" : "LinkedIn",
+ "meta" : {
+ "documentation" : "http://developer.linkedin.com/",
+ "module" : "Companies"
+ }
+}
diff --git a/services/linkedin/groups.json b/services/linkedin/groups.json
new file mode 100644
index 0000000..7aed98f
--- /dev/null
+++ b/services/linkedin/groups.json
@@ -0,0 +1,278 @@
+{
+ "version" : "0.1",
+ "base_url" : "http://api.linkedin.com",
+ "methods" : {
+ "group_by_id" : {
+ "path" : "/v1/groups/:id:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id",
+ "selector"
+ ],
+ "optional_params" : [
+ "format"
+ ],
+ "expected_status" : [ 200, 404 ]
+ },
+ "my_group_memberships" : {
+ "path" : "/v1/people/~/group-memberships:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "selector"
+ ],
+ "optional_params" : [
+ "membership-state",
+ "format"
+ ],
+ "expected_status" : [ 200 ]
+ },
+ "show_group_setting" : {
+ "path" : "/v1/people/~/group-memberships/:id:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id",
+ "selector"
+ ],
+ "optional_params" : [
+ "format"
+ ],
+ "expected_status" : [ 200, 404 ]
+ },
+ "change_group_setting" : {
+ "path" : "/v1/people/~/group-memberships/:id",
+ "method" : "PUT",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_payload" : true,
+ "required_params" : [
+ "id"
+ ],
+ "expected_status" : [ 201 ]
+ },
+ "join_group_by_id" : {
+ "path" : "/v1/people/~/group-memberships/:id",
+ "method" : "PUT",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_payload" : true,
+ "required_params" : [
+ "id"
+ ],
+ "expected_status" : [ 201 ]
+ },
+ "join_group" : {
+ "path" : "/v1/people/~/group-memberships",
+ "method" : "POST",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_payload" : true,
+ "expected_status" : [ 201 ]
+ },
+ "leave_group" : {
+ "path" : "/v1/people/~/group-memberships/:id",
+ "method" : "DELETE",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id"
+ ],
+ "expected_status" : [ 204 ]
+ },
+ "show_posts" : {
+ "path" : "/v1/groups/:id/posts:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id",
+ "selector"
+ ],
+ "optional_params" : [
+ "start",
+ "count",
+ "order",
+ "role",
+ "category",
+ "modified-since",
+ "format"
+ ],
+ "expected_status" : [ 200, 404 ]
+ },
+ "post_by_id" : {
+ "path" : "/v1/posts/:id:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id",
+ "selector"
+ ],
+ "optional_params" : [
+ "format"
+ ],
+ "expected_status" : [ 200, 404 ]
+ },
+ "show_comments" : {
+ "path" : "/v1/posts/:id/comments:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id",
+ "selector"
+ ],
+ "optional_params" : [
+ "start",
+ "count",
+ "order",
+ "format"
+ ],
+ "expected_status" : [ 200, 404 ]
+ },
+ "create_post" : {
+ "path" : "/v1/groups/:id/posts",
+ "method" : "POST",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_payload" : true,
+ "required_params" : [
+ "id"
+ ],
+ "expected_status" : [ 201 ]
+ },
+ "like_post" : {
+ "path" : "/v1/posts/:id/relation-to-viewer/is-liked",
+ "method" : "PUT",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_payload" : true,
+ "required_params" : [
+ "id"
+ ],
+ "expected_status" : [ 201 ]
+ },
+ "follow_post" : {
+ "path" : "/v1/posts/:id/relation-to-viewer/is-following",
+ "method" : "PUT",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_payload" : true,
+ "required_params" : [
+ "id"
+ ],
+ "expected_status" : [ 201 ]
+ },
+ "flag_post" : {
+ "path" : "/v1/posts/:id/category/code",
+ "method" : "PUT",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_payload" : true,
+ "required_params" : [
+ "id"
+ ],
+ "expected_status" : [ 201 ]
+ },
+ "delete_post" : {
+ "path" : "/v1/posts/:id",
+ "method" : "DELETE",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id"
+ ],
+ "expected_status" : [ 204 ]
+ },
+ "comment_by_id" : {
+ "path" : "/v1/comments/:id:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id",
+ "selector"
+ ],
+ "optional_params" : [
+ "format"
+ ],
+ "expected_status" : [ 200, 404 ]
+ },
+ "add_comment" : {
+ "path" : "/v1/posts/:id/comments",
+ "method" : "POST",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_payload" : true,
+ "required_params" : [
+ "id"
+ ],
+ "expected_status" : [ 201 ]
+ },
+ "delete_comment" : {
+ "path" : "/v1/comments/:id",
+ "method" : "DELETE",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id"
+ ],
+ "expected_status" : [ 204 ]
+ },
+ "suggestion_groups" : {
+ "path" : "/v1/people/~/suggestions/groups:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "selector"
+ ],
+ "optional_params" : [
+ "format"
+ ],
+ "expected_status" : [ 200 ]
+ },
+ "remove_group_suggestion" : {
+ "path" : "/v1/people/~/suggestions/groups/:id",
+ "method" : "DELETE",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id"
+ ],
+ "expected_status" : [ 204 ]
+ }
+ },
+ "authentication" : true,
+ "authority" : "http://github.com/SPORE",
+ "name" : "LinkedIn",
+ "meta" : {
+ "documentation" : "http://developer.linkedin.com/",
+ "module" : "Groups"
+ }
+}
diff --git a/services/linkedin/jobs.json b/services/linkedin/jobs.json
new file mode 100644
index 0000000..d234079
--- /dev/null
+++ b/services/linkedin/jobs.json
@@ -0,0 +1,101 @@
+{
+ "version" : "0.1",
+ "base_url" : "http://api.linkedin.com",
+ "methods" : {
+ "job_by_id" : {
+ "path" : "/v1/jobs/:id:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id",
+ "selector"
+ ],
+ "optional_params" : [
+ "format"
+ ],
+ "expected_status" : [ 200, 404 ]
+ },
+ "search_job" : {
+ "path" : "/v1/job-search:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "selector"
+ ],
+ "optional_params" : [
+ "keywords",
+ "company-name",
+ "job-title",
+ "country-code",
+ "postal-code",
+ "distance",
+ "facet",
+ "facets",
+ "start",
+ "count",
+ "sort",
+ "format"
+ ],
+ "expected_status" : [ 200 ]
+ },
+ "my_bookmarked_jobs" : {
+ "path" : "/v1/people/~/job-bookmarks:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "selector"
+ ],
+ "optional_params" : [
+ "format"
+ ],
+ "expected_status" : [ 200 ]
+ },
+ "bookmark_job" : {
+ "path" : "/v1/people/~/job-bookmarks",
+ "method" : "POST",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_payload" : true,
+ "expected_status" : [ 201 ]
+ },
+ "unbookmark_job" : {
+ "path" : "/v1/people/~/job-bookmarks/:id",
+ "method" : "DELETE",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id"
+ ],
+ "expected_status" : [ 204 ]
+ },
+ "suggestion_jobs" : {
+ "path" : "/v1/people/~/suggestions/job-suggestions:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "selector"
+ ],
+ "optional_params" : [
+ "format"
+ ],
+ "expected_status" : [ 200 ]
+ }
+ },
+ "authentication" : true,
+ "authority" : "http://github.com/SPORE",
+ "name" : "LinkedIn",
+ "meta" : {
+ "documentation" : "http://developer.linkedin.com/",
+ "module" : "Jobs"
+ }
+}
diff --git a/services/linkedin/linkedin.png b/services/linkedin/linkedin.png
new file mode 100644
index 0000000..76da206
--- /dev/null
+++ b/services/linkedin/linkedin.png
Binary files differ
diff --git a/services/linkedin/network.json b/services/linkedin/network.json
new file mode 100644
index 0000000..280a2ca
--- /dev/null
+++ b/services/linkedin/network.json
@@ -0,0 +1,81 @@
+{
+ "version" : "0.1",
+ "base_url" : "http://api.linkedin.com",
+ "methods" : {
+ "my_network_updates" : {
+ "path" : "/v1/people/~/network/updates",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "optional_params" : [
+ "scope",
+ "type",
+ "count",
+ "start",
+ "after",
+ "before",
+ "show-hidden-members",
+ "format"
+ ],
+ "expected_status" : [ 200 ]
+ },
+ "network_updates_by_id" : {
+ "path" : "/v1/people/id=:id/network/updates",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id"
+ ],
+ "optional_params" : [
+ "scope",
+ "type",
+ "count",
+ "start",
+ "after",
+ "before",
+ "show-hidden-members",
+ "format"
+ ],
+ "expected_status" : [ 200, 404 ]
+ },
+ "my_network_stats" : {
+ "path" : "/v1/people/~/network/network-stats",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "optional_params" : [
+ "format"
+ ],
+ "expected_status" : [ 200 ]
+ },
+ "post_update" : {
+ "path" : "/v1/people/~/person-activities",
+ "method" : "POST",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_payload" : true,
+ "expected_status" : [ 201 ]
+ },
+ "add_shares" : {
+ "path" : "/v1/people/~/shares",
+ "method" : "POST",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_payload" : true,
+ "expected_status" : [ 201 ]
+ }
+ },
+ "authentication" : true,
+ "authority" : "http://github.com/SPORE",
+ "name" : "LinkedIn",
+ "meta" : {
+ "documentation" : "http://developer.linkedin.com/",
+ "module" : "Network"
+ }
+}
diff --git a/services/linkedin/oauth.json b/services/linkedin/oauth.json
new file mode 100644
index 0000000..9cf94e1
--- /dev/null
+++ b/services/linkedin/oauth.json
@@ -0,0 +1,44 @@
+{
+ "version" : "0.1",
+ "base_url" : "https://api.linkedin.com",
+ "methods" : {
+ "get_request_token" : {
+ "path" : "/uas/oauth/requestToken",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_signature_method=\":oauth_signature_method\", oauth_signature=\":oauth_signature\", oauth_timestamp=\":oauth_timestamp\", oauth_nonce=\":oauth_nonce\", oauth_version=\":oauth_version\", oauth_callback=\":oauth_callback\""
+ },
+ "expected_status" : [ 200, 400 ],
+ "authentication" : true
+ },
+ "get_access_token" : {
+ "path" : "/uas/oauth/accessToken",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_token=\":oauth_token\", oauth_verifier=\":oauth_verifier\", oauth_signature_method=\":oauth_signature_method\", oauth_signature=\":oauth_signature\", oauth_timestamp=\":oauth_timestamp\", oauth_nonce=\":oauth_nonce\", oauth_version=\":oauth_version\""
+ },
+ "expected_status" : [ 200, 400 ],
+ "authentication" : true
+ },
+ "authorize_token" : {
+ "path" : "/uas/oauth/authorize",
+ "method" : "GET",
+ "required_params" : [
+ "oauth_token"
+ ],
+ "expected_status" : [ 302 ]
+ },
+ "invalidate_token" : {
+ "path" : "/uas/oauth/invalidateToken",
+ "method" : "GET",
+ "expected_status" : [ 200, 400 ],
+ "authentication" : true
+ }
+ },
+ "authority" : "http://github.com/SPORE",
+ "name" : "LinkedIn",
+ "meta" : {
+ "documentation" : "http://developer.linkedin.com/",
+ "module" : "OAuth"
+ }
+}
diff --git a/services/linkedin/people.json b/services/linkedin/people.json
new file mode 100644
index 0000000..d315e93
--- /dev/null
+++ b/services/linkedin/people.json
@@ -0,0 +1,150 @@
+{
+ "version" : "0.1",
+ "base_url" : "http://api.linkedin.com",
+ "methods" : {
+ "my_profile" : {
+ "path" : "/v1/people/~:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\"",
+ "Accept-Language" : ":lang"
+ },
+ "required_params" : [
+ "selector"
+ ],
+ "optional_params" : [
+ "format",
+ "lang"
+ ],
+ "expected_status" : [ 200 ]
+ },
+ "profile_by_id" : {
+ "path" : "/v1/people/id=:id:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\"",
+ "Accept-Language" : ":lang"
+ },
+ "required_params" : [
+ "id",
+ "selector"
+ ],
+ "optional_params" : [
+ "format",
+ "lang"
+ ],
+ "expected_status" : [ 200, 404 ]
+ },
+ "profile_by_url" : {
+ "path" : "/v1/people/url=:url:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\"",
+ "Accept-Language" : ":lang"
+ },
+ "required_params" : [
+ "url",
+ "selector"
+ ],
+ "optional_params" : [
+ "format",
+ "lang"
+ ],
+ "expected_status" : [ 200, 404 ]
+ },
+ "search_people" : {
+ "path" : "/v1/people-search:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "selector"
+ ],
+ "optional_params" : [
+ "keywords",
+ "first-name",
+ "last-name",
+ "company-name",
+ "current-company",
+ "title",
+ "current-title",
+ "school-name",
+ "current-school",
+ "country-code",
+ "postal-code",
+ "distance",
+ "facet",
+ "facets",
+ "start",
+ "count",
+ "sort",
+ "format"
+ ],
+ "expected_status" : [ 200 ]
+ },
+ "my_connections" : {
+ "path" : "/v1/people/~/connections:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "selector"
+ ],
+ "optional_params" : [
+ "start",
+ "count",
+ "modified",
+ "modified-since",
+ "format"
+ ],
+ "expected_status" : [ 200 ]
+ },
+ "connections_by_id" : {
+ "path" : "/v1/people/id=:id/connections:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "id",
+ "selector"
+ ],
+ "optional_params" : [
+ "start",
+ "count",
+ "modified",
+ "modified-since",
+ "format"
+ ],
+ "expected_status" : [ 200, 404 ]
+ },
+ "connections_by_url" : {
+ "path" : "/v1/people/url=:url/connnections:selector",
+ "method" : "GET",
+ "headers" : {
+ "Authorization" : "OAuth oauth_consumer_key=\":oauth_consumer_key\", oauth_nonce=\":oauth_nonce\", oauth_signature_method=\":oauth_signature_method\", oauth_timestamp=\":oauth_timestamp\", oauth_token=\":oauth_token\", oauth_version=\":oauth_version\", oauth_signature=\":oauth_signature\""
+ },
+ "required_params" : [
+ "url",
+ "selector"
+ ],
+ "optional_params" : [
+ "start",
+ "count",
+ "modified",
+ "modified-since",
+ "format"
+ ],
+ "expected_status" : [ 200, 404 ]
+ }
+ },
+ "authentication" : true,
+ "authority" : "http://github.com/SPORE",
+ "name" : "LinkedIn",
+ "meta" : {
+ "documentation" : "http://developer.linkedin.com/",
+ "module" : "People"
+ }
+}