SOA/README.md
Alexis Bruneteau 15e56fea50 merged
2025-06-28 12:40:55 +02:00

127 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🧩 SOA Service-Oriented Architecture Project
## 🚀 Quick Start
1. **Start the application stack:**
```bash
docker compose up -d --build
```
2. **Initialize Keycloak configuration:**
```bash
./setup-keycloak.sh
```
3. **Update your `/etc/hosts` file:**
```
127.0.0.1 api.local auth.local
```
---
## 🔐 Credentials
### Keycloak Admin Panel
* 📍 URL: [http://auth.local:8080](http://auth.local:8080)
* 👤 **Username:** `admin`
* 🔑 **Password:** `admin`
### Private API User
* 👤 **Username:** `alexis`
* 🔑 **Password:** `password`
---
## 🗂️ Public API Endpoints Overview
All routes are prefixed with `/api/public`.
| Method | Endpoint | Description |
| ------ | ------------------------------- | ---------------------------------- |
| GET | `/artists` | List all public artists |
| GET | `/galleries` | List all public galleries |
| GET | `/galleries/{gallery}/artworks` | List artworks for a public gallery |
---
## 🗂️ Private API Endpoints Overview
All routes are prefixed with `/api/private` and require a **Bearer token**.
### 👤 User
| Method | Endpoint | Description |
| ------ | -------- | ----------------------------- |
| GET | `/me` | Get current user's profile |
| PUT | `/me` | Update current user's profile |
### 🖼️ Galleries
| Method | Endpoint | Description |
| ------ | ----------------------- | --------------------------------- |
| GET | `/galleries` | List all accessible galleries |
| GET | `/galleries/mine` | List galleries owned by the user |
| POST | `/gallery` | Create a new gallery |
| GET | `/gallery/{gallery_id}` | Get details of a specific gallery |
| PUT | `/gallery/{gallery_id}` | Update a gallery (owner only) |
### 👥 Members
| Method | Endpoint | Description |
| ------ | ------------------------------- | ------------------------- |
| GET | `/gallery/{gallery_id}/members` | List members of a gallery |
### 📩 Invitations
| Method | Endpoint | Description |
| ------ | ----------------------------------- | --------------------------- |
| POST | `/gallery/{gallery_id}/invite` | Invite user to a gallery |
| PUT | `/invitations/{gallery_id}/respond` | Accept or reject invitation |
| GET | `/invitations/received` | List received invitations |
### 🖼️ Artworks
| Method | Endpoint | Description |
| ------ | -------------------------------- | ----------------------------------- |
| GET | `/gallery/{gallery_id}/artworks` | List artworks in a gallery |
| POST | `/gallery/{gallery_id}/artwork` | Add artwork to gallery (owner only) |
| GET | `/artwork/{artwork_id}` | Get details of an artwork |
| PUT | `/artwork/{artwork_id}` | Update an artwork (creator only) |
| GET | `/artworks/mine` | List artworks created by the user |
### 📝 Gallery Reviews
| Method | Endpoint | Description |
| ------ | ------------------------------- | ------------------------------------- |
| GET | `/gallery/{gallery_id}/reviews` | List reviews for a gallery |
| POST | `/gallery/{gallery_id}/review` | Submit a review for a gallery |
| PUT | `/galleries/review/{review_id}` | Update a gallery review (author only) |
| GET | `/galleries/reviews/given` | Reviews written by the user |
| GET | `/galleries/reviews/received` | Reviews received on users galleries |
### 📝 Artwork Reviews
| Method | Endpoint | Description |
| ------ | ------------------------------- | -------------------------------------- |
| GET | `/artwork/{artwork_id}/reviews` | List reviews for an artwork |
| POST | `/artwork/{artwork_id}/review` | Submit a review for an artwork |
| PUT | `/artworks/review/{review_id}` | Update an artwork review (author only) |
| GET | `/artworks/reviews/given` | Reviews written by the user |
| GET | `/artworks/reviews/received` | Reviews received on users artworks |
---
# Public API:
## Routes :
```
GET|HEAD api/artists
GET|HEAD api/galleries
GET|HEAD api/galleries/{gallery}/artworks
```