{"id":15029835,"url":"https://github.com/netflix/metacat","last_synced_at":"2026-04-14T18:01:02.233Z","repository":{"id":38208291,"uuid":"54284914","full_name":"Netflix/metacat","owner":"Netflix","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-07T16:42:02.000Z","size":8051,"stargazers_count":1685,"open_issues_count":55,"forks_count":283,"subscribers_count":393,"default_branch":"master","last_synced_at":"2026-04-07T18:10:12.655Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Netflix.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-03-19T20:06:34.000Z","updated_at":"2026-04-07T16:42:10.000Z","dependencies_parsed_at":"2023-02-18T12:01:55.205Z","dependency_job_id":"e060a891-8fb8-4f25-a450-276d918ba714","html_url":"https://github.com/Netflix/metacat","commit_stats":{"total_commits":582,"total_committers":32,"mean_commits":18.1875,"dds":0.8058419243986255,"last_synced_commit":"dc3bc136072964098755e3bf0eeecc8494d455c0"},"previous_names":[],"tags_count":332,"template":false,"template_full_name":null,"purl":"pkg:github/Netflix/metacat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netflix%2Fmetacat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netflix%2Fmetacat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netflix%2Fmetacat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netflix%2Fmetacat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Netflix","download_url":"https://codeload.github.com/Netflix/metacat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netflix%2Fmetacat/sbom","scorecard":{"id":100331,"data":{"date":"2025-08-11","repo":{"name":"github.com/Netflix/metacat","commit":"aee122835b2318f534633832fb0061b2ee4b1281"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.2,"checks":[{"name":"Maintained","score":5,"reason":"7 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/nebula-branch.yml:1","Warn: no topLevel permission defined: .github/workflows/nebula-pr-functional-tests.yml:1","Warn: no topLevel permission defined: .github/workflows/nebula-publish.yml:1","Warn: no topLevel permission defined: .github/workflows/nebula-pull-request.yml:1","Warn: no topLevel permission defined: .github/workflows/nebula-snapshot.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-branch.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-branch.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-branch.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-branch.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/nebula-branch.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-branch.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-branch.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-branch.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-branch.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-branch.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-pr-functional-tests.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-pr-functional-tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-pr-functional-tests.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-pr-functional-tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-pr-functional-tests.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-pr-functional-tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-pr-functional-tests.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-pr-functional-tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-pr-functional-tests.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-pr-functional-tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-publish.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-publish.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/nebula-publish.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-publish.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-publish.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-pull-request.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-pull-request.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-pull-request.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-pull-request.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-snapshot.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-snapshot.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-snapshot.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-snapshot.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/nebula-snapshot.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-snapshot.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-snapshot.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-snapshot.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nebula-snapshot.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/Netflix/metacat/nebula-snapshot.yml/master?enable=pin","Info:   0 out of  21 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T09:59:42.503Z","repository_id":38208291,"created_at":"2025-08-15T09:59:42.503Z","updated_at":"2025-08-15T09:59:42.503Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31808518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T11:13:53.975Z","status":"ssl_error","status_checked_at":"2026-04-14T11:13:53.299Z","response_time":153,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":[],"created_at":"2024-09-24T20:11:43.737Z","updated_at":"2026-04-14T18:01:02.164Z","avatar_url":"https://github.com/Netflix.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Metacat\n\n[![Download](https://api.bintray.com/packages/netflixoss/maven/metacat/images/download.svg)](https://bintray.com/netflixoss/maven/metacat/_latestVersion)\n[![License](https://img.shields.io/github/license/Netflix/metacat.svg)](http://www.apache.org/licenses/LICENSE-2.0)\n[![Issues](https://img.shields.io/github/issues/Netflix/metacat.svg)](https://github.com/Netflix/metacat/issues)\n[![NetflixOSS Lifecycle](https://img.shields.io/osslifecycle/Netflix/metacat.svg)]()\n\n## Introduction\n\nMetacat is a unified metadata exploration API service. You can explore Hive, RDS, Teradata, Redshift, S3 and Cassandra.\nMetacat provides you information about what data you have, where it resides and how to process it. Metadata in the end\nis really data about the data. So the primary purpose of Metacat is to give a place to describe the data so that we\ncould do more useful things with it.\n\nMetacat focusses on solving these three problems:\n\n* Federate views of metadata systems.\n* Allow arbitrary metadata storage about data sets.\n* Metadata discovery\n\n## Documentation\n\nTODO\n\n## Releases\n\n[Releases](https://github.com/Netflix/metacat/releases/)\n\n## Builds\n\nMetacat builds are run on Travis CI [here](https://travis-ci.com/Netflix/metacat).\n[![Build Status](https://travis-ci.com/Netflix/metacat.svg?branch=master)](https://travis-ci.com/Netflix/metacat)\n\n## Getting Started\n\n```\ngit clone git@github.com:Netflix/metacat.git\ncd metacat\n./gradlew clean build\n```\n\nOnce the build is completed, the metacat WAR file is generated under `metacat-war/build/libs` directory. Metacat needs\ntwo basic configurations:\n\n* `metacat.plugin.config.location`: Path to the directory containing the catalog configuration. Please look at\ncatalog [samples](https://github.com/Netflix/metacat/tree/master/metacat-functional-tests/metacat-test-cluster/etc-metacat/catalog) used for functional testing.\n* `metacat.usermetadata.config.location`: Path to the configuration file containing the connection properties to store\nuser metadata. Please look at this [sample](https://github.com/Netflix/metacat/blob/master/metacat-functional-tests/metacat-test-cluster/etc-metacat/usermetadata.properties).\n\n### Running Locally\n\nTake the build WAR in `metacat-war/build/libs` and deploy it to an existing Tomcat as `ROOT.war`.\n\nThe REST API can be accessed @ [http://localhost:8080/mds/v1/catalog](http://localhost:8080/mds/v1/catalog)\n\nSwagger API documentation can be accessed @ [http://localhost:8080/swagger-ui/index.html](http://localhost:8080/swagger-ui/index.html)\n\n### Docker Compose Example\n\n**Pre-requisite: Docker compose is installed**\n\nTo start a self contained Metacat environment with some sample catalogs run the command below.\nThis will start a `docker compose` cluster containing a Metacat container, a Hive Metastore Container, a Cassandra\ncontainer and a PostgreSQL container.\n\n```\n./gradlew metacatPorts\n```\n\n* `metacatPorts` - Prints out what exposed ports are mapped to the internal container ports.\nLook for the mapped port (`MAPPED_PORT`) to port 8080.\n\nREST API can be accessed @ `http://localhost:\u003cMAPPED_PORT\u003e/mds/v1/catalog`\n\nSwagger API documentation can be accessed @ `http://localhost:\u003cMAPPED_PORT\u003e/swagger-ui/index.html`\n\nTo stop the docker compose cluster:\n\n```\n./gradlew stopMetacatCluster\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetflix%2Fmetacat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetflix%2Fmetacat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetflix%2Fmetacat/lists"}