diff --git a/OpenCredentialPublisher.Data/Contexts/Migrations/20220128173456_Idatafy.Designer.cs b/OpenCredentialPublisher.Data/Contexts/Migrations/20220128173456_Idatafy.Designer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..de8fddc513922caeea73110be538a67d5339e65d
--- /dev/null
+++ b/OpenCredentialPublisher.Data/Contexts/Migrations/20220128173456_Idatafy.Designer.cs
@@ -0,0 +1,4697 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using OpenCredentialPublisher.Data.Contexts;
+
+namespace OpenCredentialPublisher.Data.Contexts.Migrations
+{
+ [DbContext(typeof(WalletDbContext))]
+ [Migration("20220128173456_Idatafy")]
+ partial class Idatafy
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("Relational:MaxIdentifierLength", 128)
+ .HasAnnotation("ProductVersion", "5.0.5")
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ modelBuilder.Entity("IdentityServer4.EntityFramework.Entities.DeviceFlowCodes", b =>
+ {
+ b.Property("UserCode")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("ClientId")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime2");
+
+ b.Property("Data")
+ .IsRequired()
+ .HasMaxLength(50000)
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Description")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("DeviceCode")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("Expiration")
+ .IsRequired()
+ .HasColumnType("datetime2");
+
+ b.Property("SessionId")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("SubjectId")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.HasKey("UserCode");
+
+ b.HasIndex("DeviceCode")
+ .IsUnique();
+
+ b.HasIndex("Expiration");
+
+ b.ToTable("DeviceCodes");
+ });
+
+ modelBuilder.Entity("IdentityServer4.EntityFramework.Entities.PersistedGrant", b =>
+ {
+ b.Property("Key")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("ClientId")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("ConsumedTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime2");
+
+ b.Property("Data")
+ .IsRequired()
+ .HasMaxLength(50000)
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Description")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("Expiration")
+ .HasColumnType("datetime2");
+
+ b.Property("SessionId")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("SubjectId")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("Type")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.HasKey("Key");
+
+ b.HasIndex("Expiration");
+
+ b.HasIndex("SubjectId", "ClientId", "Type");
+
+ b.HasIndex("SubjectId", "SessionId", "Type");
+
+ b.ToTable("PersistedGrants");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Name")
+ .HasMaxLength(256)
+ .HasColumnType("nvarchar(256)");
+
+ b.Property("NormalizedName")
+ .HasMaxLength(256)
+ .HasColumnType("nvarchar(256)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedName")
+ .IsUnique()
+ .HasDatabaseName("RoleNameIndex")
+ .HasFilter("[NormalizedName] IS NOT NULL");
+
+ b.ToTable("AspNetRoles");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ b.Property("ClaimType")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ClaimValue")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("RoleId")
+ .IsRequired()
+ .HasColumnType("nvarchar(450)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetRoleClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ b.Property("ClaimType")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ClaimValue")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("UserId")
+ .IsRequired()
+ .HasColumnType("nvarchar(450)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
+ {
+ b.Property("LoginProvider")
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("ProviderKey")
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("ProviderDisplayName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("UserId")
+ .IsRequired()
+ .HasColumnType("nvarchar(450)");
+
+ b.HasKey("LoginProvider", "ProviderKey");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserLogins");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("RoleId")
+ .HasColumnType("nvarchar(450)");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetUserRoles");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("LoginProvider")
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("Name")
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("Value")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("UserId", "LoginProvider", "Name");
+
+ b.ToTable("AspNetUserTokens");
+ });
+
+ modelBuilder.Entity("OpenCredentialPublisher.Data.Models.AchievementModel", b =>
+ {
+ b.Property("AchievementId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ b.Property("AchievementType")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("AdditionalProperties")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("CreditsAvailable")
+ .HasColumnType("real");
+
+ b.Property("CriteriaId")
+ .HasColumnType("int");
+
+ b.Property("Description")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("FieldOfStudy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("HumanCode")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Id")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Identifiers")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Image")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("IssuerProfileId")
+ .HasColumnType("int");
+
+ b.Property("Level")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Specialization")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Tags")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Type")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("AchievementId");
+
+ b.HasIndex("CriteriaId")
+ .IsUnique()
+ .HasFilter("[CriteriaId] IS NOT NULL");
+
+ b.HasIndex("IssuerProfileId");
+
+ b.ToTable("Achievements", "cred");
+ });
+
+ modelBuilder.Entity("OpenCredentialPublisher.Data.Models.AgentContextModel", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("Active")
+ .HasColumnType("bit");
+
+ b.Property("AgentName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ApiKey")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ContextJson")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("DomainDid")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("EndpointUrl")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("IssuerDid")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IssuerRegistered")
+ .HasColumnType("bit");
+
+ b.Property("IssuerVerKey")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("Network")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ProvisioningTokenId")
+ .HasColumnType("int");
+
+ b.Property("SdkVerKey")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("SdkVerKeyId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ThreadId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("TokenHash")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("VerityAgentVerKey")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("VerityPublicDid")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("VerityPublicVerKey")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("VerityUrl")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Version")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("WalletKey")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("WalletPath")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("AgentContexts");
+ });
+
+ modelBuilder.Entity("OpenCredentialPublisher.Data.Models.ApplicationUser", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("AccessFailedCount")
+ .HasColumnType("int");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("DisplayName")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)");
+
+ b.Property("Email")
+ .HasMaxLength(256)
+ .HasColumnType("nvarchar(256)");
+
+ b.Property("EmailConfirmed")
+ .HasColumnType("bit");
+
+ b.Property("LockoutEnabled")
+ .HasColumnType("bit");
+
+ b.Property("LockoutEnd")
+ .HasColumnType("datetimeoffset");
+
+ b.Property("NormalizedEmail")
+ .HasMaxLength(256)
+ .HasColumnType("nvarchar(256)");
+
+ b.Property("NormalizedUserName")
+ .HasMaxLength(256)
+ .HasColumnType("nvarchar(256)");
+
+ b.Property("PasswordHash")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("PhoneNumber")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("PhoneNumberConfirmed")
+ .HasColumnType("bit");
+
+ b.Property("ProfileImageUrl")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("SecurityStamp")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("TwoFactorEnabled")
+ .HasColumnType("bit");
+
+ b.Property("UserName")
+ .HasMaxLength(256)
+ .HasColumnType("nvarchar(256)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedEmail")
+ .HasDatabaseName("EmailIndex");
+
+ b.HasIndex("NormalizedUserName")
+ .IsUnique()
+ .HasDatabaseName("UserNameIndex")
+ .HasFilter("[NormalizedUserName] IS NOT NULL");
+
+ b.ToTable("AspNetUsers");
+ });
+
+ modelBuilder.Entity("OpenCredentialPublisher.Data.Models.ArtifactModel", b =>
+ {
+ b.Property("ArtifactId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ b.Property("AdditionalProperties")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("AssertionId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ClrId")
+ .HasColumnType("int");
+
+ b.Property("ClrIssuedOn")
+ .HasColumnType("datetime2");
+
+ b.Property("ClrName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("Description")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("EvidenceName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("IsPdf")
+ .HasColumnType("bit");
+
+ b.Property("IsUrl")
+ .HasColumnType("bit");
+
+ b.Property("MediaType")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("Name")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("NameContainsTranscript")
+ .HasColumnType("bit");
+
+ b.Property("Type")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Url")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("ArtifactId");
+
+ b.HasIndex("ClrId");
+
+ b.ToTable("Artifacts", "cred");
+ });
+
+ modelBuilder.Entity("OpenCredentialPublisher.Data.Models.AssertionModel", b =>
+ {
+ b.Property("AssertionId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ b.Property("AchievementId")
+ .HasColumnType("int");
+
+ b.Property("ActivityEndDate")
+ .HasColumnType("datetime2");
+
+ b.Property("ActivityStartDate")
+ .HasColumnType("datetime2");
+
+ b.Property("AdditionalProperties")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Context")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("CreditsEarned")
+ .HasColumnType("real");
+
+ b.Property("DisplayName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Expires")
+ .HasColumnType("datetime2");
+
+ b.Property("Id")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Image")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("IsSelfPublished")
+ .HasColumnType("bit");
+
+ b.Property("IsSigned")
+ .HasColumnType("bit");
+
+ b.Property("IssuedOn")
+ .HasColumnType("datetime2");
+
+ b.Property("Json")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("LicenseNumber")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("Narrative")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ParentAssertionId")
+ .HasColumnType("int");
+
+ b.Property("RecipientId")
+ .HasColumnType("int");
+
+ b.Property("RevocationReason")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Revoked")
+ .HasColumnType("bit");
+
+ b.Property("Role")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("SignedAssertion")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("SignedEndorsements")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("SourceId")
+ .HasColumnType("int");
+
+ b.Property("Term")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Type")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("VerificationId")
+ .HasColumnType("int");
+
+ b.HasKey("AssertionId");
+
+ b.HasIndex("AchievementId")
+ .IsUnique()
+ .HasFilter("[AchievementId] IS NOT NULL");
+
+ b.HasIndex("ParentAssertionId");
+
+ b.HasIndex("RecipientId")
+ .IsUnique()
+ .HasFilter("[RecipientId] IS NOT NULL");
+
+ b.HasIndex("SourceId");
+
+ b.HasIndex("VerificationId")
+ .IsUnique()
+ .HasFilter("[VerificationId] IS NOT NULL");
+
+ b.ToTable("Assertions", "cred");
+ });
+
+ modelBuilder.Entity("OpenCredentialPublisher.Data.Models.AuthorizationModel", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("AccessToken")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("AuthorizationCode")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CodeVerifier")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("Endpoint")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("Method")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("Payload")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("RefreshToken")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Scopes")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("SourceForeignKey")
+ .HasColumnType("int");
+
+ b.Property("UserId")
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("ValidTo")
+ .HasColumnType("datetime2");
+
+ b.HasKey("Id");
+
+ b.HasIndex("SourceForeignKey");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Authorizations");
+ });
+
+ modelBuilder.Entity("OpenCredentialPublisher.Data.Models.Badgr.BadgrAssertionModel", b =>
+ {
+ b.Property("BadgrAssertionId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ b.Property("Acceptance")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("AdditionalProperties")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("BadgeClassJson")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("BadgeClassOpenBadgeId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("BadgeJson")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Badgeclass")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("BadgrBackpackId")
+ .HasColumnType("int");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("Expires")
+ .HasColumnType("datetime2");
+
+ b.Property("Id")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Image")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("InternalIdentifier")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsBadgr")
+ .HasColumnType("bit");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("IsValidJson")
+ .HasColumnType("bit");
+
+ b.Property("IssueStatus")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IssuedOn")
+ .HasColumnType("datetime2");
+
+ b.Property("Issuer")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IssuerJson")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IssuerOpenBadgeId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Json")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("Narrative")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("OpenBadgeId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Pending")
+ .HasColumnType("bit");
+
+ b.Property("RecipientJson")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("RevocationReason")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Revoked")
+ .HasColumnType("bit");
+
+ b.Property("SignedAssertion")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Type")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ValidationStatus")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("BadgrAssertionId");
+
+ b.HasIndex("BadgrBackpackId");
+
+ b.ToTable("BadgrAssertions", "cred");
+ });
+
+ modelBuilder.Entity("OpenCredentialPublisher.Data.Models.Badgr.BadgrBackpackModel", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ b.Property("AssertionsCount")
+ .HasColumnType("int");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("Identifier")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsBadgr")
+ .HasColumnType("bit");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("IssuedOn")
+ .HasColumnType("datetime2");
+
+ b.Property("Json")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("Name")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ParentCredentialPackageId")
+ .HasColumnType("int");
+
+ b.Property("Provider")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("RevocationReason")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Revoked")
+ .HasColumnType("bit");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ParentCredentialPackageId")
+ .IsUnique();
+
+ b.ToTable("BadgrBackpacks", "cred");
+ });
+
+ modelBuilder.Entity("OpenCredentialPublisher.Data.Models.CertificateModel", b =>
+ {
+ b.Property("Host")
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("IssuedByName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IssuedToName")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Host");
+
+ b.ToTable("Certificates");
+ });
+
+ modelBuilder.Entity("OpenCredentialPublisher.Data.Models.ClrEntities.AlignmentModel", b =>
+ {
+ b.Property("AlignmentId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ b.Property("AdditionalProperties")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("EducationalFramework")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Id")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("TargetCode")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("TargetDescription")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("TargetName")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("TargetType")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("TargetUrl")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Type")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("AlignmentId");
+
+ b.ToTable("Alignments", "cred");
+ });
+
+ modelBuilder.Entity("OpenCredentialPublisher.Data.Models.ClrEntities.AssociationModel", b =>
+ {
+ b.Property("AssociationId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ b.Property("AdditionalProperties")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("AssociationType")
+ .HasColumnType("int");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("TargetId")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("AssociationId");
+
+ b.ToTable("Associations", "cred");
+ });
+
+ modelBuilder.Entity("OpenCredentialPublisher.Data.Models.ClrEntities.CriteriaModel", b =>
+ {
+ b.Property("CriteriaId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ b.Property("AdditionalProperties")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("Id")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("datetime2");
+
+ b.Property("Narrative")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Type")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("CriteriaId");
+
+ b.ToTable("Criteria", "cred");
+ });
+
+ modelBuilder.Entity("OpenCredentialPublisher.Data.Models.ClrEntities.EndorsementClaimModel", b =>
+ {
+ b.Property("EndorsementClaimId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ b.Property("AdditionalProperties")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime2");
+
+ b.Property