Descriere Server

Datele de conectare

HOST: 63.32.125.183 PORT: 8081

Mod de funcționare

Serverul va permite efectuarea următoarelor acțiuni:

4.1 Autentificare admin

Ruta de acces:

POST /api/v1/tema/admin/login

Tip payload:

application/json

Payload:

{
  "username": String,
  "password": String
}

Răspuns:
🍪 Întoarce cookie de sesiune.

Erori tratate:
👎 Credențialele nu se potrivesc.
👎 Reautentificare când deja logat.


4.2 Adăugarea unui utilizator normal

Ruta de acces:

POST /api/v1/tema/admin/users

Tip payload:

application/json

Payload:

{
  "username": String,
  "password": String
}

Observații:
❗ Trebuie să demonstrați că aveți rol de admin.
❗ Userul aparține adminului curent.

Erori tratate:
👎 Lipsă rol admin.
👎 Informații incomplete/incorecte.


4.3 Vizualizare utilizatori normali

Ruta de acces:

GET /api/v1/tema/admin/users

Observații:
❗ Trebuie să demonstrați că aveți rol de admin.

Răspuns:

{
  "users": [
    {
      "id": Number,
      "password": String,
      "username": String
    }
  ]
}

Erori tratate:
👎 Lipsă permisiuni admin.


4.4 Ștergerea unui utilizator

Ruta de acces:

DELETE /api/v1/tema/admin/users/:username

e.g: /api/v1/tema/admin/users/user123

Observații:
❗ Necesită rol de admin.

Erori tratate:
👎 Lipsă rol admin.
👎 Username invalid.


4.5 Logout admin

Ruta de acces:

GET /api/v1/tema/admin/logout

Observații:
❗ Necesită autentificare.

Erori tratate:
👎 Neautentificat.


4.6 Autentificare utilizator

Ruta de acces:

POST /api/v1/tema/user/login

Tip payload:

application/json

Payload:

{
  "admin_username": String,
  "username": String,
  "password": String
}

Răspuns:
🍪 Trebuie să demonstraţi că sunteţi autentificaţi!

Erori tratate:
👎 Credențialele nu se potrivesc.
👎 Reautentificare.


4.7 Cerere acces library

Ruta de acces:

GET /api/v1/tema/library/access

Observații:
❗ Necesită autentificare.

Răspuns:
🍪 Trebuie să demonstraţi că sunteţi autentificaţi!

Erori tratate:
👎 Neautentificat.


4.8 Vizualizare toate filmele

Ruta de acces:

GET /api/v1/tema/library/movies

Observații:
🍪 Trebuie să demonstraţi că aveţi acces la library! (JWT token)

Răspuns:

[
  {
    "id": Number,
    "title": String
  }
]

Erori tratate:
👎 Fără acces library.


4.9 Vizualizare detalii film

Ruta de acces:

GET /api/v1/tema/library/movies/:movieId

e.g: /api/v1/tema/library/movies/123

Observații:
🍪 Trebuie să demonstraţi că aveţi acces la library! (JWT token)

Răspuns:

{
  "id": Number,
  "title": String,
  "year": Number,
  "description": String,
  "rating": Number
}

Erori tratate:
👎 Fără acces library.
👎 ID invalid.


4.10 Adăugare film

Ruta de acces:

POST /api/v1/tema/library/movies

Tip payload:

application/json

Payload:

{
  "title": String,
  "year": Number,
  "description": String,
  "rating": Number
}

Observații:
🍪 Trebuie să demonstraţi că aveţi acces la library! (JWT token)

Erori tratate:
👎 Fără acces library.
👎 Date invalide/incomplete.


4.11 Actualizare film

Ruta de acces:

PUT /api/v1/tema/library/movies/:movieId

Tip payload:

application/json

Payload:

{
  "title": String,
  "year": Number,
  "description": String,
  "rating": Number
}

Observații:
🍪 Trebuie să demonstraţi că aveţi acces la library! (JWT token)

Erori tratate:
👎 Fără acces library.
👎 ID invalid.
👎 Date invalide/incomplete.


4.12 Ștergere film

Ruta de acces:

DELETE /api/v1/tema/library/movies/:movieId

e.g: /api/v1/tema/library/movies/123

Observații:
🍪 Trebuie să demonstraţi că aveţi acces la library! (JWT token)

Erori tratate:
👎 Fără acces library.
👎 ID invalid.


4.13 Vizualizare colecții

Ruta de acces:

GET /api/v1/tema/library/collections

Observații:
🍪 Trebuie să demonstraţi că aveţi acces la library! (JWT token)

Răspuns:

[
  {
    "id": Number,
    "title": String,
    "owner": String,
    "movies": [
      {
        "id": Number,
        "title": String
      }
    ]
  }
]

Erori tratate:
👎 Fără acces library.


4.14 Vizualizare detalii colecție

Ruta de acces:

GET /api/v1/tema/library/collections/:collectionId

Observații:
🍪 Trebuie să demonstraţi că aveţi acces la library! (JWT token)

e.g: /api/v1/tema/library/collections/123

Răspuns:

{
  "id": Number,
  "title": String,
  "owner": String,
  "movies": [
    {
      "id": Number,
      "title": String
    }
  ]
}

Erori tratate:
👎 Fără acces library.
👎 ID invalid.


4.15 Adăugare colecție

Ruta de acces:

POST /api/v1/tema/library/collections

Tip payload:

application/json

Payload:

{
  "title": String
}

Observații:
🍪 Trebuie să demonstraţi că aveţi acces la library! (JWT token)
❗ Owner este utilizatorul curent.

Erori tratate:
👎 Fără acces library.
👎 Date invalide/incomplete.


4.16 Ștergere colecție

Ruta de acces:

DELETE /api/v1/tema/library/collections/:collectionId

Observații:
🍪 Trebuie să demonstraţi că aveţi acces la library! (JWT token)
❗ Trebuie să fiți owner.

Erori tratate:
👎 Fără acces library.
👎 Nu sunteți owner.
👎 ID invalid.


4.17 Adăugare film în colecție

Ruta de acces:

POST /api/v1/tema/library/collections/:collectionId/movies

Tip payload:

{
  "id": Number
}

Observații:
🍪 Trebuie să demonstraţi că aveţi acces la library! (JWT token)
❗ Trebuie să fiți owner.

Erori tratate:
👎 Fără acces library.
👎 Nu sunteți owner.
👎 Date invalide/incomplete.


4.18 Ștergere film din colecție

Ruta de acces:

DELETE /api/v1/tema/library/collections/:collectionId/movies/:movieId

e.g: /api/v1/tema/library/collections/5/movies/123

Observații:
🍪 Trebuie să demonstraţi că aveţi acces la library! (JWT token)
❗Trebuie să fiți owner.
❗ Filmul trebuie să existe în colecție.

Erori tratate:
👎 Fără acces library.
👎 Nu sunteți owner.
👎 ID invalid.


4.19 Logout utilizator

Ruta de acces:

GET /api/v1/tema/user/logout

Observații:
❗ Necesită autentificare.

Erori tratate:
👎 Neautentificat.

Observație

‼️ Toate functionalitatile mentionate pentru server sunt testate de checker-ul oferit, dar nu sunt incluse toate cazurile de testare pentru corner case-uri.

Testare server

Pentru a interacţiona neprogramatic cu serverul, puteţi folosi utilitare ce simulează clienţii HTTP, precum Postman [1], Insomnia [2] sau chiar clienţi scrişi de mână în alte limbaje de programare.

[1] https://www.postman.com/

[2] https://insomnia.rest/