{"id":18494209,"url":"https://github.com/workleap/wl-componentmodel-dataannotations","last_synced_at":"2026-04-07T14:02:09.056Z","repository":{"id":38210227,"uuid":"498838253","full_name":"workleap/wl-componentmodel-dataannotations","owner":"workleap","description":"Provides multiple new data annotation attributes for the .NET ecosystem","archived":false,"fork":false,"pushed_at":"2026-03-29T04:56:48.000Z","size":193,"stargazers_count":11,"open_issues_count":3,"forks_count":1,"subscribers_count":23,"default_branch":"main","last_synced_at":"2026-03-29T07:34:18.068Z","etag":null,"topics":["attributes","dotnet","product--idp","validation","vertical--infra"],"latest_commit_sha":null,"homepage":"","language":"C#","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/workleap.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","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":"2022-06-01T17:41:55.000Z","updated_at":"2026-03-20T20:07:56.000Z","dependencies_parsed_at":"2023-09-26T00:12:16.327Z","dependency_job_id":"a41b0c9c-549c-4a56-97f6-8e1afab7ad10","html_url":"https://github.com/workleap/wl-componentmodel-dataannotations","commit_stats":null,"previous_names":["gsoft-inc/sg-componentmodel-dataannotations","gsoft-inc/gsoft-componentmodel-dataannotations","workleap/wl-componentmodel-dataannotations","gsoft-inc/wl-componentmodel-dataannotations"],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/workleap/wl-componentmodel-dataannotations","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/workleap%2Fwl-componentmodel-dataannotations","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/workleap%2Fwl-componentmodel-dataannotations/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/workleap%2Fwl-componentmodel-dataannotations/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/workleap%2Fwl-componentmodel-dataannotations/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/workleap","download_url":"https://codeload.github.com/workleap/wl-componentmodel-dataannotations/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/workleap%2Fwl-componentmodel-dataannotations/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31515151,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"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":["attributes","dotnet","product--idp","validation","vertical--infra"],"created_at":"2024-11-06T13:18:23.011Z","updated_at":"2026-04-07T14:02:09.045Z","avatar_url":"https://github.com/workleap.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Workleap.ComponentModel.DataAnnotations\n\nProvides multiple new data annotation attributes, such as `[Guid]`, `[NotEmpty]`, `[ValidateProperties]`.\n\n[![nuget](https://img.shields.io/nuget/v/Workleap.ComponentModel.DataAnnotations.svg?logo=nuget)](https://www.nuget.org/packages/Workleap.ComponentModel.DataAnnotations/)\n[![build](https://img.shields.io/github/actions/workflow/status/workleap/wl-componentmodel-dataannotations/publish.yml?logo=github)](https://github.com/workleap/wl-componentmodel-dataannotations/actions/workflows/publish.yml)\n\n\n## Getting started\n\n```\ndotnet add package Workleap.ComponentModel.DataAnnotations\n```\n\nDecorate your properties, fields and method parameters with these new data annotation attributes.\n\nMost of them are validation attributes that can be used in model validation. They work the same way as built-in .NET data annotations such as `[Required]`, `[Range]`, `[RegularExpression]`, etc.\n\nThe most useful validation attribute here is probably `ValidatePropertiesAttribute`, as it validates all the properties of an object. This allows in-depth, nested validation of an entire complex object graph.\n\n## List of data annotation attributes\n\n| Attribute                             | Description                                                                                                                                                                                                                                   |\n|---------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `GuidAttribute`                       | Validates that a string property is a well-formatted GUID with an optional format                                                                                                                                                             |\n| `ContainsNonEmptyGuidAttribute`       | Validates that a Guid enumerable property contains at least one non-empty Guid                                                                                                                                                                                                                                              |\n| `ContainsNonEmptyStringAttribute`     | Validates that a String enumerable property contains at least one non-empty String                                                                                                                                                           |\n| `ContainsOnlyNonEmptyGuidsAttribute`  | Validates that a Guid enumerable property contains only non-empty Guids                                                                                                                                                                                                                                              |\n| `ContainsOnlyNonEmptyStringsAttribute`| Validates that a String enumerable property contains only non-empty Strings                                                                                                                                                                                                                                             |\n| `NotEmptyAttribute`                   | Validates that an enumerable property is not empty                                                                                                                                                                                            |\n| `ValidatePropertiesAttribute`         | Validates **all properties of a complex type property** (nested object validation)                                                                                                                                                            |\n| `TimeSpanAttribute`                   | Validates that a string property is a well-formatted TimeSpan with an optional format                                                                                                                                                         |\n| `UrlOfKindAttribute`                  | Validates that a string or `Uri` property is a well-formatted url of the specified `UriKind`                                                                                                                                                  |\n| `ContainsAttribute`                   | Validates that a string contains the specified substring (casing can be specified)                                                                                                                                                            |\n| `StartsWithAttribute`                 | Validates that a string starts with the specified substring (casing can be specified)                                                                                                                                                         |\n| `EndsWithAttribute`                   | Validates that a string ends with the specified substring (casing can be specified)                                                                                                                                                           |\n| `ProvidedByAzureKeyVaultAttribute`    | Indicates that a property value might be loaded from Azure Key Vault (_has no effect_)                                                                                                                                                        |\n| `ProvidedByAzureAppConfigAttribute`   | Indicates that a property value might be loaded from Azure App Configuration (_has no effect_)                                                                                                                                                |\n| `SensitiveInformationAttribute`       | Indicates that a property contains sensitive information, such as personally identifiable information (PII), or any other information that might result in loss of an advantage or level of security if disclosed to others (_has no effect_) |\n| `NonSensitiveInformationAttribute`    | Indicates that a property does not contain sensitive information (_has no effect_)                                                                                                                                                            |\n\n\n## License\n\nCopyright © 2022, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/workleap/gsoft-license/blob/master/LICENSE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworkleap%2Fwl-componentmodel-dataannotations","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fworkleap%2Fwl-componentmodel-dataannotations","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworkleap%2Fwl-componentmodel-dataannotations/lists"}