This is my presentation on the 10th birthday of FrOSCon. Held in german, so the notes are too, but the slides ar in english. Will try to add the code examples and responses as comments later on. Request: GET /api/v1/speakers/29 HTTP/1.1 Host: froscon-example.dev Content-Type: application/json Response: 200 OK { "id": 29, "first_name": "Marco", "last_name": "Pivetta", "_links": { "self": { "href": "/api/v1/speakers/29" }, "session": { "href": "/api/v1/sessions/29" } } } Request: POST /api/v1/speakers HTTP/1.1 Host: froscon-example.dev Content-Type: application/json { "firstName": "Andreas", "lastName": "Heigel", "twitterHandle": "@heiglandreas" } Response: 201 Created { "id": 39, "twitter_handle": "@heiglandreas", "first_name": "Andreas", "last_name": "Heigel", "_links": { "self": { "href": "/api/v1/speakers/39" } } } Request: PUT /api/v1/speakers/39 HTTP/1.1 Host: froscon-example.dev Content-Type: application/json { "twitter_handle": "@heiglandreas", "first_name": "Andrea", "last_name": "Heigel" } Response: 200 OK { "id": 39, "twitter_handle": "@heiglandreas", "first_name": "Andrea", "last_name": "Heigel", "_links": { "self": { "href": "/api/v1/speakers/39" } } } Request: PATCH /api/v1/speakers HTTP/1.1 Host: froscon-example.dev Content-Type: application/json { "twitter_handle": "@heiglandreas", "first_name": "Andreas" } Response: 200 OK { "id": 39, "twitter_handle": "@heiglandreas", "first_name": "Andreas", "last_name": "Heigel", "_links": { "self": { "href": "/api/v1/speakers/39" } } } Request: DELETE /api/v1/speakers/39 HTTP/1.1 Host: froscon-example.dev Response 204 No Content Location /api/v1/speakers