StrideStride API

Hi friend! Please be aware that you're looking at some prerelease documentation, and as such it's not finished yet. Even so, we welcome feedback.

Hi, and thanks for checking out our developer docs. We'll assume you're at least mildly familiar with Stride itself, and want to build something neat that interfaces with Stride.

Authentication

You'll need a couple things to get started. You'll need to have created an App, gathered your application ID (often referred to as a "Client ID") and secret, and set a Redirect URI to let the user return to your app once they've granted access to your app. You can do all of this on our developer site, at https://strideapp.com/developers/.

Once you've got your client ID and secret, you'll need to get an access token for a user that allows you to interact with their teams, deals, and other resources. You can specify different scopes, that allow you to be more granular on what permissions you're requesting from the user. The scopes we currently offer are public, read, and write. If you're using an OAuth2 library, you can probably skip over the next bit.

To get your access token, direct a user's browser to

https://strideapp.com/oauth/authorize?response_type=code&client_id=Client ID&redirect_uri=Redirect URI&scope=read write
. TODO: example url They'll get a screen similar to this:

If they authorize your app, they'll get redirected back to your Redirect URI, with a parameter called code containing an authorization code. Your server must now exchange this authorization code for an access token, and a refresh token. To exchange your authorization code, make a POST request to https://strideapp.com/oauth/token with the following parameters:

code
Authorization Code provided to your Redirect URI
client_id
Your Client ID
client_secret
Your Client Secret
redirect_uri
Your Redirect URI
grant_type
authorization_code

If your exchange request is correct & valid, you'll get a JSON object returned, containing your access token, type, and expiration. An example response looks like this:


{
  "access_token":"940c0ffc8d7af7191be589fd89db35cc333d0c11260d792a755d376f4c09e4f7",
  "expires_in":5523,
  "token_type":"Bearer"
}
      

Working with Deals

Let's run through a example lifecycle of a Deal in Stride. A quick note — Deals are internally known as Projects.

Let's assume you've got a token ready to rock. First, let's create a new deal. We'll POST to the projects endpoint on our team, and get back our new project.


POST /api/v1/teams/1/projects HTTP/1.1
Host: strideapp.com
Accept: */*
Authorization: Bearer zee_token
Content-Type: application/json
Content-Length: 86

{"project[name]": "Mobile app redesign.", "project[client]": "Sterling Draper Price"}
      

{
  "position": 19,
  "name": "Mobile app redesign.",
  "extrapolated_value": null,
  "created_at": "2012-10-17T14:51:24-07:00",
  "updated_at": "2012-10-17T14:51:24-07:00",
  "contact_info": null,
  "id": 13179,
  "user_id": null,
  "exact_value": null,
  "estimate_value": null,
  "client": "Sterling Draper Price",
  "description": null,
  "team_id": 1,
  "state_id": 2
}
    

Oops — we forgot to include a value and description. Let's update the deal with that now.


PUT https://strideapp.com/api/v1/teams/1/projects/1.json
Authorization: "Bearer zee_token"

{"project[exact_value]": "6500", "project[description]": "SDP wants us to redesign their mobile app for the Blackberry Stupendous 4."}
    

    {
      "id":"13179",
      "name":"Mobile app redesign.",
      "client":"Sterling Draper Price",
      "exact_value": "6500",
      "estimate_value": null,
      "description": "SDP wants us to redesign their mobile app for the Blackberry Stupendous 4."
      ...[snip]...
    }
        

Excellent! Now we've just heard that we're about to pitch them, and we need to move this deal to that state. We do that by updating the state_id attribute on our project. First things first, we need to know the ID's of the states we can send it to. Let's fetch those now.


GET /api/v1/teams/1/states HTTP/1.1
Host: strideapp.com
Accept: */*
Authorization: Bearer zee_token
    

[
  {
    "position": 0,
    "name": "Lost",
    "created_at": "2012-02-28T20:00:26-08:00",
    "updated_at": "2012-09-02T10:40:55-07:00",
    "id": 1,
    "user_id": 3,
    "team_id": 1,
    "state_type": 2,
    "active": true
  },
  {
    "position": 1,
    "name": "Lead",
    "created_at": "2012-02-28T20:00:26-08:00",
    "updated_at": "2012-09-02T10:40:55-07:00",
    "id": 2,
    "user_id": 3,
    "team_id": 1,
    "state_type": null,
    "active": true
  },
  {
    "position": 2,
    "name": "Pitch",
    "created_at": "2012-02-28T20:00:26-08:00",
    "updated_at": "2012-09-02T10:40:55-07:00",
    "id": 3,
    "user_id": 3,
    "team_id": 1,
    "state_type": null,
    "active": true
  },
  ...[snip]...
]
        

OK, now we know our state IDs, so we can update our deal's state_id to be the Pitch state. An important thing to note — the state_type attribute represents "special" states such as won, lost, or paused. See the State resource reference for details.

Let's update our deal now, and move it to the Pitch state. We do this by creating a Transition with the finish_state_id matching the state we want.


POST /api/v1/teams/1/projects/13179/transitions HTTP/1.1
Host: strideapp.com
Accept: */*
Authorization: Bearer zee_token
Content-Type: application/json
Content-Length: 37

{"transition[finish_state_id]": "3" }

Great — we're now in the right state on that deal, and anyone watching the deal just saw it move to the right state! Lastly, let's add a note to that transition, and we'll call it a day. We can include a Transition ID when we create our note, and it'll be attached to that Transition. We can also just create a note that's not attached to any transition. For this example, let's attach it to the transition we just made.


POST /api/v1/teams/1/projects/13179/notes HTTP/1.1
Host: strideapp.com
Accept: */*
Authorization: Bearer zee_token
Content-Type: application/json
Content-Length: 72

{"note[body]": "So excited! Let's get out there and pitch this.", "note[transition_id]":"225" }

Getting in touch with us

We strive to make ourselves as available as possible to our fellow developers. Get in touch with us on twitter at @strideapp, IRC at #stride on Freenode, or Github at http://github.com/strideapp. If you find anything confusing or unclear in this documentation, it's available on GitHub, and we pay close attention to issues and pull requests.

Resource Reference

Comment

This resource represents a comment in the system - a Comment can be attatched to any Transition, Note, or Task that you can access.

Attributes

Example


{
  "body": "A fixtured comment.",
  "commented_id": 736317215,
  "commented_type": "Transition",
  "created_at": "2012-12-17T15:37:01-08:00",
  "id": 962232062,
  "updated_at": "2012-12-17T15:37:01-08:00",
  "user_id": 235152081,
  "avatar": "https://secure.gravatar.com/avatar/d35a5eb6f89727228e599e82b3ddf0f4.jpg?s=24&d=http://localhost:3000/assets/avatars/default/ap.png",
  "username": "Adrian Pike",
  "orphaned": false
}
  

Invitation

When an Invitation is created, an email will be sent to the user. If and when they accept the invitation, a Membership will be created for them.

Attributes

Example


{
  "created_at": "2012-12-17T15:37:01-08:00",
  "email": "matz@internets.com",
  "id": 902825446,
  "inviter_id": 235152081,
  "team_id": 496179711,
  "token": "hayyyyyy",
  "updated_at": "2012-12-17T15:37:01-08:00",
  "user": "matz@internets.com",
  "avatar": "https://secure.gravatar.com/avatar/7af0087ec837dda786539a7c21c03f4f.jpg?s=100&d=http://localhost:3000/assets/avatars/default/m.png",
  "status": "Invited",
  "owner": false,
  "type": "Invitation",
  "became_membership": false
}
  

Membership

Memberships can only be created through Invitations.

Attributes

Example


{
  "created_at": "2012-12-17T15:37:01-08:00",
  "id": 55524870,
  "inviter_id": null,
  "status": null,
  "team_id": 151630838,
  "updated_at": "2012-12-17T15:37:01-08:00",
  "user_id": 817153026,
  "user": "Amiel Martin",
  "avatar": "https://secure.gravatar.com/avatar/717f2120e2cacda5fd3bf45232f04e28.jpg?s=64&d=http://localhost:3000/assets/avatars/default/am.png",
  "status": "translation missing: en.memberships.status.title",
  "owner": false,
  "type": "Membership"
}
  

Note

Attributes

Example


{
  "body": "This is just a test note.",
  "created_at": "2012-12-17T15:37:01-08:00",
  "id": 128640987,
  "project_id": 194031745,
  "transition_id": null,
  "updated_at": "2012-12-17T15:37:01-08:00",
  "user_id": 235152081,
  "dom_id": "note_128640987"
}
  

Operation

Attributes

Example


{
  "operation_id": 551462016,
  "user_id": 235152081,
  "action": "create",
  "object_id": "3",
  "object_class": "Invitation",
  "object": null,
  "timestamp": "2012-09-06T23:24:38-07:00",
  "username": "Adrian Pike",
  "url": "/teams/496179711",
  "icon": "https://secure.gravatar.com/avatar/d35a5eb6f89727228e599e82b3ddf0f4.jpg?s=24&d=http://localhost:3000/assets/avatars/default/ap.png",
  "unread": null,
  "user_name": "Adrian Pike",
  "time_ago_in_words": "3 months",
  "description": "Invited tomato@pikeapps.com to the team.",
  "performer_session_key": null
}
  

Project

Attributes

Example


{
  "client": "Whitepages",
  "contact_info": null,
  "created_at": "2012-12-17T15:37:01-08:00",
  "description": null,
  "estimate_value": null,
  "exact_value": 1.0,
  "extrapolated_value": null,
  "id": 109545269,
  "last_active_state_id": null,
  "name": "Nascar",
  "position": null,
  "state_id": 482766268,
  "team_id": 216689250,
  "updated_at": "2012-12-17T15:37:01-08:00",
  "user_id": null,
  "value": "$1",
  "state_name": "close",
  "state_identifier": "close",
  "paused": false,
  "contact_info": null,
  "last_active_state_id": null,
  "formatted_contact_info": null,
  "inactive": false
}
  

State

Attributes

Example


{
  "id": 48067991,
  "name": "It's Lost",
  "state_type": 2,
  "identifier": "its-lost"
}
  

Task

Attributes

Example


{
  "id": 351268459,
  "dom_id": "task_351268459",
  "name": "Quit Teaching",
  "completed": false,
  "project_id": 542645505,
  "task_reminder": {
    "id": 320318039,
    "date": "2012-05-17",
    "user_date_string": null,
    "task_id": 351268459,
    "sent_at": null
  },
  "owner_id": 320547487,
  "owner_name": "Nathan Carnes",
  "owner_avatar": "https://secure.gravatar.com/avatar/02e7005e731d5b497ac378f13510a781.jpg%3Fs=24&d=http://localhost:3000/assets/avatars/default/nc.png",
  "due_date": "2012-05-17",
  "due_date_string": null,
  "type": "Task",
  "watches": [

  ]
}
  

Taskreminder

Task Reminders are deprecated - Use due_date and due_date_string on a given Task.

Attributes

Example


{
  "id": 320318039,
  "date": "2012-05-17",
  "user_date_string": null,
  "task_id": 351268459,
  "sent_at": null
}
  

Team

Attributes

Example


{
  "beta_invite_id": null,
  "created_at": "2012-12-17T15:37:00-08:00",
  "currency_identifier": "usd",
  "extrapolate_values": false,
  "free_projects": null,
  "id": 151630838,
  "name": "Carnes Media",
  "updated_at": "2012-12-17T15:37:00-08:00",
  "user_id": null,
  "max_projects": 10,
  "paid": null,
  "friendly_plan_name": "free",
  "currency_symbol": "$",
  "projects_left": 10,
  "friendly_projects_left": 10,
  "user_name": "",
  "user_email": null,
  "unlimited": false,
  "states": [

  ]
}
  

Transition

Attributes

Example


{
  "created_at": "2012-12-17T15:37:01-08:00",
  "finish_state_id": 838731158,
  "id": 102027969,
  "project_id": 194031745,
  "start_state_id": 529122157,
  "updated_at": "2012-12-17T15:37:01-08:00",
  "user_id": null
}
  

Endpoint Reference

API Status

get /status

Scopes: write, read, public Resource(s):

Params

Example Request


GET https://strideapp.com/api/v1/status.json
Authorization: "Bearer amazing_auth_token"
  

Example Response


{"status":"Stride is running.","revision":"701f7a60830ea79b1de3e01c6b42e721f2971c2a","queue_length":0}
    

Token capabilities

get /capabilities

Scopes: write, read Resource(s):

Params

Example Request


GET https://strideapp.com/api/v1/capabilities.json
Authorization: "Bearer amazing_auth_token"
  

Example Response


public
    

List teams

get /teams

Scopes: write, read Resource(s): Team

Params

Example Request


GET https://strideapp.com/api/v1/teams.json
Authorization: "Bearer amazing_auth_token"
  

Example Response


[{"beta_invite_id":nil, "created_at":"2012-09-06T23:02:39-07:00", "currency_identifier":"usd", "extrapolate_values":false, "free_projects":nil, "id":1, "name":"Testing", "updated_at":"2012-09-06T23:02:39-07:00", "user_id":1, "max_projects":5, "paid":nil, "friendly_plan_name":"free", "currency_symbol":"$", "projects_left":5, "user_name":"Adrian Pike", "user_email":"adrian@pikeapps.com", "unlimited":false},
{"beta_invite_id":nil, "created_at":"2012-09-10T18:43:49-07:00", "currency_identifier":"usd", "extrapolate_values":false, "free_projects":nil, "id":2, "name":"anodda team", "updated_at":"2012-09-10T18:43:49-07:00", "user_id":1, "max_projects":5, "paid":nil, "friendly_plan_name":"free", "currency_symbol":"$", "projects_left":5, "user_name":"Adrian Pike", "user_email":"adrian@pikeapps.com", "unlimited":false}]
    

View team

get /teams/:id

Scopes: write, read Resource(s): Team

Params

Example Request


GET https://strideapp.com/api/v1/teams/:id.json
Authorization: "Bearer amazing_auth_token"
  

Example Response


{"beta_invite_id":null,"created_at":"2012-02-29T14:58:07+11:00","currency_identifier":"usd","extrapolate_values":false,"free_projects":25,"id":1,"name":"Adrian Pike","updated_at":"2012-09-03T03:40:54+10:00","user_id":3,"max_projects":25,"paid":null,"friendly_plan_name":"free","currency_symbol":"$","projects_left":23,"friendly_projects_left":23,"user_name":"Adrian Pike","user_email":"adrian@pikeapps.com","unlimited":false,"states":[{"id":1,"name":"Lost","state_type":2,"identifier":"lost"},{"id":2,"name":"Incoming","state_type":null,"identifier":"incoming"},{"id":3,"name":"Emailed","state_type":null,"identifier":"emailed"},{"id":4,"name":"In discussion","state_type":null,"identifier":"in-discussion"},{"id":5,"name":"Hacking","state_type":null,"identifier":"hacking"},{"id":6,"name":"Won","state_type":1,"identifier":"won"},{"id":7,"name":"Hold","state_type":3,"identifier":"hold"}]}
    

Team metrics

get /teams/:id/metrics

Scopes: write, read Resource(s): Metrics

Params

Example Request


GET https://strideapp.com/api/v1/teams/:id/metrics.json
Authorization: "Bearer amazing_auth_token"
  

Example Response


{"active_value":"$500","deal_counts":{"active":2,"all":22}}
    

Activity log

get /teams/:id/activity

Scopes: write, read Resource(s): Operation

Params

Example Request


GET https://strideapp.com/api/v1/teams/:id/activity.json
Authorization: "Bearer amazing_auth_token"
  

Example Response


{"action"=>"create", "created_at"=>"2012-09-06T23:24:38-07:00", "description"=>"Invited tomato@pikeapps.com to the team.", "id"=>3, "ip"=>"127.0.0.1", "model_changes"=>{}, "model_id"=>"3", "model_type"=>"Invitation", "team_id"=>1, "updated_at"=>"2012-09-06T23:24:38-07:00", "user_id"=>1}
    {"action"=>"create", "created_at"=>"2012-09-06T23:22:54-07:00", "description"=>"Invited bob@testing.com to the team.", "id"=>2, "ip"=>"127.0.0.1", "model_changes"=>{}, "model_id"=>"2", "model_type"=>"Invitation", "team_id"=>1, "updated_at"=>"2012-09-06T23:22:54-07:00", "user_id"=>1}
    {"action"=>"create", "created_at"=>"2012-09-06T23:08:56-07:00", "description"=>"Invited bob@testapps.com to the team.", "id"=>1, "ip"=>"127.0.0.1", "model_changes"=>{}, "model_id"=>"1", "model_type"=>"Invitation", "team_id"=>1, "updated_at"=>"2012-09-06T23:08:56-07:00", "user_id"=>1}
    

List memberships

get /teams/:id/memberships

Scopes: write, read Resource(s): Membership

Params

Example Request


GET https://strideapp.com/api/v1/teams/:id/memberships.json
Authorization: "Bearer amazing_auth_token"
  

Example Response


{"created_at"=>"2012-09-06T23:02:39-07:00", "id"=>1, "inviter_id"=>nil, "status"=>1, "team_id"=>1, "updated_at"=>"2012-09-06T23:02:39-07:00", "user_id"=>1}
    {"created_at"=>"2012-09-06T23:28:28-07:00", "id"=>2, "inviter_id"=>1, "status"=>0, "team_id"=>1, "updated_at"=>"2012-09-06T23:28:28-07:00", "user_id"=>2}
    

List pending invitations

get /teams/:id/invitations

Scopes: write, read Resource(s): Invitation

Params

Example Request


GET https://strideapp.com/api/v1/teams/:id/invitations.json
Authorization: "Bearer amazing_auth_token"
  

Example Response


[{"created_at":"2012-12-17T14:57:32-08:00","email":"foodebar@pikeapps.com","id":358,"inviter_id":3,"team_id":1,"token":"UXKKfj79A1MFhZAmMmM","updated_at":"2012-12-17T14:57:32-08:00"}]
    

Invite member to team

post /teams/:id/invitations

Scopes: write Resource(s): Invitation

Params

invitation[email]
testing@stridez.com

Example Request


POST https://strideapp.com/api/v1/teams/:id/invitations.json
Authorization: "Bearer amazing_auth_token"

{"invitation[email]":"testing@stridez.com"}
  

Example Response



    

Get comments on an object

get /teams/:id/comments

Scopes: write, read Resource(s): Comment

Params

commented_type
Transition
commented_id

Example Request


GET https://strideapp.com/api/v1/teams/:id/comments.json
Authorization: "Bearer amazing_auth_token"

{"commented_type":"Transition","commented_id":{}}
  

Example Response


[{"body":"A sweet sweet comment.","commented_id":34282,"commented_type":"Transition","created_at":"2012-12-17T14:58:30-08:00","id":213,"updated_at":"2012-12-17T14:58:30-08:00","user_id":3,"avatar":"https://s3.amazonaws.com/stride_production/users/avatars/000/000/003/tiny/me-americas_cup.jpeg?1346701870","username":"Adrian Pike","orphaned":false}]
    

Comment on an object

post /teams/:id/comments

Scopes: write Resource(s): Comment

Params

comment[commented_type]
Transition
comment[commented_id]
comment[body]
This is a sample comment.

Example Request


POST https://strideapp.com/api/v1/teams/:id/comments.json
Authorization: "Bearer amazing_auth_token"

{"comment[commented_type]":"Transition","comment[commented_id]":{},"comment[body]":"This is a sample comment."}
  

Example Response



    

Update a comment

put /teams/:team_id/comments/:id

Scopes: write Resource(s): Comment

Params

comment[body]
This is an updated comment.

Example Request


PUT https://strideapp.com/api/v1/teams/:team_id/comments/:id.json
Authorization: "Bearer amazing_auth_token"

{"comment[body]":"This is an updated comment."}
  

Example Response



    

Delete a comment

delete /teams/:team_id/comments/:id

Scopes: write Resource(s): Comment

Params

Example Request


DELETE https://strideapp.com/api/v1/teams/:team_id/comments/:id.json
Authorization: "Bearer amazing_auth_token"
  

Example Response



    

Get a list of a team's states

get /teams/:team_id/states

Scopes: write, read Resource(s): State

Params

Example Request


GET https://strideapp.com/api/v1/teams/:team_id/states.json
Authorization: "Bearer amazing_auth_token"
  

Example Response


[{"id":1,"name":"Lost","state_type":2,"identifier":"lost"},{"id":2,"name":"Incoming","state_type":null,"identifier":"incoming"},{"id":3,"name":"Emailed","state_type":null,"identifier":"emailed"},{"id":4,"name":"In discussion","state_type":null,"identifier":"in-discussion"},{"id":5,"name":"Hacking","state_type":null,"identifier":"hacking"},{"id":6,"name":"Won","state_type":1,"identifier":"won"},{"id":7,"name":"Hold","state_type":3,"identifier":"hold"}]
    

List deals

get /teams/:id/projects

Scopes: write, read Resource(s): Project

Params

Example Request


GET https://strideapp.com/api/v1/teams/:id/projects.json
Authorization: "Bearer amazing_auth_token"
  

Example Response


[{"client":"","contact_info":null,"created_at":"2012-02-28T20:00:33-08:00","description":null,"estimate_value":null,"exact_value":null,"extrapolated_value":null,"id":3,"last_active_state_id":5,"name":"Test","position":1,"state_id":6,"team_id":1,"updated_at":"2012-09-02T10:40:55-07:00","user_id":3,"value":null,"state_name":"won","state_identifier":"won","paused":false,"formatted_contact_info":null,"inactive":true},{"client":"","contact_info":null,"created_at":"2012-03-04T15:26:26-08:00","description":null,"estimate_value":null,"exact_value":500.0,"extrapolated_value":null,"id":4,"last_active_state_id":4,"name":"First test deal","position":1,"state_id":6,"team_id":1,"updated_at":"2012-09-02T10:40:55-07:00","user_id":3,"value":"$500","state_name":"won","state_identifier":"won","paused":false,"formatted_contact_info":null,"inactive":true},{"client":"","contact_info":null,"created_at":"2012-03-04T19:00:26-08:00","description":null,"estimate_value":null,"exact_value":552.0,"extrapolated_value":null,"id":5,"last_active_state_id":4,"name":"Test deal","position":1,"state_id":6,"team_id":1,"updated_at":"2012-09-02T10:40:55-07:00","user_id":3,"value":"$552","state_name":"won","state_identifier":"won","paused":false,"formatted_contact_info":null,"inactive":true},{"client":"test","contact_info":null,"created_at":"2012-03-11T21:31:39-07:00","description":null,"estimate_value":null,"exact_value":null,"extrapolated_value":null,"id":2068,"last_active_state_id":2,"name":"\u00c1","position":3,"state_id":6,"team_id":1,"updated_at":"2012-09-02T10:40:55-07:00","user_id":3,"value":null,"state_name":"won","state_identifier":"won","paused":false,"formatted_contact_info":null,"inactive":true},{"client":"","contact_info":null,"created_at":"2012-03-13T17:56:59-07:00","description":null,"estimate_value":null,"exact_value":null,"extrapolated_value":null,"id":2874,"last_active_state_id":2,"name":"yet another another deal","position":1,"state_id":6,"team_id":1,"updated_at":"2012-09-02T10:40:55-07:00","user_id":3,"value":null,"state_name":"won","state_identifier":"won","paused":false,"formatted_contact_info":null,"inactive":true},{"client":"","contact_info":null,"created_at":"2012-03-22T22:24:01-07:00","description":null,"estimate_value":null,"exact_value":null,"extrapolated_value":null,"id":3582,"last_active_state_id":4,"name":"amazing new deal","position":6,"state_id":6,"team_id":1,"updated_at":"2012-09-02T10:40:55-07:00","user_id":3,"value":null,"state_name":"won","state_identifier":"won","paused":false,"formatted_contact_info":null,"inactive":true},{"client":"","contact_info":null,"created_at":"2012-03-27T16:26:40-07:00","description":null,"estimate_value":null,"exact_value":null,"extrapolated_value":null,"id":3892,"last_active_state_id":2,"name":"test deal","position":7,"state_id":6,"team_id":1,"updated_at":"2012-09-02T10:40:55-07:00","user_id":3,"value":null,"state_name":"won","state_identifier":"won","paused":false,"formatted_contact_info":null,"inactive":true},{"client":"","contact_info":null,"created_at":"2012-03-27T16:26:51-07:00","description":null,"estimate_value":null,"exact_value":null,"extrapolated_value":null,"id":3893,"last_active_state_id":4,"name":"test deal","position":8,"state_id":6,"team_id":1,"updated_at":"2012-09-02T10:40:55-07:00","user_id":3,"value":null,"state_name":"won","state_identifier":"won","paused":false,"formatted_contact_info":null,"inactive":true},{"client":"","contact_info":"","created_at":"2012-07-27T08:50:06-07:00","description":"","estimate_value":null,"exact_value":null,"extrapolated_value":null,"id":10076,"last_active_state_id":2,"name":"Just a test deal.","position":14,"state_id":6,"team_id":1,"updated_at":"2012-09-02T10:40:55-07:00","user_id":3,"value":null,"state_name":"won","state_identifier":"won","paused":false,"formatted_contact_info":null,"inactive":true},{"client":"","contact_info":"","created_at":"2012-07-31T11:19:59-07:00","description":"","estimate_value":null,"exact_value":null,"extrapolated_value":null,"id":10179,"last_active_state_id":2,"name":"Just an example deal.","position":15,"state_id":6,"team_id":1,"updated_at":"2012-09-02T10:40:55-07:00","user_id":3,"value":null,"state_name":"won","state_identifier":"won","paused":false,"formatted_contact_info":null,"inactive":true},{"client":"","contact_info":"","created_at":"2012-10-03T21:49:44-07:00","description":"","estimate_value":null,"exact_value":null,"extrapolated_value":null,"id":12635,"last_active_state_id":2,"name":"Stride API Docs","position":0,"state_id":6,"team_id":1,"updated_at":"2012-11-29T09:34:41-08:00","user_id":null,"value":null,"state_name":"won","state_identifier":"won","paused":false,"formatted_contact_info":null,"inactive":true},{"client":"","contact_info":"","created_at":"2012-10-03T21:49:53-07:00","description":"","estimate_value":null,"exact_value":null,"extrapolated_value":null,"id":12636,"last_active_state_id":2,"name":"Stride API JS Library","position":1,"state_id":6,"team_id":1,"updated_at":"2012-11-29T09:34:38-08:00","user_id":null,"value":null,"state_name":"won","state_identifier":"won","paused":false,"formatted_contact_info":null,"inactive":true},{"client":"","contact_info":"adrian@pikeapps.com","created_at":"2012-10-03T21:50:01-07:00","description":"","estimate_value":null,"exact_value":null,"extrapolated_value":null,"id":12637,"last_active_state_id":2,"name":"Stride API Ruby Library","position":3,"state_id":6,"team_id":1,"updated_at":"2012-11-29T09:34:39-08:00","user_id":null,"value":null,"state_name":"won","state_identifier":"won","paused":false,"formatted_contact_info":"\u003Ca href=\"mailto:adrian@pikeapps.com\" class=\"email\"\u003E\u003Cimg src=\"https://secure.gravatar.com/avatar/d88be5034c7ff3f4be300e8ad4387fa5.jpg?s=24\u0026d=https://strideapp.com/assets/blank.png\" alt=\"\" class=\"avatar tiny\"\u003E adrian@pikeapps.com\u003C/a\u003E","inactive":true},{"client":"Sterling Draper Price","contact_info":"adrian@pikeapps.com","created_at":"2012-10-17T14:51:24-07:00","description":"SDP wants us to redesign their mobile app for the Blackberry Stupendous 4.","estimate_value":null,"exact_value":6500.0,"extrapolated_value":null,"id":13179,"last_active_state_id":3,"name":"Mobile app redesign.","position":2,"state_id":6,"team_id":1,"updated_at":"2012-11-29T09:34:40-08:00","user_id":null,"value":"$6,500","state_name":"won","state_identifier":"won","paused":false,"formatted_contact_info":"\u003Ca href=\"mailto:adrian@pikeapps.com\" class=\"email\"\u003E\u003Cimg src=\"https://secure.gravatar.com/avatar/d88be5034c7ff3f4be300e8ad4387fa5.jpg?s=24\u0026d=https://strideapp.com/assets/blank.png\" alt=\"\" class=\"avatar tiny\"\u003E adrian@pikeapps.com\u003C/a\u003E","inactive":true},{"client":"Adrian Pike","contact_info":"@adrianpike","created_at":"2012-11-26T20:22:19-08:00","description":"This is a sample deal.","estimate_value":null,"exact_value":500.0,"extrapolated_value":null,"id":14936,"last_active_state_id":null,"name":"A test deal!","position":16,"state_id":2,"team_id":1,"updated_at":"2012-11-29T09:34:56-08:00","user_id":null,"value":"$500","state_name":"incoming","state_identifier":"incoming","paused":false,"formatted_contact_info":" \u003Ca href=\"http://twitter.com/adrianpike\" class=\"twitter\"\u003E@adrianpike\u003C/a\u003E","inactive":false},{"client":"test","contact_info":"andrewjdumont@gmail.com","created_at":"2012-11-29T18:28:36-08:00","description":"","estimate_value":null,"exact_value":null,"extrapolated_value":null,"id":15061,"last_active_state_id":null,"name":"yay hooray","position":17,"state_id":3,"team_id":1,"updated_at":"2012-12-05T17:58:59-08:00","user_id":null,"value":null,"state_name":"emailed","state_identifier":"emailed","paused":false,"formatted_contact_info":"\u003Ca href=\"mailto:andrewjdumont@gmail.com\" class=\"email\"\u003E\u003Cimg src=\"https://secure.gravatar.com/avatar/c3fdf8c1d33ad4fe2b94b74e61743eec.jpg?s=24\u0026d=https://strideapp.com/assets/blank.png\" alt=\"\" class=\"avatar tiny\"\u003E andrewjdumont@gmail.com\u003C/a\u003E","inactive":false}]
    

Create a deal

post /teams/:id/projects

Scopes: write Resource(s): Project

Params

project[name]
Shiny new project

Example Request


POST https://strideapp.com/api/v1/teams/:id/projects.json
Authorization: "Bearer amazing_auth_token"

{"project[name]":"Shiny new project"}
  

Get a deal

get /teams/:team_id/projects/:id

Scopes: write, read Resource(s): Project

Params

Example Request


GET https://strideapp.com/api/v1/teams/:team_id/projects/:id.json
Authorization: "Bearer amazing_auth_token"
  

Example Response


{"client":"Adrian Pike","contact_info":"@adrianpike","created_at":"2012-11-26T20:22:19-08:00","description":"This is a sample deal.","estimate_value":null,"exact_value":500.0,"extrapolated_value":null,"id":14936,"last_active_state_id":null,"name":"A test deal!","position":16,"state_id":2,"team_id":1,"updated_at":"2012-11-29T09:34:56-08:00","user_id":null,"value":"$500","state_name":"incoming","state_identifier":"incoming","paused":false,"formatted_contact_info":" \u003Ca href=\"http://twitter.com/adrianpike\" class=\"twitter\"\u003E@adrianpike\u003C/a\u003E","inactive":false}
    

Delete a deal

delete /teams/:team_id/projects/:id

Scopes: write Resource(s): Project

Params

Example Request


DELETE https://strideapp.com/api/v1/teams/:team_id/projects/:id.json
Authorization: "Bearer amazing_auth_token"
  

Update a deal

put /teams/:team_id/projects/:id

Scopes: write Resource(s): Project

Params

project[name]
REO Speedwagon Redesign

Example Request


PUT https://strideapp.com/api/v1/teams/:team_id/projects/:id.json
Authorization: "Bearer amazing_auth_token"

{"project[name]":"REO Speedwagon Redesign"}
  

Transition a deal to another state

post /teams/:team_id/projects/:id/transitions

Scopes: write Resource(s): Transition

Params

transition[finish_state_id]

Example Request


POST https://strideapp.com/api/v1/teams/:team_id/projects/:id/transitions.json
Authorization: "Bearer amazing_auth_token"

{"transition[finish_state_id]":{}}
  

Remove a transition

delete /teams/:team_id/projects/:project_id/transitions/:id

Scopes: write Resource(s): Transition

Params

Example Request


DELETE https://strideapp.com/api/v1/teams/:team_id/projects/:project_id/transitions/:id.json
Authorization: "Bearer amazing_auth_token"
  

Get a deal history

get /teams/:team_id/projects/:id/events

Scopes: write, read Resource(s): Note Transition Task

Params

Example Request


GET https://strideapp.com/api/v1/teams/:team_id/projects/:id/events.json
Authorization: "Bearer amazing_auth_token"
  

Create a note on a deal

post /teams/:team_id/projects/:id/notes

Scopes: write Resource(s): Note

Params

note[body]
This is my newest and shiniest note.

Example Request


POST https://strideapp.com/api/v1/teams/:team_id/projects/:id/notes.json
Authorization: "Bearer amazing_auth_token"

{"note[body]":"This is my newest and shiniest note."}
  

Update a note on a deal

put /teams/:team_id/projects/:project_id/notes/:id

Scopes: write Resource(s): Note

Params

note[body]
This is an updated note.

Example Request


PUT https://strideapp.com/api/v1/teams/:team_id/projects/:project_id/notes/:id.json
Authorization: "Bearer amazing_auth_token"

{"note[body]":"This is an updated note."}
  

Delete a note on a deal

delete /teams/:team_id/projects/:project_id/notes/:id

Scopes: write Resource(s): Note

Params

Example Request


DELETE https://strideapp.com/api/v1/teams/:team_id/projects/:project_id/notes/:id.json
Authorization: "Bearer amazing_auth_token"
  

Get a deal's tasks

get /teams/:team_id/projects/:id/tasks

Scopes: write, read Resource(s): Task

Params

Example Request


GET https://strideapp.com/api/v1/teams/:team_id/projects/:id/tasks.json
Authorization: "Bearer amazing_auth_token"
  

Create a task on a deal

post /teams/:team_id/projects/:project_id/tasks

Scopes: write Resource(s): Task

Params

task[name]
Test task.

Example Request


POST https://strideapp.com/api/v1/teams/:team_id/projects/:project_id/tasks.json
Authorization: "Bearer amazing_auth_token"

{"task[name]":"Test task."}
  

Get an individual task

get /teams/:team_id/projects/:project_id/tasks/:id

Scopes: write, read Resource(s): Task

Params

Example Request


GET https://strideapp.com/api/v1/teams/:team_id/projects/:project_id/tasks/:id.json
Authorization: "Bearer amazing_auth_token"
  

Update a task

put /teams/:team_id/projects/:project_id/tasks/:id

Scopes: write Resource(s): Task

Params

task[name]
Test task.

Example Request


PUT https://strideapp.com/api/v1/teams/:team_id/projects/:project_id/tasks/:id.json
Authorization: "Bearer amazing_auth_token"

{"task[name]":"Test task."}
  

Delete a task

delete /teams/:team_id/projects/:project_id/tasks/:id

Scopes: write Resource(s): Task

Params

Example Request


DELETE https://strideapp.com/api/v1/teams/:team_id/projects/:project_id/tasks/:id.json
Authorization: "Bearer amazing_auth_token"
  

Get a task reminder for a task

get /teams/:team_id/projects/:project_id/tasks/:id/task_reminder

Scopes: write, read Resource(s): Task

Params

Example Request


GET https://strideapp.com/api/v1/teams/:team_id/projects/:project_id/tasks/:id/task_reminder.json
Authorization: "Bearer amazing_auth_token"
  

Create a task reminder

put /teams/:team_id/projects/:project_id/tasks/:id/task_reminder

Scopes: write Resource(s): TaskReminder

Params

task_reminder[date]
1985-1-1
task_reminder[user_id]
task_reminder[user_date_string]
1/1/1985

Example Request


PUT https://strideapp.com/api/v1/teams/:team_id/projects/:project_id/tasks/:id/task_reminder.json
Authorization: "Bearer amazing_auth_token"

{"task_reminder[date]":"1985-1-1","task_reminder[user_id]":{},"task_reminder[user_date_string]":"1/1/1985"}
  

Update a task reminder

put /teams/:team_id/projects/:project_id/tasks/:id/task_reminder

Scopes: write Resource(s): TaskReminder

Params

task_reminder[date]
1985-1-1
task_reminder[user_id]
task_reminder[user_date_string]
11/22/1985

Example Request


PUT https://strideapp.com/api/v1/teams/:team_id/projects/:project_id/tasks/:id/task_reminder.json
Authorization: "Bearer amazing_auth_token"

{"task_reminder[date]":"1985-1-1","task_reminder[user_id]":{},"task_reminder[user_date_string]":"11/22/1985"}
  

Delete a task reminder

delete /teams/:team_id/projects/:project_id/tasks/:id/task_reminder

Scopes: write Resource(s): TaskReminder

Params

Example Request


DELETE https://strideapp.com/api/v1/teams/:team_id/projects/:project_id/tasks/:id/task_reminder.json
Authorization: "Bearer amazing_auth_token"