Notes:
- replace {flock} with the client identifier
- 201 = create
- 404 = not found (also returned on bad user credentials)
- 409 = conflict (auth and structure ok but a problem with the data values)
- curl defaults to
GETthe-dswitch is an httpPOST
Required: email, password
curl https://api.sheepcrm.com/api/v1/{flock}/user/auth/ -d "email=james@james-webster.co.uk&password=password"
{
"first_name" : "James",
"username" : "159d5521d2",
"bearer_token" : "159d5521d2:ae2be0da4f",
"last_name" : "Webster",
"email": "james@james-webster.co.uk",
"session_expiry" : "2017-01-10T15:01:05.401000"
}
Required: email
curl https://api.sheepcrm.com/api/v1/{flock}/user/preauth/ -d "email=james@james-webster.co.uk"
{
"next_step": "password",
"username" : "159d5521d2",
"status": "active"
"email": "james@james-webster.co.uk",
}
next steps can be 'password', 'activation' or 'blocked'
Required: email
curl https://api.sheepcrm.com/api/v1/{flock}/user/?email=james@james-webster.co.uk -H "Authorization: Bearer {full api token}"
{
...
}
Required: email
Optional: password (send to random string if not present)
curl https://api.sheepcrm.com/api/v1/{flock}/user/ -d "email=james@james-webster.co.uk&password=password" -H "Authorization: Bearer {full api token}"
{
"email": "james@james-webster.co.uk",
"status": "created",
"username": "2c58216a85"
}
or
409 {"error": "existing user account found"}
409 {"error": "existing person found without user account"}
curl https://api.sheepcrm.com/api/v1/{flock}/user/159d5521d2/ -H "Authorization: Bearer {token}"
{
"person" : {
"postal_code" : "...",
"region" : "...",
"address_lines" : [
"...",
"..."
],
"locality" : "..."
},
"first_name" : "James",
"session_expiry" : "2017-01-10T15:01:05.401000",
"last_name" : "Webster",
"email": "james@james-webster.co.uk",
"username" : "159d5521d2"
}
curl https://api.sheepcrm.com/api/v1/{flock}/user/159d5521d2/person/ -H "Authorization: Bearer {token}"
{
"postal_code" : "...",
"region" : "...",
"address_lines" : [
"...",
"..."
],
"locality" : "..."
}
logout is conceptually a delete on the auth token
curl https://api.sheepcrm.com/api/v1/{flock}/user/auth/ -H "Authorization: Bearer {token}" -X DELETE
{
"status" : "ok"
}
curl https://api.sheepcrm.com/api/v1/{flock}/user/159d5521d2/ -H "Authorization: Bearer {token}"
{
"error" : "permission denied"
}
curl https://api.sheepcrm.com/api/v1/{flock}/user/reset/ -d "email=james@james-webster.co.uk"
{
"status" : "ok"
}
curl https://api.sheepcrm.com/api/v1/{flock}/user/password/ -d "token=78b0c64f9c:80200d669a&password=foofoo"
{
"status" : "ok"
}
required: password
curl https://api.sheepcrm.com/api/v1/{flock}/user/{username}/password/ -H "Authorization: Bearer {token}" -X PUT -d "password=foobar"
{
"status" : "ok"
}
- HTTP
PUTis used to modify an existing resource. - The payload is expected to be valid JSON.
- Multiple updates to the same record can be combined into a single call.
Sheep support list fields e.g. tags, email, telephone
{"tags": ["apple", "pear"]}
Append to a list fields by sending a single value
PUT {"tags":"orange"}
{"tags": ["apple", "pear", "orange"]}
Replace the list by sending a list
PUT {"tags":["apple", "orange"]}
{"tags": ["apple", "orange"]}
PUT {"tags":[]}
{"tags": []}
Delete a list item by removing and sending the whole list:
e.g. remove pear
{"tags": ["apple", "pear"]}
PUT {"tags":["apple"]}
{"tags": ["apple"]}
Edits to the user account will update the person record too (where the field is valid) i.e. an update to the first name of the user account will also update the first name of the person record. (see Person editable fields)
Editable fields: 'first_name', 'last_name', 'email', 'external_photo_url', 'timezone'
note: payload is json, method is
PUT
curl https://api.sheepcrm.com/api/v1/{flock}/user/{username}/ -X PUT -d '{"first_name":"Jim"}' -H "Authorization: Bearer {token}"
{
"errors": {},
"updates": {
"first_name": "Jim",
}
}
These are edits to the person record not the user account. Use this method to update person specific fields or to update the peson without changing the user account.
editable fields: 'first_name', 'last_name', 'address_lines', 'locality', 'comms_permission', 'region', 'postal_code', 'country', 'email', 'telephone', 'external_photo_url', 'timezone'
note: payload is json, method is
PUT
curl https://api.sheepcrm.com/api/v1/{flock}/user/{username}/person/ -X PUT -d '{"region":"Norfolk"}' -H "Authorization: Bearer {token}"
{
"errors": {},
"updates": {
"region": "Norfolk",
}
}
curl https://api.sheepcrm.com/api/v1/{flock}/user/{username}/membership/ -H "Authorization: Bearer {token}"
{
"memberships": [
{...},
{...},
],
}
curl https://api.sheepcrm.com/api/v1/{flock}/user/{username}/membership/{muid}/ -H "Authorization: Bearer {token}"
{
"amount": null,
"billing_contact": "..."
"currency": "..."
"end_date": "..."
"gift_aid": "..."
"linked_members": "..."
"..."
],
"max_linked_members": "..."
"member": "..."
"membership_number": "..."
"membership_plan_type": "..."
"membership_record_status": "..."
"membership_type": "..."
"membership_type_for_display": "..."
"start_date": "..."
"tags": "..."
null
],
"uri": "..."
"muid": "..."
"user_role": "owner|linked_member",
}
curl https://api.sheepcrm.com/api/v1/{flock}/user/{username}/membership/{muid}/linked/ -H "Authorization: Bearer {token}"
[
{
"email": "mike.mitchell@email.com",
"first_name": "Michael",
"last_name": "Mitchell",
"uri": "..."
},
{
"email": "john@email.com",
"first_name": "John",
"last_name": "Lovett",
"uri": "...",
"luid": "..."
}
]
curl https://api.sheepcrm.com/api/v1/{flock}/user/{username}/membership/{muid}/linked/{luid}/ -H "Authorization: Bearer {token}"
{
"email": "mike.mitchell@email.com",
"first_name": "Michael",
"last_name": "Mitchell",
"uri": "...",
"luid": "..."
}
required: first_name, last_name, email (will create a person record if it doesn't exist)
curl https://api.sheepcrm.com/api/v1/{flock}/user/{username}/membership/{muid}/linked/ -X POST -d '{"first_name":"Jim", "last_name":"Lovell", "email":"jim@nasa.gov"}' -H "Authorization: Bearer {token}"
{
"status": "ok",
}
curl https://api.sheepcrm.com/api/v1/{flock}/user/{username}/membership/{muid}/linked/{luid}/ -X DELETE -H "Authorization: Bearer {token}"
{
"status": "ok",
}
address_lines
comms_permission
country
deceased
display_value
email
email_opt_out
external_photo_url
facebook_username
first_name
formatted_name
initial
instagram_username
job_title
known_as
language
last_name
linkedin_public_profile
locality
member_since
membership_record_status
membership-{n}
name_suffix
photo
postal_code
region
salutation
sortable_name
telephone
time_zone
title
twitter_username
uri
website
### membership plans
"amount" // number
"billing_contact" // sheep uri
"currency": // string 3 letter currency code lower case e.g. gbp | usd | eur
"end_date": // datetime
"gift_aid": // boolean
"member": // sheep uri
"membership_number": // string
"membership_record_status": // active | lapsed | cancelled | incomplete | future
"membership_type": // sheep uri
"membership_type_for_display": // string
"start_date": // datetime
"tags": // list of string
required: email, password, event_uid
optional: partner (default is eventbrite)
The intention is to collect a users credential and if successful to redirect them to the event.
curl https://api.sheepcrm.com/api/v1/{flock}/user/events/access_code/ -X POST -d '{"email":"james@sheepcrm.com", "password":"password", "event_uid":"1234567"}'
{
"email": "james@sheepcrm.com",
"event_url": "https://www.eventbrite.co.uk/e/1234567/?discount=abcdefg",
"first_name": "James",
"last_name": "Webster",
"username": "1234abcde"
}