Skip to content

Latest commit

 

History

History
458 lines (404 loc) · 6.44 KB

endpoints.md

File metadata and controls

458 lines (404 loc) · 6.44 KB

Endpoints

  • /api
    • /auth
      • /sign_up
        • POST /
      • /sign_in
        • POST /
    • /v1
      • /user
        • GET /
      • /attendee
        • GET /
      • /badges
        • GET /
        • GET /:id
      • /attendees
        • GET /
        • GET /:id
        • POST /:id
        • DELETE /:id
      • /companies
        • GET /
        • GET /:id
      • /referrals
        • GET /:id
      • /redeems
        • POST /
      • /leaderboard
        • GET /

Attendee

  • /api
    • /auth
      • /sign_up
      • POST /
      • /sign_in
      • POST /
    • /v1
      • /user
        • GET /
      • /attendee
        • GET /
      • /badges
        • GET /
        • GET /:id
      • /attendees
        • GET /
        • GET /:id
        • POST /:id
        • DELETE /:id
      • /companies
        • GET /
        • GET /:id
      • /referrals
        • GET /:id

Company

  • /api
    • /auth
      • /sign_in
      • POST /
    • /v1
      • /user
        • GET /
      • /badges
        • GET /
        • GET /:id
      • /attendees
        • GET /
        • GET /:id
        • POST /:id
        • DELETE /:id
      • /companies
        • GET /
        • GET /:id

Manager

  • /api
    • /auth
      • /user
        • GET /
      • /sign_up
        • POST /
      • /sign_in
        • POST /
    • /v1
      • /redeems
        • POST /

sign_up

POST /

{
    "user": {
        "email": "foo@bar.com",
        "password": "somePassword",
        "password_confirmation": "somePassword",
        "attendee": {
            "id": "adaa8aab4e-7549-494b-91f0-52e9c9a8cf5d",
            "nickname": "foobar"
        }
    }
}

Valid:

{
    "jwt": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJzYWZpcmEiLCJl..."
}

Errors:

  • Invalid email, email already taken, password doesn't match, username already taken
{
    "error": "Invalid register data"
}
  • UUID taken
{
    "error": "Already registered"
}
  • UUID Incorrect
{
    "errors": {
        "detail": "Bad Request"
    }
}

sign_in

POST /

{
    "email": "foo@bar.com",
    "password": "somePassword"
}

Valid:

{
    "jwt": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJzYWZpcmEiLCJle..."
}

Errors:

  • Invalid username or password
{
    "error": "Login error"
}

Authenticated Endpoints

When you are autheticated you get a jwt token.

This token is used as a bearer token to service any calls to the api that need to be authenticated.

Errors:

{
    "error": "unauthenticated"
}
{
    "error": "invalid_token"
}

attendee

GET / (Show)

Fetches the nick, uuid, email and avatar of the logged in attendee.

Valid:

{
    "nick": "qwrqasd",
    "id": "43ffc4f5-3b12-4243-a157-e4e9e90d35dc",
    "email": "fooo@bar.com",
    "avatar": "/images/default/attendee-missing.png"
}

badges

GET / (Index)

Fetches the badges of the logged in attendee.

Valid:

{
    "data": [
        {
            "name": 1,
            "end": "2018-07-31T15:59:51.746577Z",
            "description": "coisa",
            "begin": "2018-07-31T15:59:51.742630Z",
            "avatar": "/images/default/badge-missing.png"
        }
    ]
}

GET /:id (Show)

Fetches a single badge.

Valid:

{
    "data": {
        "name": 1,
        "end": "2018-07-31T15:59:51.746577Z",
        "description": "coisa",
        "begin": "2018-07-31T15:59:51.742630Z",
        "avatar": "/images/default/badge-missing.png"
    }
}

Errors:

{
    "errors": {
        "detail": "Endpoint Not Found"
    }
}

attendees

GET / (Index)

Lists all attendess.

Valid:

{
    "data": [
        {
            "nickname": "foo",
            "id": "d832f350-fe30-4d98-a245-59d1aa186f36",
            "avatar": "/images/default/attendee-missing.png"
        }
    ]
}

GET /:id (Show)

Shows an attendee.

Valid:

{
    "data": {
        "nickname": "foo",
        "id": "43ffc4f5-3b12-4243-a157-e4e9e90d35dc",
        "avatar": "/images/default/attendee-missing.png"
    }
}

Errors:

{
    "errors": {
        "detail": "Bad Request"
    }
}

PUT /:id (Update)

Changes an attendee.

Request:

{
    "attendee": {
        "nickname": "qwrqasd"
    }

}

Valid:

{
    "data": {
        "nickname": "qwrqasd",
        "id": "d832f350-fe30-4d98-a245-59d1aa186f36",
        "avatar": "/images/default/attendee-missing.png"
    }
}

Errors:

{
    "errors": {
        "detail": "Bad Request"
    }
}

DELETE /:id (Delete)

Removes an attendee.

Valid:

204 (no content)

Errors:

  • Invalid uuid
{
    "errors": {
        "detail": "Endpoint Not Found"
    }
}

referrals

GET /:id

Valid:

{
    "referral": "Referral redeemed successfully"
}

Errors:

  • Used referrals
{
    "referral": "Referral not available"
}
  • Attende allready had this badge
{
    "errors": {
        "unique_attendee_badge": [
            "An attendee can't have the same badge twice"
        ]
    }
}

companies

GET /

{
    "data": [
        {
            "sponsorship": "ola",
            "name": "ola",
            "id": 1
        }
    ]
}

GET /:id

Valid:

{
    "data": {
        "sponsorship": "ola",
        "name": "ola",
        "id": 1
    }
}

Errors:

{
    "errors": {
        "detail": "Endpoint Not Found"
    }
}

redeems

POST /

{
    "redeem": {
        "attendee_id": "43ffc4f5-3b12-4243-a157-e4e9e90d35dc",
        "badge_id": "1"
    }
}

Valid:

{
    "redeem": "Badge redeem successfully"
}

Errors:

  • User allready had the badge
{
    "errors": {
        "unique_attendee_badge": [
            "An attendee can't have the same badge twice"
        ]
    }
}
  • Not an manager, no badge_id, not valid badge_id
{
    "errors": {
        "detail": "Endpoint Not Found"
    }
}

#leaderboard

GET /

{
    "data": [
        {
            "avatar": "/uploads/attendee/avatars/ee4514b5-6b71-44ff-b26f-8afc0b8c7e51/original.png?v=63705800808",
            "badges": [
                {
                    "avatar": "/uploads/badge/avatars/5/original.png?v=63705802360",
                    "begin": "2019-02-12T00:00:00.000000Z",
                    "description": "hackerino",
                    "end": "2019-02-13T00:00:00.000000Z",
                    "name": 5
                }
            ],
            "id": "ee4514b5-6b71-44ff-b26f-8afc0b8c7e51",
            "nickname": "Nick"
        }
    ]
}