{"id":19250392,"url":"https://github.com/cjr-unb/cgr-api","last_synced_at":"2025-08-15T22:19:14.929Z","repository":{"id":42134278,"uuid":"281739480","full_name":"CJR-UnB/cgr-api","owner":"CJR-UnB","description":"API do Projeto CGR","archived":false,"fork":false,"pushed_at":"2023-03-08T21:23:40.000Z","size":133,"stargazers_count":1,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-03-30T04:02:46.724Z","etag":null,"topics":["cjr-projetos","cjr-unb","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CJR-UnB.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support/cgr_api_insomnia_doc.yaml","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-22T17:18:14.000Z","updated_at":"2022-04-01T14:18:58.000Z","dependencies_parsed_at":"2025-01-05T06:21:39.721Z","dependency_job_id":"40effd59-4baf-45ce-9f6b-3a89bd8a76a8","html_url":"https://github.com/CJR-UnB/cgr-api","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/CJR-UnB/cgr-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CJR-UnB%2Fcgr-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CJR-UnB%2Fcgr-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CJR-UnB%2Fcgr-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CJR-UnB%2Fcgr-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CJR-UnB","download_url":"https://codeload.github.com/CJR-UnB/cgr-api/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CJR-UnB%2Fcgr-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270637751,"owners_count":24620427,"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","status":"online","status_checked_at":"2025-08-15T02:00:12.559Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cjr-projetos","cjr-unb","ruby"],"created_at":"2024-11-09T18:17:06.205Z","updated_at":"2025-08-15T22:19:14.903Z","avatar_url":"https://github.com/CJR-UnB.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CGR System - API\n\nAPI do sistema CGR da CJR.\n\n## Índice\n\n* [Índice](#índice)\n* [Especificações](#especificações)\n* [CI/CD](#ci-cd)\n* [Entidades](#entidades)\n    * [Member](#member)\n    * [Team](#ream)\n    * [Role](#role)\n    * [MemberRole](#memberrole)\n* [Requisições](#requisições)\n\n\u003ca name=\"specification\"\u003e \u003c/a\u003e\n\n## Especificações \n\n- Ruby v2.6.6\n- Rails v5.2.4\n\n\u003ca name=\"ci-cd\"\u003e \u003c/a\u003e\n\n## CI / CD \n\nO deploy é feito após um merge para a branch __master__ ser aprovado. Após cada pull request ou merge, o workflow de testes irá rodar através do __GitHub Actions__. Recomendo fortemente que não confirme merges para a master até o resultado estar pronto. Os arquivos de workflow podem ser acessados na pasta .github/workflows\n\nPara rodar os testes em seu ambiente de desenvolvimento local, basta utilizar o comando:\n\n```\n    bundle exec rspec\n```\n\nem um terminal bash ou zsh. \n\n## Entidades\n\nAtualmente, a API conta com as seguintes entidades:\n\n#### Member\n\nUm membro da empresa que será cadastrado no sistema.\n\n| value     \t| type   \t    |\n|:-------------:|:-------------:|\n| id    \t    | integer      \t|\n| name    \t    | string    \t|\n| deleted_at \t| date_time \t|\n\n#### Team\n\nUma equipe, um grupo de membros reunidos por um membro propósito com diferentes responsabilidades.\n\n|    value   \t|    type   \t|\n|:----------:\t|:---------:\t|\n| id        \t| integer  \t    |\n| name     \t    | string  \t    |\n| initials  \t| string  \t    |\n| deleted_at \t| date_time \t|\n\n#### Role\n\nA função que um membro executa dentro de um time.\n\n|    value   \t|    type   \t|\n|:----------:\t|:---------:\t|\n| id        \t| integer  \t    |\n| team_id     \t| foreign_key   |\n| name        \t| string  \t    |\n| deleted_at \t| date_time \t|\n\n#### MemberRole\n\nRelação entre um membro e um cargo (e, por extensão, um time). Essas relações normalmente não são apagadas, mas passam por um processo de *soft delete* para manter salvo os registros da relação dos membros com os cargos que participou\n\n| value      \t| type         \t|\n|:----------:\t|:-----------:\t|\n| id    \t    | integer   \t|\n| member_id \t| foreign_key \t|\n| role_id  \t    | foreign_key \t|\n| entry_date \t| date_time  \t|\n| deleted_at \t| date_time  \t|\n\n\n## Requisições\n\n#### Members\n\n```http\n    GET         /members\n    GET         /members/:id\n    POST        /members\n    PATCH/PUT   /members/:id\n    DELETE      /members/:id/:hard_delete\n```\n\n##### GET /members\n\nRetorna todos os membros não apagados\n\n* **content_type**: application/json\n* **response**: member[]{ teams, roles }\n\n##### GET /members/:id\n\nRetorna um membro com base em seu `id`, caso não esteja apagado\n\n* **content_type**: application/json\n* **response**: member{ teams,  roles }\n\n##### POST /members\n\nCria um novo membro. Caso não seja passado um `role_id`, é associado ao cargo de visitante.\n\n* **body**: name, role_id(opt)\n* **content_type**: application/json\n* **response**: member{ teams, roles }\n\n##### PATCH/PUT /member/:id\n\nAtualiza as informações de um membro. Pode adicioná-lo ou removê-lo de um cargo e também restaurá-lo caso tenha sido apagado.\n\n* **body**:\n    * **member_params**: name, deleted_at\n    * **opt_params**: role_id, leave_role\n* **content_type**: application/json\n* **response**: member{ teams, roles }\n\n##### DELETE /member/:id/:hard_delete\n\nAtualiza o valor de `deleted_at` para o momento da requisição. Caso seja passado algum valor para :hard_delete, apaga o registro do membro no lugar disso.\n\n* **response**: nil\n\n#### Teams\n```http\n    GET         /teams\n    GET         /teams/:id\n    POST        /teams\n    PATCH/PUT   /teams/:id\n    DELETE      /teams/:id\n```\n\n##### GET /teams\n\nRetorna todos os times não apagados\n\n* **content_type**: application/json\n* **response**: teams[]{ roles, members }\n\n##### GET /teams/:id\n\nRetorna um time com base em seu `id`, caso não esteja apagado\n\n* **content_type**: application/json\n* **response**: team{ roles, members}\n\n##### POST /teams\n\nCria um novo time.\n\n* **body**: name, initials(opt)\n* **content_type**: application/json\n* **response**: team{ roles, members }\n\n##### PATCH/PUT /teams/:id\n\nAtualiza as informações de um time. Pode restaurar o time caso tenha sido apagado.\n\n* **body**: name, initials\n* **content_type**: application/json\n* **response**: team{ roles, members }\n\n##### DELETE /teams/:id\n\nAtualiza o valor de `deleted_at` para o momento da requisição.\n* **response**: nil\n\n#### Roles\n```http\n    GET         /teams/:team_id/roles\n    GET         /roles/:id\n    POST        /teams/:team_id/roles\n    PATCH/PUT   /roles/:id\n    DELETE      /roles/:id\n```\n\n##### GET /teams/:team_id/roles\n\nRetorna todos os cargos não apagados de um time\n\n* **content_type**: application/json\n* **response**: roles[]{ team, members }\n\n##### GET /roles/:id\n\nRetorna um cargo com base em seu `id`, caso não esteja apagado\n\n* **content_type**: application/json\n* **response**: role{ team, members}\n\n##### POST /teams/:team_id/roles\n\nCria um novo cargo em um time específico.\n\n* **body**: name\n* **content_type**: application/json\n* **response**: role{ team, members}\n\n##### PATCH/PUT /roles/:id\n\nAtualiza as informações de um cargo, com base em seu `id`. Pode restaurar o cargo caso tenha sido apagado.\n\n* **body**: name, deleted_at\n* **content_type**: application/json\n* **response**: role{ team, members}\n\n##### DELETE /roles/:id\n\nAtualiza o valor de `deleted_at` para o momento da requisição.\n\n* **response**: nil","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcjr-unb%2Fcgr-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcjr-unb%2Fcgr-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcjr-unb%2Fcgr-api/lists"}