{"id":13878469,"url":"https://github.com/github/entitlements-app","last_synced_at":"2025-05-14T21:07:34.154Z","repository":{"id":37949388,"uuid":"500916676","full_name":"github/entitlements-app","owner":"github","description":"The Ruby Gem that Powers Entitlements - GitHub's Identity and Access Management System","archived":false,"fork":false,"pushed_at":"2025-03-24T18:25:39.000Z","size":21602,"stargazers_count":430,"open_issues_count":1,"forks_count":18,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-04-13T18:44:40.466Z","etag":null,"topics":["entitlements","iam","security"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/github.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-06-07T16:19:51.000Z","updated_at":"2025-03-31T06:38:19.000Z","dependencies_parsed_at":"2024-05-29T22:51:36.076Z","dependency_job_id":"09d58db8-b572-43f7-9a2a-ce34370c73da","html_url":"https://github.com/github/entitlements-app","commit_stats":{"total_commits":115,"total_committers":11,"mean_commits":"10.454545454545455","dds":"0.24347826086956526","last_synced_commit":"f9b81cf67fffe6e76f58611cd9cf80bbd3c554b6"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/github%2Fentitlements-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/github%2Fentitlements-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/github%2Fentitlements-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/github%2Fentitlements-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/github","download_url":"https://codeload.github.com/github/entitlements-app/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254227613,"owners_count":22035670,"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":["entitlements","iam","security"],"created_at":"2024-08-06T08:01:50.867Z","updated_at":"2025-05-14T21:07:29.136Z","avatar_url":"https://github.com/github.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"# entitlements-app\n\n[![acceptance](https://github.com/github/entitlements-app/actions/workflows/acceptance.yml/badge.svg)](https://github.com/github/entitlements-app/actions/workflows/acceptance.yml) [![test](https://github.com/github/entitlements-app/actions/workflows/test.yml/badge.svg)](https://github.com/github/entitlements-app/actions/workflows/test.yml) [![lint](https://github.com/github/entitlements-app/actions/workflows/lint.yml/badge.svg)](https://github.com/github/entitlements-app/actions/workflows/lint.yml) [![build](https://github.com/github/entitlements-app/actions/workflows/build.yml/badge.svg)](https://github.com/github/entitlements-app/actions/workflows/build.yml) [![release](https://github.com/github/entitlements-app/actions/workflows/release.yml/badge.svg)](https://github.com/github/entitlements-app/actions/workflows/release.yml) [![codeql](https://github.com/github/entitlements-app/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/github/entitlements-app/actions/workflows/codeql-analysis.yml) [![coverage](https://img.shields.io/badge/coverage-100%25-success)](https://img.shields.io/badge/coverage-100%25-success) [![style](https://img.shields.io/badge/code%20style-rubocop--github-blue)](https://github.com/github/rubocop-github)\n\n`entitlements-app` is a Ruby gem which provides git-managed LDAP group configuration and access provisioning to your declared resources. It powers Entitlements, GitHub's internal Identity and Access Management (IAM) system. Entitlements is a pluggable system designed to alleviate IAM pain points.\n\n## Quick Start\n\nSee [getting started](docs/getting-started.md) for quick start, and [entitlements-config](https://github.com/github/entitlements-config) for example configuration.\n\n## Inputs\n\nEntitlements currently supports a single input option of configuration files in the form of `.txt`, `.rb` and `.yaml`.\n\n### Git-managed config\n\nEntitlements receives input from configuration files. By using git to back the config files, every file has a complete and visible audit trail.\n\nSee [configuration](docs/configuration.md) for a complete guide on entitlements configuration.\n\n### Populating config from a source of truth\n\nEntitlements requires an initial Org Chart configuration to define all of the valid users available to the system.\n\nSee [orgchart](docs/orgchart.md) for a complete guide to configuring your org chart data.\n\n## Configuration\n\n### Metadata\n\nEntitlements allows for metadata tags which can be used to indicate attributes of the entitlements config other than membership. These metadata tags can be used to build additional automation on top of the Entitlements system.\n\nFor examples of ways to leverage metadata tags, see [metadata](docs/metadata.md)\n\n### Expirations\n\nEntitlements allows for expirations at the file level and the user/group level.\n\nSee [expirations](docs/configuration.md#expiration) for more on expirations.\n\n### Filters\n\nEntitlements supports a concept of filters. This allows you to group employees defined in your org chart by classifications, and require explicit access definitions for those employee classifications.\n\nFor examples on filters, see [filters](docs/filters.md)\n\n### Example\n\nThere is an example configuration repo [here](https://github.com/github/entitlements-config)\n\n## Outputs\n\n### LDAP\n\nOut of the box, Entitlements will output your sets to LDAP.\n\nSee the [OpenLDAP documentation](https://www.openldap.org/doc/) for more on LDAP.\n\n## Plugins\n\nEntitlements is a pluggable system. Plugins can be built for additional inputs and outputs.\n\nFor more on building plugins, see [plugins](docs/plugins.md)\n\n## Contributing\n\nPlease see [CONTRIBUTING](CONTRIBUTING.md) for details.\n\n## Security\n\nWe take security very seriously. Please see [SECURITY](SECURITY.md) for details on how to proceed if you find a security issue.\n\n## Release 🚀\n\nTo release a new version of this Gem, do the following:\n\n1. Update the version number in the [`lib/version.rb`](lib/version.rb) file\n2. Run `bundle install` to update the `Gemfile.lock` file with the new version\n3. Commit your changes, push them to GitHub, and open a PR\n\nOnce your PR is approved and the changes are merged, a new release will be created automatically by the [`release.yml`](.github/workflows/release.yml) workflow. The latest version of the Gem will be published to the GitHub Package Registry and RubyGems.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgithub%2Fentitlements-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgithub%2Fentitlements-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgithub%2Fentitlements-app/lists"}