where customization begins: an intro to the salsa api and salsascript
DESCRIPTION
Where Customization Begins: An Intro to the Salsa API and Salsascript -- presentation by Salsa's Silona and Yonathan for the 2011 Salsa Community Conference.TRANSCRIPT
www.salsalabs.com
www.salsalabs.com
Where Customization Begins!
An Intro to the Salsa API and SalsaScript
www.salsalabs.com
Yon and Silona Silona and Yon
Yon - senior programmer - [email protected] - developer community manager - [email protected]
www.salsalabs.com
1. Form Actions2. RESTful API
3. SalsaScript based API
SalsaAPI basics
www.salsalabs.com
easy peasy
Form Based Actions
www.salsalabs.com
https://secure.flickr.com/photos/doolloop/110837794/
www.salsalabs.com
Simple Signup Box for emailGather more infoPetitionsSurveysActionsEvent
You can get setup in minutes!
www.salsalabs.com
Create the Page in Salsa HQ Add various options you will need -- add supporter to a group, send email trigger(s) upon sign-up, redirect info, etc.
Step 1
www.salsalabs.com
Cut and Paste! Click on the link generated in HQ to view the
page, then cut & paste relevant section (everything between <form> ... </form>) to your hosted site.
Step 2
www.salsalabs.com
Fix the relative path Change the relative path in the form action
to an absolute path pointing to your node location
<form name="data" action="/save" method="POST">to<form name="data" action="http://hq-salsa.
democracyinaction.org/save" method="POST">
Step 3
www.salsalabs.com
Set up Error messages add the following anywhere on you page.<script type="text/javascript" src="http://yournode/api/flashMessageJS.sjs"></script>e.g.<script type="text/javascript" src="http://hq-salsa.democracyinaction.org/api/flashMessageJS.sjs"></script>
Step 4
www.salsalabs.com
TA DA!
https://secure.flickr.com/photos/cc_chapman/4878364959/
www.salsalabs.com
What is a NPO without Supporters? and ways to encourage them to sign up more?
www.salsalabs.com
Petitions Surveys Email lists Events Actions
in minutes!
You can create
www.salsalabs.com
● http://www.salsalabs.com/devs● http://www.salsalabs.
com/devs/recipes/webform_api/signup_form
● http://www.salsalabs.com/p/salsa/website/public2/commons/dev/docs/api/unauthenticated.sjs?null
● http://www.salsalabs.com/devs/recipes/webform_api/action_form
● http://www.salsalabs.com/devs/recipes/webform_api/event_form
Additional resources
www.salsalabs.com
RESTful API
www.salsalabs.com
What is REST?
representational state transfer
www.salsalabs.com
https://secure.flickr.com/photos/becca/9541595/
www.salsalabs.com
http://tomayko.com/writings/rest-to-my-wife
Get Put Delete an objectCRUD Create, Read, Update and Delete
● Current API - getObject or getObjects
○ Powerful but obtuse
● RESTful API - more specific○ getSupporter○ getEvent○ getDonation
No Really... What is REST
www.salsalabs.com
MongoDB - NoSQL● Integrations
● Mashery ● 150K dev
● easy dev - check box like salesforce● hire more devs but for free
● Drupal ● Large scale CMS
● Wordpress ● 22% of the websites
Why REST?
www.salsalabs.com
Authentication
● http://hq-salsa.democracyinaction.org/api/authenticate.sjs?email=youremailaddress&password=yourpassword
Primary use cases are for syncing data across desparate databases.
www.salsalabs.com
www.salsalabs.com
Getting data:-- xmlhttp://hq-salsa.democracyinaction.org/api/getObject.sjs?xml&object=supporter&key=thesupporter_KEY -- jsonhttp://hq-salsa.democracyinaction.org/api/getObject.sjs?json&object=supporter&key=thesupporter_KEY
getObject.sjs
www.salsalabs.com
www.salsalabs.com
www.salsalabs.com
http://hq-salsa.democracyinaction.org/api/getObjects.sjs?xml&object=supporter&include=First_Name,Last_Name,Email&condition=supporter_KEY=condition● Note how you can add an include parameter, you can toggle the out
put by changing xml to json● Condition can be anything that you would put in the where part of a sql
query
getObjects.sjs
www.salsalabs.com
www.salsalabs.com
● http://hq-salsa.democracyinaction.org/api/getLeftJoin.sjs?xml&object=supporter_groups,supporter&condition=supporter_KEY=thesupporter_KEY&include=groups_KEY
getLeftJoin.sjs
www.salsalabs.com
www.salsalabs.com
● http://hq-salsa.democracyinaction.org/api/getCounts.sjs?object=donation&condition=RESULT=0&countColumn=amount&xml&callback
● http://hq-salsa.democracyinaction.org/api/getCounts.sjs?object=donation&condition=RESULT=0&countColumn=amount&json&callback
getCounts.sjs
www.salsalabs.com
www.salsalabs.com
www.salsalabs.com
Adding datahttps://hq-salsa.democracyinaction.org/save?xml&object=supporter&organization_KEY=yourorgKEY&key=thesupporter_KEY&City=myCity&First_Name=Yoncheck:http://hq-salsa.democracyinaction.org/api/getObjects.sjs?xml&object=supporter&include=First_Name,Last_Name,Email&condition=supporter_KEY=thesupporter_KEY
/save
www.salsalabs.com
creating a completely new supporterhttps://hq-salsa.democracyinaction.org/save?xml&object=supporter&organization_KEY=yourorganization_KEY&key=0&City=myCity&First_Name=Tester&[email protected]
/save continued
www.salsalabs.com
● http://www.salsalabs.com/devs/recipes/data_api/synchronize
● http://www.salsalabs.com/devs/recipes/data_api/event_signups
Additional resources
www.salsalabs.com
www.salsalabs.com
www.salsalabs.com
https://docs.google.com/spreadsheet/ccc?key=0AmFGN9Kd_fgSdEpXV0FCYWlHSi16ZVMtNGJwLTlnUnc#gid=0
sign up to help prioritize help us help you!
Participate!
www.salsalabs.com
Power API -- using SalsaScript
www.salsalabs.com
https://secure.engenderhealth.org/o/1222/p/d/engenderhealth/donations/public/secure-donation-v3-x2.sjs
Beautiful Example
www.salsalabs.com
www.salsalabs.com
www.salsalabs.com
Eat your own dog food.
EYDF
www.salsalabs.com
https://secure.flickr.com/photos/28863939@N04/5419597517/
TA DA!
UniqueBeautifulall your own
www.salsalabs.com
http://www.salsalabs.com/devs/developer_signup
Additional Resources