{"id":26517511,"url":"https://github.com/ryansakurai/tech-certification-api","last_synced_at":"2025-03-21T08:27:30.579Z","repository":{"id":221921196,"uuid":"754874629","full_name":"ryansakurai/tech-certification-api","owner":"ryansakurai","description":"REST API for a tech certification system made using Spring Boot and PostgreSQL.","archived":false,"fork":false,"pushed_at":"2024-11-19T17:23:40.000Z","size":140,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-19T18:29:39.232Z","etag":null,"topics":["database","java","rest-api","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ryansakurai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-08T23:26:49.000Z","updated_at":"2024-11-19T17:19:49.000Z","dependencies_parsed_at":"2024-02-11T04:25:43.491Z","dependency_job_id":"de223455-0f88-4120-b25e-490d36c3d7b2","html_url":"https://github.com/ryansakurai/tech-certification-api","commit_stats":null,"previous_names":["ryansakurai/tech-certification-system","ryansakurai/tech-certification","ryansakurai/tech-certification-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryansakurai%2Ftech-certification-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryansakurai%2Ftech-certification-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryansakurai%2Ftech-certification-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryansakurai%2Ftech-certification-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryansakurai","download_url":"https://codeload.github.com/ryansakurai/tech-certification-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244762909,"owners_count":20506365,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","java","rest-api","spring-boot"],"created_at":"2025-03-21T08:27:29.983Z","updated_at":"2025-03-21T08:27:30.561Z","avatar_url":"https://github.com/ryansakurai.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e  💻  Tech Certification API  💻  \u003c/h1\u003e\n\nA REST API that allows students to answer questions and get their certifications developed using:\n\n- Java\n- Spring Boot\n- Lombok\n- PostgreSQL\n- Docker\n\n## 🚀 Features\n\n- [x] Register students\n- [x] Get students by e-mail\n- [x] Update students' e-mails\n- [x] Register multiple choice questions for a specific technology\n- [x] Get all questions for a technology\n- [x] Submit answers and get certified\n- [x] Check all details of a certification\n- [x] Get arbitrary size rankings of certification grades for a technology\n\n## 🏁 How to Run\n\nTo run the application, you'll have to have JRE, Maven and Docker installed in your machine. To start the database container on port 5432, run the following command:\n\n```bash\ndocker-compose up\n```\n\nThen, to start the application on port 8085, run the following command:\n\n```bash\nmvn spring-boot:run\n```\n\nTo alter any of the ports, go to `/docker-compose.yml` and `/src/main/resources/application.properties`.\n\n## ⚙️ Behavior\n\nAll endpoints consume and produce JSON and the following documentation uses mostly [YAML](https://en.wikipedia.org/wiki/YAML)\n\n### /students\n\n#### POST\n\n- Request Body\n\n```yaml\nemail: string\nfullName: string\n```\n\n- Response\n\n```yaml\n201 - Created:\n    Headers:\n        Location: URI (string)\n409 - Conflict:\n    Body:\n        error:\n            code: string\n            details: string\n    Meaning: Email is already in use.\n```\n\n#### GET `/{studentEmail}`\n\n- Path Variable\n\n```yaml\nstudentEmail: string\n```\n\n- Response\n\n```yaml\n200 - OK:\n    Body:\n        email: string\n        fullName: string\n        certifications:\n            - id: UUID (string)\n            technology: string\n404 - Not Found:\n    Meaning: Student does not exist.\n```\n\n#### PATCH `/{studentEmail}`\n\n- Path Variable\n\n```yaml\nstudentEmail: string\n```\n\n- Request Body\n\n```yaml\nemail: string\n```\n\n- Response\n\n```yaml\n200 - OK:\n    Headers:\n        Location: URI (string)\n404 - Not Found:\n    Meaning: Student referenced in path variable does not exist.\n409 - Conflict:\n    Body:\n        error:\n            code: string\n            details: string\n    Meaning: E-mail specified in request body is already in use.\n```\n\n### /questions\n\n#### POST\n\n- Request Body\n\n```yaml\ntechnology: string\ndescription: string\nalternatives:\n    - description: string\n      correct: boolean\n```\n\n- Response\n\n```yaml\n201 - Created:\n    Headers:\n        Location: URI (string)\n```\n\n#### GET `/{technology}`\n\n- Path Variable\n\n```yaml\ntechnology: string\n```\n\n- Response\n\n```yaml\n200 - OK:\n    Body:\n        - id: UUID (string)\n          technology: string\n          description: string\n          alternatives:\n              - id: UUID (string)\n                description: string\n404 - Not Found:\n    Meaning: No questions found for the specified technology.\n```\n\n### /certifications\n\n#### POST\n\n- Request Body\n\n```yaml\nemail: string\ntechnology: string\nanswers:\n    - questionId: UUID (string)\n      alternativeId: UUID (string)\n```\n\n- Response\n\n```yaml\n201 - Created:\n    Headers:\n        Location: URI (string)\n404 - Not Found:\n    Meaning: Either one of the resources referenced in request body (student, question and alternative) does not exist or technology, question and alternative are conflictant.\n```\n\n#### GET `/{certificationId}`\n\n- Path Variable\n\n```yaml\ncertificationId: string\n```\n\n- Response\n\n```yaml\n200 - OK:\n    Body:\n        id: UUID (string)\n        technology: string\n        grade: float\n        timeOfEmition: datetime (string)\n        answers:\n            - question:\n                  id: UUID (string)\n                  description: string\n              chosenAlternative:\n                  id: UUID (string)\n                  description: string\n              correct: boolean\n404 - Not Found:\n    Body:\n        error:\n            code: string\n            details: string\n    Meaning: Certification does not exist.\n```\n\n#### GET `/{technology}/rankings/{quantity}`\n\n- Path Variables\n\n```yaml\ntechnology: string\nquantity: integer\n```\n\n- Response\n\n```yaml\n200 - OK:\n    Body:\n        - id: UUID (string)\n          grade: float\n          student:\n              email: string\n              name: string\n404 - Not Found:\n    Body:\n        error:\n            code: string\n            details: string\n    Meaning: No certifications found for the specified technology.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryansakurai%2Ftech-certification-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryansakurai%2Ftech-certification-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryansakurai%2Ftech-certification-api/lists"}