{"id":111988,"name":null,"description":"Validation library with type-safe schemas and rules","url":"https://github.com/andrew/dry-validation","last_synced_at":"2025-09-09T06:16:14.407Z","repository":{"id":264876722,"uuid":"892185996","full_name":"andrew/dry-validation","owner":"andrew","description":"Validation library with type-safe schemas and rules","archived":false,"fork":true,"pushed_at":"2024-11-21T16:51:10.000Z","size":2351,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-06T15:42:55.213Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://dry-rb.org/gems/dry-validation","language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"dry-rb/dry-validation","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrew.png","metadata":{},"created_at":"2024-11-21T16:50:01.000Z","updated_at":"2024-11-21T16:50:01.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/andrew/dry-validation","commit_stats":null,"previous_names":["andrew/dry-validation"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andrew/dry-validation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew%2Fdry-validation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew%2Fdry-validation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew%2Fdry-validation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew%2Fdry-validation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrew","download_url":"https://codeload.github.com/andrew/dry-validation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew%2Fdry-validation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274250962,"owners_count":25249502,"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-09-09T02:00:10.223Z","response_time":80,"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"}},"owner":{"login":"andrew","name":"Andrew Nesbitt","uuid":"1060","kind":"user","description":"Working on mapping the world of open source software @ecosyste-ms  and empowering developers with @octobox ","email":"","website":"https://nesbitt.io","location":"Bristol, UK","twitter":"teabass","company":"@ecosyste-ms and @octobox ","icon_url":"https://avatars.githubusercontent.com/u/1060?u=e1d45ea20885a12b3628d68ed8119d67bd259b3e\u0026v=4","repositories_count":357,"last_synced_at":"2025-09-02T10:37:31.447Z","metadata":{"has_sponsors_listing":true,"funding":{"github":"andrew","ko_fi":"andrewnez","buy_me_a_coffee":"andrewnez"}},"html_url":"https://github.com/andrew","funding_links":["https://github.com/sponsors/andrew","https://ko-fi.com/andrewnez","https://buymeacoffee.com/andrewnez"],"total_stars":1307,"followers":3315,"following":3395,"created_at":"2022-11-02T17:04:02.231Z","updated_at":"2025-09-02T10:37:31.447Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrew","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrew/repositories"},"packages":[],"commits":{"id":10863667,"full_name":"andrew/dry-validation","default_branch":"master","committers":[{"name":"Piotr Solnica","email":"piotr.solnica@gmail.com","login":null,"count":956},{"name":"dry-bot","email":"dry-bot@dry-rb.org","login":null,"count":203},{"name":"Nikita Shilnikov","email":"fg@flashgordon.ru","login":null,"count":102},{"name":"File Sync","email":"file-sync@action-hero.dev","login":null,"count":90},{"name":"Piotr Solnica","email":"piotr.solnica+oss@gmail.com","login":null,"count":64},{"name":"Andy Holland","email":"andyholland1991@aol.com","login":null,"count":28},{"name":"Peter Solnica","email":"peter@solnica.online","login":null,"count":22},{"name":"Fran Worley","email":"frances@safetytoolbox.co.uk","login":null,"count":20},{"name":"File Sync","email":"github@repobot.app","login":null,"count":18},{"name":"Action Hero","email":"bot@action-hero.app","login":null,"count":15},{"name":"Piotr Solnica","email":"piotr_solnica@apple.com","login":null,"count":14},{"name":"Tim Cooper","email":"coop@latrobest.com","login":null,"count":13},{"name":"Marc Busqué","email":"marc@lamarciana.com","login":null,"count":12},{"name":"Igor Alexandrov","email":"igor.alexandrov@gmail.com","login":null,"count":10},{"name":"GitHub Action","email":"action@github.com","login":null,"count":9},{"name":"Tim Riley","email":"tim@openmonkey.com","login":null,"count":9},{"name":"Nikita Shilnikov","email":"ns@latera.ru","login":null,"count":7},{"name":"Olle Jonsson","email":"olle.jonsson@gmail.com","login":null,"count":6},{"name":"Luca Guidi","email":"me@lucaguidi.com","login":null,"count":5},{"name":"Peter Solnica","email":"solnic@users.noreply.github.com","login":null,"count":4},{"name":"Peter Suschlik","email":"ps@neopoly.de","login":null,"count":4},{"name":"fkostovski","email":"fkostovski@ebay.com","login":null,"count":4},{"name":"Arkadiy Zabazhanov","email":"kinwizard@gmail.com","login":null,"count":3},{"name":"Brandon Autrey","email":"brandon.autrey@glia.com","login":null,"count":3},{"name":"Espartaco Palma","email":"esparta@gmail.com","login":null,"count":3},{"name":"Ian White","email":"ian.w.white@gmail.com","login":null,"count":3},{"name":"Jan Dudulski","email":"jan@dudulski.pl","login":null,"count":3},{"name":"Joe","email":"191664+the-undefined@users.noreply.github.com","login":null,"count":3},{"name":"Mathieu Le Tiec","email":"mathieu.letiec+github@gmail.com","login":null,"count":3},{"name":"Rob Hanlon","email":"robhanlon@gmail.com","login":null,"count":3},{"name":"Tanner Donovan","email":"ttdonovan@gmail.com","login":null,"count":3},{"name":"Adam Lassek","email":"adam.lassek@getflywheel.com","login":null,"count":2},{"name":"Agustin Cavilliotti","email":"cavi21@gmail.com","login":null,"count":2},{"name":"Alexander Katulskiy","email":"alexxty7@gmail.com","login":null,"count":2},{"name":"Dmitriy Ivliev","email":"rootkit89@gmail.com","login":null,"count":2},{"name":"Eugene Kruglov","email":"sickjahfar@gmail.com","login":null,"count":2},{"name":"File Sync","email":"file-sync@repobot-app.dev","login":null,"count":2},{"name":"Grant Shangreaux","email":"shshoshin@protonmail.com","login":null,"count":2},{"name":"Juan Vasquez","email":"juan@logicalbricks.com","login":null,"count":2},{"name":"Koichi ITO","email":"koic.ito@gmail.com","login":null,"count":2},{"name":"Long Nguyen","email":"long.polyglot@gmail.com","login":null,"count":2},{"name":"Mathieu Le Tiec","email":"mathieu.letiec+git@gmail.com","login":null,"count":2},{"name":"RKushnir","email":"RKushnir@users.noreply.github.com","login":null,"count":2},{"name":"Ralf Schmitz Bongiolo","email":"mrbongiolo@gmail.com","login":null,"count":2},{"name":"Ralf Schmitz Bongiolo","email":"ralfsb2008@gmail.com","login":null,"count":2},{"name":"Rob Hanlon","email":"rob.hanlon@highspot.com","login":null,"count":2},{"name":"Semyon Pupkov","email":"mail@semyonpupkov.com","login":null,"count":2},{"name":"Svyatoslav Kryukov","email":"s.g.kryukov@yandex.ru","login":null,"count":2},{"name":"Tobias Pfeiffer","email":"pragtob@gmail.com","login":null,"count":2},{"name":"jozzi","email":"dominik.malantowicz@gmail.com","login":null,"count":2},{"name":"Aaron Tinio","email":"aptinio@gmail.com","login":null,"count":1},{"name":"Akira Matsuda","email":"ronnie@dio.jp","login":null,"count":1},{"name":"Alexey Zhaboyedov","email":"Alexey.Zhaboyedov@dataart.com","login":null,"count":1},{"name":"Andrei Galușca","email":"agalusca@gmail.com","login":null,"count":1},{"name":"Armin","email":"armin@wurzweb.com","login":null,"count":1},{"name":"Ben Hicks","email":"benkhicks@gmail.com","login":null,"count":1},{"name":"Bogdan Malakhovich","email":"q3ry.dev@gmail.com","login":null,"count":1},{"name":"Brychu","email":"pbrych@gmail.com","login":null,"count":1},{"name":"Daniel Gollahon","email":"daniel@blockscore.com","login":null,"count":1},{"name":"Dawid Janczak","email":"dawid.janczak@gmail.com","login":null,"count":1},{"name":"Espartaco Palma","email":"git@esparta.co","login":null,"count":1},{"name":"Frank Lam","email":"ryzingsun11@yahoo.com","login":null,"count":1},{"name":"George Millo","email":"georgejulianmillo@gmail.com","login":null,"count":1},{"name":"Grzegorz Jakubiak","email":"grzegorz.jakubiak@infopark.de","login":null,"count":1},{"name":"GustavoCaso","email":"gustavocaso@gmail.com","login":null,"count":1},{"name":"Igor Sidorov","email":"igor.sidorov@onapp.com","login":null,"count":1},{"name":"Jeremy Friesen","email":"jeremy.n.friesen@gmail.com","login":null,"count":1},{"name":"Joe Van Dyk","email":"joe@tanga.com","login":null,"count":1},{"name":"John Backus","email":"johncbackus@gmail.com","login":null,"count":1},{"name":"Kirill Zaitsev","email":"kirik910@gmail.com","login":null,"count":1},{"name":"Kristopher Bredemeier","email":"kb@i22.de","login":null,"count":1},{"name":"Nathaniel Bibler","email":"git@nathanielbibler.com","login":null,"count":1},{"name":"Néstor Salceda","email":"nestor.salceda@gmail.com","login":null,"count":1},{"name":"Pablo Herrero","email":"pablodherrero@gmail.com","login":null,"count":1},{"name":"Patrick Clery","email":"patrick.clery@gmail.com","login":null,"count":1},{"name":"Pavel Rodionov","email":"pasha.rod@mail.ru","login":null,"count":1},{"name":"Radan Skoric","email":"radan.skoric@gmail.com","login":null,"count":1},{"name":"Salim Semaoune","email":"salim.semaoune@gmail.com","login":null,"count":1},{"name":"Tadeusz Niemiec","email":"tadeusz@applover.pl","login":null,"count":1},{"name":"Tim Riley","email":"tim@icelab.com.au","login":null,"count":1},{"name":"Tim Riley","email":"tim@riley.id.au","login":null,"count":1},{"name":"Viktar Basharymau","email":"viktar.basharymau@gmail.com","login":null,"count":1},{"name":"Vitaly Pecherin","email":"readfuzza@gmail.com","login":null,"count":1},{"name":"enomotodev","email":"enomoto.dev@gmail.com","login":null,"count":1},{"name":"fig","email":"fig@users.noreply.github.com","login":null,"count":1},{"name":"gary","email":"ggrumbley@ucsd.edu","login":null,"count":1},{"name":"isikyus","email":"isikyus@users.noreply.github.com","login":null,"count":1},{"name":"mereghost","email":"marcello.rocha@gmail.com","login":null,"count":1},{"name":"schokomarie","email":"jana@dotless.de","login":null,"count":1},{"name":"wintersolutions","email":"mw@wintersolutions.de","login":null,"count":1}],"total_commits":1720,"total_committers":90,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":19.11111111111111,"dds":0.44418604651162785,"past_year_committers":[],"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2025-09-08T21:28:27.007Z","last_synced_commit":"7c10d83206bde67dc147e2232eb0c4d0956e6d00","created_at":"2025-09-02T11:18:48.268Z","updated_at":"2025-09-08T21:28:10.845Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew%2Fdry-validation/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-09T00:17:06.873Z","repositories_count":5507543,"commits_count":859190247,"contributors_count":31431724,"owners_count":914790,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"andrew/dry-validation","html_url":"https://github.com/andrew/dry-validation","last_synced_at":null,"status":null,"issues_count":null,"pull_requests_count":null,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":null,"issues_closed_count":null,"pull_requests_closed_count":null,"pull_request_authors_count":null,"issue_authors_count":null,"avg_comments_per_issue":null,"avg_comments_per_pull_request":null,"merged_pull_requests_count":null,"bot_issues_count":null,"bot_pull_requests_count":null,"past_year_issues_count":null,"past_year_pull_requests_count":null,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":null,"past_year_pull_requests_closed_count":null,"past_year_pull_request_authors_count":null,"past_year_issue_authors_count":null,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":null,"past_year_bot_pull_requests_count":null,"past_year_merged_pull_requests_count":null,"created_at":"2025-09-09T06:15:22.922Z","updated_at":"2025-09-09T06:15:22.922Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew%2Fdry-validation","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew%2Fdry-validation/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{},"pull_request_author_associations_count":{},"issue_authors":{},"pull_request_authors":{},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-09T00:00:11.778Z","repositories_count":10177394,"issues_count":31944352,"pull_requests_count":100243271,"authors_count":10736252,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[],"active_maintainers":[]},"events":{"total":{},"last_year":{}},"keywords":[],"dependencies":[],"score":null,"created_at":"2025-09-08T22:46:48.522Z","updated_at":"2025-10-07T08:32:27.239Z","avatar_url":"https://github.com/andrew.png","language":null,"category":null,"sub_category":null,"monthly_downloads":0,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["authorization","oauth2","oauth2-client","oidc","oidc-client"],"project_url":"https://science.ecosyste.ms/api/v1/projects/111988","html_url":"https://science.ecosyste.ms/projects/111988"}