{"id":22018214,"url":"https://github.com/sahlhoff/eyewitness","last_synced_at":"2026-04-17T15:31:37.338Z","repository":{"id":6772182,"uuid":"8019025","full_name":"sahlhoff/eyewitness","owner":"sahlhoff","description":"Pearson eyewitness api lib","archived":false,"fork":false,"pushed_at":"2013-02-05T00:42:39.000Z","size":104,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-23T09:35:16.648Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/sahlhoff.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}},"created_at":"2013-02-04T23:55:20.000Z","updated_at":"2014-01-25T21:25:44.000Z","dependencies_parsed_at":"2022-08-26T05:51:30.303Z","dependency_job_id":null,"html_url":"https://github.com/sahlhoff/eyewitness","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sahlhoff/eyewitness","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sahlhoff%2Feyewitness","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sahlhoff%2Feyewitness/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sahlhoff%2Feyewitness/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sahlhoff%2Feyewitness/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sahlhoff","download_url":"https://codeload.github.com/sahlhoff/eyewitness/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sahlhoff%2Feyewitness/sbom","scorecard":{"id":795363,"data":{"date":"2025-08-11","repo":{"name":"github.com/sahlhoff/eyewitness","commit":"831430e454394ac3138104d8cadf32444ba2481a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"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":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/5 approved changesets -- score normalized to 0","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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"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":"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":"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":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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"}}]},"last_synced_at":"2025-08-23T08:47:34.481Z","repository_id":6772182,"created_at":"2025-08-23T08:47:34.481Z","updated_at":"2025-08-23T08:47:34.481Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31934328,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T12:37:54.787Z","status":"ssl_error","status_checked_at":"2026-04-17T12:37:25.095Z","response_time":62,"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":[],"created_at":"2024-11-30T05:10:59.295Z","updated_at":"2026-04-17T15:31:37.321Z","avatar_url":"https://github.com/sahlhoff.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"##About\n\nPearson's eyewitness api [details here](http://developer.pearson.com/api/eyewitness-guides/apimethod/entries-guide/189/overview)\n\n## Installation\n\n```bash\n$ npm install eyewitness\n```\n\n## Usage\n\n### Guide\n\nSearches the Eyewitness Guides for information based on the search criteria, returning the results in the requested format.\n\n    var params = {\n      \t  q: 'queen'\n    \t\t, apikey: 'Your Key'\n    \t};\n  \n  \tvar guidebook = 'london'\n  \n  \n  \teyewitness.guide(params, guidebook ,function (err, data) {\n  \t\tif(err){\n  \t\t\tconsole.log('-\u003e testGuide ERROR');\n  \t\t}\n  \t\telse {\n  \t\t\tconsole.log('-\u003e testGuide OK');\n  \t\t};\n  \t});\n\n\n### Guide With Filters\n\nSearches the Eyewitness Guides for information based on the search criteria with additional filters, returning the results in the requested format. This is the same API as Search for Entries, with additional parameters\n\n    var params = {\n    \t\t  q: 'queen'\n    \t\t, category: 'Restaurants'\n    \t\t, entry_type: 'chapters'\n    \t\t, apikey: 'Your Key'\n    \t};\n    \n    var guidebook = 'london'\n    \n    eyewitness.guideWithFilter(params, guidebook, function (err, data) {\n    \t\tif(err){\n    \t\t\tconsole.log('-\u003e testGuideWithFilter ERROR');\n    \t\t}\n    \t\telse {\n    \t\t\tconsole.log('-\u003e testGuideWithFilter OK');\n    \t\t}\n    \t});\n    \n\n### Guide Categories\n\nLists the categories of entries available in the Eyewitness Guides, returning a list in the requested format.\n\n    var params = {\n    \tapikey: 'Your Key'\n    };\n    \n    var guidebook = 'london'\n    \n    eyewitness.guideCategories(params, guidebook, function (err, data) {\n    \tif(err){\n    \t\tconsole.log('-\u003e testGuideCategories ERROR');\n    \t}\n    \telse {\n    \t\tconsole.log('-\u003e testGuideCategories OK');\n    \t}\n    });\n\n\n### Guide Entries in Categories\n\nLists the entries for a specified category from the Eyewitness Guides, returning a list in the requested format. If you need to find entries in multiple categories, use the more powerful List Entries with Filters\n\n    var params = {\n    \tapikey: 'Your Key'\n    };\n    \n    \tvar categoryName = 'Museums'\n    \tvar guidebook = 'london'\n    \n    eyewitness.guideEntriesInCategories(params, guidebook, categoryName, function (err, data) {\n    \tif(err){\n    \t\tconsole.log('-\u003e testGuideEntriesCategories ERROR');\n    \t}\n    \telse {\n    \t\tconsole.log('-\u003e testGuideEntriesCategories OK');\n    \t}\n    });\n\n### Geosearch for Entries\n\nSearches the Eyewitness Guides for information based on a given geolocation. The nearest 25 matches are returned, in the requested format.\n\n    var params = {\n    \t  lon: '0.1062'\n    \t, lat: '52.5171'\n    \t, apikey: 'Your Key'\n    };\n    \n    \tvar guidebook = 'london'\n    \n    eyewitness.geosearchForEntries(params, guidebook, function (err, data) {\n    \tif(err){\n    \t\tconsole.log('-\u003e testGeosearchEntries ERROR');\n    \t}\n    \telse {\n    \t\tconsole.log('-\u003e testGeosearchEntries OK');\n    \t}\n    });\n\n### Geosearch for Entries with Filters\n\nSearches the Eyewitness Guides for information based on a given geolocation and additional filters. The nearest 25 matches are returned, in the requested format.\n\n    var params = {\n    \t  lon: '0.1062'\n    \t, lat: '51.5171'  \n    \t, apikey: 'Your Key'\n    \t, category: 'Pubs_And_Bars'\n    };\n    \n    var guidebook = 'london'\n    \n    eyewitness.geosearchForEntriesWithFilters(params, guidebook, function (err, data) {\n    \tif(err){\n    \t\tconsole.log('-\u003e testGeosearchFilters ERROR');\n    \t}\n    \telse {\n    \t\tconsole.log('-\u003e testGeosearchFilters OK');\n    \t}\n    });\n\n### Entry from Guide\n\nRetrieves a specific entry from the Eyewitness Guides, returning the results in the requested format.\n\n    var params = {\n    \tapikey: 'Your Key'\n    };\n    \n    var entryId = 'EWTG_LONDON168STGIL_002'\n    var guidebook = 'london'\n    \n    eyewitness.entryFromGuide(params, guidebook, entryId, function (err, data) {\n    \tif(err){\n    \t\tconsole.log('-\u003e testEntryGuide ERROR');\n    \t}\n    \telse {\n    \t\tconsole.log('-\u003e testEntryGuide OK');\n    \t}\n    });\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsahlhoff%2Feyewitness","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsahlhoff%2Feyewitness","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsahlhoff%2Feyewitness/lists"}