{"id":16123578,"url":"https://github.com/austenstone/seat-count-action","last_synced_at":"2026-02-24T09:32:40.166Z","repository":{"id":53848831,"uuid":"500946427","full_name":"austenstone/seat-count-action","owner":"austenstone","description":"Get the number of seats in a GitHub organization or enterprise","archived":false,"fork":false,"pushed_at":"2025-05-15T16:33:53.000Z","size":1578,"stargazers_count":8,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-28T09:35:38.260Z","etag":null,"topics":["actions","github"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/austenstone.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":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["austenstone"]}},"created_at":"2022-06-07T17:47:43.000Z","updated_at":"2025-04-15T15:55:32.000Z","dependencies_parsed_at":"2023-02-08T07:30:55.123Z","dependency_job_id":"21f9425b-8593-45de-a975-017f9de71c3e","html_url":"https://github.com/austenstone/seat-count-action","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":"austenstone/action-typescript","purl":"pkg:github/austenstone/seat-count-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/austenstone%2Fseat-count-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/austenstone%2Fseat-count-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/austenstone%2Fseat-count-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/austenstone%2Fseat-count-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/austenstone","download_url":"https://codeload.github.com/austenstone/seat-count-action/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/austenstone%2Fseat-count-action/sbom","scorecard":{"id":216699,"data":{"date":"2024-02-08","repo":{"name":"github.com/austenstone/seat-count-action","commit":"85f9628353e2ef8dd1f88074f10a605293c328d9"},"scorecard":{"version":"v4.10.2","commit":"376f465c111c39c6a5ad7408e8896cd790cb5219"},"score":6,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#binary-artifacts"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#branch-protection"}},{"name":"CI-Tests","score":10,"reason":"9 out of 9 merged PRs checked by a CI test -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#ci-tests"}},{"name":"CII-Best-Practices","score":2,"reason":"badge detected: in_progress","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#cii-best-practices"}},{"name":"Code-Review","score":0,"reason":"1 out of last 29 changesets reviewed before merge -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#code-review"}},{"name":"Contributors","score":10,"reason":"16 different organizations found -- score normalized to 10","details":["Info: contributors work for docs,dsp-testing,github,github-fieldservices-planning,github-interviews,githubcustomers,githubnext,githubtraining,maintainers,octodemo,octodemo-enablement,octodemo-resources,ps-resources,se-saml,skills,telit"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#contributors"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#dangerous-workflow"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: Dependabot detected: .github/dependabot.yml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#dependency-update-tool"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":null,"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#fuzzing"}},{"name":"License","score":0,"reason":"license file not detected","details":null,"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#license"}},{"name":"Maintained","score":0,"reason":"0 commit(s) out of 30 and 0 issue activity out of 0 found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"no published package detected","details":["Warn: no GitHub publishing workflow detected"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":7,"reason":"dependency not pinned by hash detected -- score normalized to 7","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_test.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/austenstone/seat-count-action/build_test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_test.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/austenstone/seat-count-action/build_test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/slack.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/austenstone/seat-count-action/slack.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/slack.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/austenstone/seat-count-action/slack.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-email.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/austenstone/seat-count-action/test-email.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-email.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/austenstone/seat-count-action/test-email.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-jira.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/austenstone/seat-count-action/test-jira.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-jira.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/austenstone/seat-count-action/test-jira.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-jira.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/austenstone/seat-count-action/test-jira.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-print.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/austenstone/seat-count-action/test-print.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/usage-enterprise.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/austenstone/seat-count-action/usage-enterprise.yml/main?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/build_test.yml:20","Info: Dockerfile dependencies are pinned","Info: no insecure (not pinned by hash) dependency downloads found in Dockerfiles","Info: no insecure (not pinned by hash) dependency downloads found in shell scripts"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 10 are checked with a SAST tool","Warn: CodeQL tool not detected"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#sast"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: Found linked content in security policy: github.com/austenstone/.github/SECURITY.md","Info: Found text in security policy: github.com/austenstone/.github/SECURITY.md","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/austenstone/.github/SECURITY.md","Info: security policy detected in org repo: github.com/austenstone/.github/SECURITY.md"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#security-policy"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":["Warn: no GitHub releases found"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#signed-releases"}},{"name":"Token-Permissions","score":10,"reason":"tokens are read-only in GitHub workflows","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/build_test.yml:4","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:18","Info: topLevel permissions set to 'none': .github/workflows/slack.yml:1","Info: topLevel permissions set to 'none': .github/workflows/test-email.yml:1","Info: topLevel permissions set to 'none': .github/workflows/test-jira.yml:1","Info: topLevel permissions set to 'none': .github/workflows/test-print.yml:1","Info: topLevel permissions set to 'none': .github/workflows/test-slack.yml:1","Info: topLevel permissions set to 'none': .github/workflows/usage-enterprise.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#token-permissions"}},{"name":"Vulnerabilities","score":-1,"reason":"internal error: vulnerabilitiesClient.ListUnfixedVulnerabilities: osvscanner.DoScan: vulnerabilities found","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/376f465c111c39c6a5ad7408e8896cd790cb5219/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T01:47:26.320Z","repository_id":53848831,"created_at":"2025-08-17T01:47:26.320Z","updated_at":"2025-08-17T01:47:26.320Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29777882,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T04:54:30.205Z","status":"ssl_error","status_checked_at":"2026-02-24T04:53:58.628Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["actions","github"],"created_at":"2024-10-09T21:17:29.327Z","updated_at":"2026-02-24T09:32:40.105Z","avatar_url":"https://github.com/austenstone.png","language":"TypeScript","readme":"[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/austenstone/seat-count-action/badge)](https://securityscorecards.dev/viewer/?uri=github.com/austenstone/seat-count-action)\n\n# Seat Count Action\n\nA simple [Action](https://docs.github.com/en/actions) to count the remaining seats in an GitHub plan. It is intended to be used in conjunction with other actions to do something like notify the user when there are less than 10 seats remaining.\n\nThe values output from this action could be from the organization or the enterprise depending on the [GitHub plan](https://github.com/pricing).\n\n## Usage\nCreate a workflow (eg: `.github/workflows/seat-count.yml`). See [Creating a Workflow file](https://help.github.com/en/articles/configuring-a-workflow#creating-a-workflow-file).\n\nYou will need to [create a PAT(Personal Access Token)](https://github.com/settings/tokens/new?scopes=admin:enterprise) that has `admin:enterprise` access.\n\nAdd this PAT as a secret so we can use it as input `github-token`, see [Creating encrypted secrets for a repository](https://docs.github.com/en/enterprise-cloud@latest/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository).\n\n### Organizations\n\nIf your organization has SAML enabled you must authorize the PAT, see [Authorizing a personal access token for use with SAML single sign-on](https://docs.github.com/en/enterprise-cloud@latest/authentication/authenticating-with-saml-single-sign-on/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on).\n\n#### Example: Check seat count every day at 12:00 AM\n```yml\nname: Check Seat Count\non:\n  schedule:\n    - cron: 0 0 * * *\n\njobs:\n  seats:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: austenstone/seat-count-action@v3.0\n        id: seats\n        with:\n          github-token: ${{secrets.TOKEN}}\n    outputs:\n      percentage: ${{steps.seats.outputs.percentage}}\n      remaining: ${{steps.seats.outputs.remaining}}\n  less-than-10:\n    needs: [seats]\n    if: needs.seats.outputs.remaining \u003c 10\n    runs-on: ubuntu-latest\n    steps:\n      - run: echo \"Only ${{needs.seats.outputs.remaining}} GitHub seats remaining!\"\n```\n## Example Notification Actions\nYou can send a notifcation using any medium.\n\n### [slack-send](https://github.com/marketplace/actions/slack-send)\n\n[example](./.github/workflow-templates/slack.yml)\n\n![image](https://user-images.githubusercontent.com/22425467/187817355-b4da99fd-3759-49f4-a9fd-42575b7c47a8.png)\n\n### [send-email](https://github.com/marketplace/actions/send-email)\n\n[example](./.github/workflow-templates/email.yml)\n\n![image](https://user-images.githubusercontent.com/22425467/187832679-315b53c7-3903-4103-9e85-509e2ae02b18.png)\n\n### [jira-create-issue](https://github.com/marketplace/actions/jira-create-issue)\n\n[example](./.github/workflow-templates/jira.yml)\n\n![image](https://user-images.githubusercontent.com/22425467/187834167-3b6879d9-788e-4e76-b8e2-9710b2600b81.png)\n\n## ➡️ Inputs\nVarious inputs are defined in [`action.yml`](action.yml):\n\n| Name | Description | Default |\n| --- | - | - |\n| github\u0026#x2011;token | Token to use to authorize. | ${{\u0026nbsp;github.token\u0026nbsp;}} |\n| org | The org to use for the action. | ${{\u0026nbsp;github.event.organization.login\u0026nbsp;}} |\n| enterprise | The enterprise to use for the action. | N/A |\n\n## ⬅️ Outputs\n| Name | Description |\n| --- | - |\n| filled_seats | The number of filled seats. |\n| seats | The total number of seats. |\n| percentage | Threshold percentage of seats. |\n| remaining | Threshold remaining seats. |\n| name | The name of the plan. |\n| space | The package space remaining. |\n| private_repos | The number of private repos. |\n\n## Further help\nTo get more help on the Actions see [documentation](https://docs.github.com/en/actions).\n","funding_links":["https://github.com/sponsors/austenstone"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faustenstone%2Fseat-count-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faustenstone%2Fseat-count-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faustenstone%2Fseat-count-action/lists"}