Using Pow for OSX or Pax for GNU/Linux.
$ curl get.pow.cx | sh
$ cd ~/.pow
$ ln -s ~/workspace/MosesAPI
$ sudo git clone git://github.com/ysbaddaden/prax.git /opt/prax
$ cd /opt/prax/
$ ./bin/prax install
$ cd ~/workspace/MosesAPI
$ prax link
$ prax start
Used by PaperClip gem.
brew install imagemagick
Set the Facebook variables.
export FACEBOOK_APP_ID=<facebook_app_id>
export FACEBOOK_APP_SECRET=<facebook_app_secreat>
If using POW, you have to add the exports to .powenv file.
Authenticate using Facebook token. User will be automatically registered in Moses service if not already registered.
Method | Endpoint | Description |
---|---|---|
POST | /oauth/token/ | Get authentication token |
Parameters:
grant_type: assertion
token: <facebook token>
Response example:
{
"access_token": "09da8218e7f3ed0bbc3aa53586fd0221333f68510b5290b1ffe4e10dd11ea5d7",
"token_type": "bearer",
"expires_in": 7200,
"created_at": 1455051683
}
All subsequent call will be authenticated by the Authorization header:
Authorization: Bearer 09da8218e7f3ed0bbc3aa53586fd0221333f68510b5290b1ffe4e10dd11ea5d7
Get, edit or remove an user.
Method | Endpoint | Description |
---|---|---|
GET | /user/ | Gets the authenticated user |
PUT | /user/ | Edits the authenticated user |
DELETE | /user/ | Deletes the authenticated user |
GET response example:
{
"id": 3,
"first_name": "Carlos",
"full_name": "Carlos Moses",
"email": "[email protected]",
"facebook_id": "21788553421335852",
"locale": "pt_BR",
"timezone": -2
}
Create, get, edit or remove group.
Method | Endpoint | Description |
---|---|---|
GET | /groups/ | Gets all authenticated user's groups |
GET | /groups/<group_id> | Gets the group's details |
POST | /groups/ | Creates the group |
PATCH | /groups/ | Edits the group |
DELETE | /groups/ | Deletes the group if user is admin |
GET /groups response example
{
"groups":[
{
"id": 1,
"name": "New",
"status": "Active",
}
]
}
GET /groups/1 response example
{
"id": 1,
"name": "New",
"status": "Active",
"admins": [
{
"member_id": 3
}
],
"creator": {
"id": 3,
"first_name": "Carlos",
"full_name": "Carlos Moses",
"email": "[email protected]",
"facebook_id": "21788553421335852",
"locale": "pt_BR",
"timezone": -2
},
"members":[
{
"id": 3,
"first_name": "Carlos",
"full_name": "Carlos Moses",
"email": "[email protected]",
"facebook_id": "21788553421335852",
"locale": "pt_BR",
"timezone": -2
},
{
"id": 1,
"first_name": "Meta",
"full_name": "Hattie Orn I",
"email": "[email protected]",
"facebook_id": "100001252336714",
"locale": "en_US",
"timezone": 1
}
]
}
POST /groups request example
{
"group":
{
"name": "New",
"creator_id": 1,
"status": "Active",
"add_members":[
{
"id":"1",
"is_admin":true
},
{
"id":"4",
"is_admin":false
}
]
}
}
PATCH /groups/1 request example
{
"group":
{
"name": "New",
"creator_id": 1,
"status": "Active",
"add_members":[
{
"id":"1",
"is_admin":true
},
{
"id":"4",
"is_admin":false
}
],
"remove_members":[
{
"id":"3",
"is_admin":true
}
]
}
}
Create, get, edit or remove bill.
Method | Endpoint | Description |
---|---|---|
GET | /bills/ | Gets all authenticated user's bills |
GET | /bills/<bill_id> | Gets the bill's details |
GET | /groups/<group_id>/bills | Gets all the group's bills |
GET /bills/ ou GET groups/<group_id>/bills/ response example
{
"bills":[
{
"id": 1,
"name": "dreamcatcher",
"amount": 11.73,
"created_at": "2016-02-21T00:49:57.367Z",
"currency":
{
"prefix": "$"
}
}
]
}
GET /bill/1 response example
{
"id": 1,
"name": "stumptown",
"description": "Wolf whatever locavore synth messenger bag American Apparel art stumptown.",
"amount": 96.48,
"created_at": "2016-02-21T00:49:58.037Z",
"currency":
{
"prefix": "$"
},
"group":
{
"id":1,
"name":"Portland",
"avatar":"/avatars/original/missing.png",
"status":"Active"
}
}