Date: Thu, 28 Mar 2024 03:42:50 -0500 (CDT) Message-ID: <1157304173.28384.1711615370296@PUBEDFIPRDWEB5.public.local> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_28383_1425262160.1711615370286" ------=_Part_28383_1425262160.1711615370286 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
Configure Bulk Load= In this example, we will create a new domain entity called Studen= t Transcript. This entity will be exposed in Ed-Fi ODS / API through a new = API resource called studentTranscripts.
Before you begin:
The steps can be summarized as:
Each step is outlined in detail, below.
In a real project, you would take the preliminary step of designing your= extension, and analyzing how your needs map to the Ed-Fi ODS / API data mo= del. We'll propose a design.
This example will create a new Student Transcript entity, which will car= ry information about where students enroll in college after graduation, a n= ew element indicating whether graduates were part of a special education pr= ogram, and some additional information about whether a transmitted record i= s an official or unofficial submission.
Based on our needs, we require a new entity (to contain information abou= t postsecondary institutions) and we need to add some elements to existing = entities. The following is a diagram is a sketch showing the additional ent= ity and the new elements we're bolting on to existing Ed-Fi entities.
You'll notice that a few elements are shown with a type of "descriptor."= The Ed-Fi Descriptor is analogous to an enumeration. It's an Ed-Fi-specifi= c design pattern that allows for enumeration-like definition and validation= within an operational context, but may vary between contexts. We'll see mo= re about how these are implemented below.
This example is somewhat complex, but illustrates most of the advanced c= oncepts required to extend the Ed-Fi ODS / API. Let's continue with the mec= hanics.
In this step, we'll create a new project in MetaEd, and author our new e= ntity. You do need to download and install MetaEd to do this step. Do that now if you haven't already.
MetaEd allows you to target different versions of the Ed-Fi technology s= tack and data model. Confirm that your MetaEd IDE is targeting v5.0.0 by fo= llowing the instructions in the Ver= sion Targeting documentation for the MetaEd IDE.
The desired model for the latest ODS / API is "ed-fi-model-3.2b".
In the MetaEd menu, click Create New Exten= sion Project. These steps are the same as the Student Transportation Example, so we = won't cover the detail here.
Your new extension project appears in the tree view below the core model= .
Open the package.json file by double-clicking on the file in the tree vi= ew to the left and provide an appropriate name for your project. In this ca= se we will call it "SampleStudentTranscript".
Click "Save" under the "File" menu or press Ctrl + S <= /strong>to save your changes.
We're going to add seven new .metaed source files to the project we just= created. You'll recall that MetaEd files are required to be organized into= subfolders named after their entity type. The core ed-fi-model projec= t provides examples of subfolder naming.
2d.1. Add Domain Entities.
Right-click on the extension project folder and cl= ick New Folder.
Name the folder DomainEntity and press <= strong>Enter.
Now we'll add two MetaEd source files to the folder we just created. Eac= h type of file has a template that already contains source code basics.
Right-click on the new folder, choose Add = MetaEd File > DomainEntity. This creates the source file i= ncluding the template language.
Right-click on the newly created MetaEd file in th= e tree view to the lift and click Rename.
Name the file PostSecondaryOrganization to match the na= me of the new entity to be created. Press Enter.
We'll replace the template text with the details about the resource we'r= e trying to create. Note that the blue dot on the tab f= or the open file indicates the file has been changed but the changes have n= ot been saved.
Type or copy and paste the code listing below into your MetaEd file:
Note that errors will be listed in the linter panel until the referenced= Descriptors are created in a future step.
Domain Entity PostSecondaryOrganization documentation "PostSecondaryOrganization" shared string EdFi.NameOfInstitution documentation "The name of the institution." is part of identity descriptor InstitutionLevel documentation "The level of the institution." is required descriptor InstitutionControl documentation "The type of control of the institution (i.e., public= or private)." is required bool AcceptanceIndicator documentation "An indication of acceptance." is required
We'll now create a Domain Entity source file, called StudentAcad=
emicRecordExtension, to add our new elements to the existing Stude=
nt Academic Record entity. Note that we can extend an existing entity using=
the additions
keyword (line 1 in the example below).
Domain Entity EdFi.StudentAcademicRecord additions domain entity PostSecondaryOrganization documentation "A reference to the postsecondary organization." is optional descriptor SubmissionCertification documentation "The type of submission certification." is optional common extension EdFi.ClassRanking documentation "Class Ranking Extension" is optional
2d.2. In this step, we'll extend the Class Ranking= entity to add our new Special Education Graduation Status element. The ste= ps are generally the same as the ones you used to add the domain entities a= bove.
Right-click on the extension project folder,
Right-Click on the new Common folder, select Ad=
d MetaEd File > Common. Name your new file
Similar to how you extended the Student Academic Record domain entity ab=
ove, you'll extend the Class Ranking entity with the keyword ad=
ditions
. Replace the template text in your =
new Common source file with the following code.
Common EdFi.ClassRanking additions descriptor SpecialEducationGraduationStatus documentation "The graduation status for special education." is required
2d.3. In this step, we'll add the new Ed-Fi Descri= ptor entities.
If you're new to Ed-Fi technology, it's worth understanding the Ed-Fi De= scriptor pattern because it occurs throughout the model. In essence, D= escriptors provide states, districts, vendors, and other platform hosts wit= h the flexibility to use their own enumerations and code sets. A Descriptor= is consistent within an operational context such as a single district, but= may be different in another operational context.
By now, the steps to create a new subfolder will seem familiar: = Right-click on the extension project folder and click New Folder, and name it Descriptor.
Right-click on the new Descriptor folder, select&n= bsp;Add MetaEd File > Descriptor. We''l be adding four Descriptor files in total. Name your first file = InstitutionControl.metaed.
Replace the template text in your new Descriptor source file with the fo= llowing code.
Descriptor InstitutionControl documentation "The type of control for an institution (e.g., public or = private)."
Voil=C3=A0! Almost done. Follow the steps a= bove and add the remaining three Descriptors.
Add an InstitutionLevel.metaed file.
Descriptor InstitutionLevel documentation "The typical level of postsecondary degree offered by the= institute."
Add a SpecialEducationGraduationSta= tus.metaed file.
Descriptor SpecialEducationGraduationStatus documentation "The graduation status for special education."
Add a SubmissionCertification.metae= d file.
Descriptor SubmissionCertification documentation "The type of submission certification."
2d.4. In this step, we'll add the new Interchange file.
If you want to bulk load this extension, you need to create an interchan= ge file. Right-click on the extension project folder = and click New Folder, and name it Interchange.
Right-click on the new Interchange folder, select&= nbsp;Add MetaEd File > Interchange. Name your file StudentTranscript.metaed. Rep= lace the template text in your new Interchange source file with the followi= ng code.
Interchange EdFi.StudentTranscript additions domain entity PostSecondaryOrganization
At this point, your project in the MetaEd IDE should look like the follo= wing:
In this step, we'll build our new MetaEd project. This is fairly straigh= tforward.
Click Build in the MetaEd menu to generate artifacts.
Artifacts build successfully.
You can expand the project in the tree view and click "MetaEdOutput" to = explore generated artifacts. The artifacts include technical output such as= SQL scripts and XSD used by the code generation, but also updated document= ation such as data dictionaries that add your extension definitions to the = ODS / API documentation.
We'll look at how to use this MetaEd output in your code below. First, w= e'll need to set up our extension project in Visual Studio.
This step will create the C# Extension files necessa= ry to build your extended solution. This step assumes you've successfu= lly downloaded and can run the ODS / API in a local development environment= per the instructions in the Getting Started documentation. Do that now if you haven't= already.
Visual Studio Project Templates can be installed by following steps= in Getting Started - Project Templates Installation = section of this documentation.
4b.1. To add a project to your Ed-Fi-Ods Visual St= udio Solution, right-click on the Ed-Fi Extensio= ns Folder. Select Add > New Proj= ect.
4b.2. Select the Ed-Fi API Exten= sions Project Template option. Make sure you choose Micr= osoft .NET Framework 4.8 or above. In the Name: field enter = EdFi.Ods.Extensions.SampleStudentTranscript and click= OK.
Note
To ensure MetaEd outputs are correctly deployed to ODS / API extension p= roject, the last section of the project name should match the namespace you= provided in Step 2.c with the first character upper-cased.
4c.1. Right-click on t= he Marker_EdFi_Ods_Extensions_ExtensionName.cs f= ile in newly created EdFi.Ods.Extensions.SampleStudentTranscri= pt project and Rename the file to Marker_EdFi_Od= s_Extensions_SampleStudentTranscript.cs.
4c.2. When prompted choose to rename all reference= s to the code element Marker_EdFi_Ods_Extensions_ExtensionName= .
In this step, we'll integrate the extension into the solution.
4d.1. Locate the EdFi.Ods.WebApi project, within the "Entry Points" folder. Right-cli= ck, select Add > R= eference..., then select the Ed= Fi.Ods.Extensions.SampleStudentTranscript project.
4d.2. Open the EdFi.Ods.WebApi.Startu= p.ApiStartup.cs file
First, add a line to include the SampleStud= entTranscript assembly:
using= EdFi.Ods.Extensions.SampleStudentTranscript;
Next, locate the EnsureAssemblie=
sLoaded
method in the same file and add a line for the new=
extension assembly marker to ensure it is loaded at runtime.
Assem= blyLoader.EnsureLoaded<Marker_EdFi_Ods_Extensions_SampleStudentTranscrip= t>();
4d.3. Locate any profile projects in the solution. = ;Right-click, select Add &= gt; Project Reference..., then select the&n= bsp;EdFi.Ods.Extensions.SampleStudentTranscript proje= ct. This step is needed only = if any of the Profile resources in the Profiles.xml document are extended, = or extension entities are being constrained by a particular Profile<= span style=3D"color: rgb(123,124,125);">.
In this step, we'll use the MetaEd "Deploy" feature and integrate the fi= les you've generated with the ODS / API Solution. The MetaEd IDE can deploy= the generated artifacts necessary for an ODS / API build of an extension p= roject. These include the generated SQL, generated XSD, and other material.=
You can easily configure the MetaEd IDE to copy the generated files to t= he correct locations for the ODS / API project.
Ensure that your Ed-Fi ODS / API source directory is set properly in the= MetaEd IDE settings.
Under the MetaEd menu, select Settings..., and update the "Ed-Fi ODS / API source directory" to point to the fold= er that contains the Ed-Fi-ODS and Ed-Fi-ODS-Implementation folders.
As noted above, deployment will remove existing SQL scripts =E2=80=94 in= cluding modifications to establish the authorization strategy as described = in the next step. Verify that you have a source control copy or file backup= of previous work before running deployment.
Deploy by selecting MetaEd > = Deploy from the menu bar. Click OK = ;in the confirmation dialog.
This will run a new build of all artifacts, and the artifacts required f= or your Extended ODS / API project will be copied over to the correct locat= ions.
For instructions on how to perform the steps manually, see Appendix A, below.
The Ed-Fi ODS / API is secure by default. One implication of this design= principle is that new entities and elements may not be accessed until an a= uthorization strategy is applied. This prevents accidental release of confi= dential information, but does require active steps on the part of system de= velopers to enable access to Extensions.
PostSecondaryOrganization has no relationship to people or education org= anizations and therefore has no authorization strategy that can be applied = to it. In effect, it is a standalone table and will need an authorization s= trategy of "NoFurtherAuthorizationRequired" for API requests to be made aga= inst it. If security is desired, another authorization strategy could be im= plemented to handle this entity.
To enable NoFurtherAuthorizationRequired, first create a security SQL sc= ript called 0001-PostSecondaryOrganization_No_Further_Auth_Req= uired.sql and place it in the Ed-Fi-ODS-Implementation\A= pplication\EdFi.Ods.Extensions.SampleStudentTranscript\Artifac= ts\MsSql\Data\Security folder (Create 'Security' folder if it d= oes not exist). Copy the contents of the following SQL DML script into the = newly created file and save.
DECLARE @ApplicationId INT DECLARE @SystemDescriptorsId INT=20 =20 SELECT @ApplicationId =3D ApplicationId FROM [dbo].[Applications] WHERE ApplicationName =3D 'Ed-Fi ODS API' SELECT @SystemDescriptorsId =3D resourceclaimid=20 FROM [dbo].[resourceclaims]=20 WHERE displayname =3D 'systemDescriptors'=20 INSERT INTO [dbo].[resourceclaims]=20 ([displayname],=20 [resourcename],=20 [claimname],=20 [parentresourceclaimid],=20 [application_applicationid])=20 VALUES ( 'institutionControlDescriptor',=20 'institutionControlDescriptor',=20 'http://ed-fi.org/ods/identity/claims/institutionControlDescriptor',=20 @SystemDescriptorsId,=20 @ApplicationId )=20 INSERT INTO [dbo].[resourceclaims]=20 ([displayname],=20 [resourcename],=20 [claimname],=20 [parentresourceclaimid],=20 [application_applicationid])=20 VALUES ( 'institutionLevelDescriptor',=20 'institutionLevelDescriptor',=20 'http://ed-fi.org/ods/identity/claims/institutionLevelDescrip= tor',=20 @SystemDescriptorsId,=20 @ApplicationId )=20 INSERT INTO [dbo].[resourceclaims]=20 ([displayname],=20 [resourcename],=20 [claimname],=20 [parentresourceclaimid],=20 [application_applicationid])=20 VALUES ( 'specialEducationGraduationStatusDescriptor',=20 'specialEducationGraduationStatusDescriptor',=20 'http://ed-fi.org/ods/identity/claims/specialEducationGraduationStatusDescr= iptor'=20 ,=20 @SystemDescriptorsId,=20 @ApplicationId )=20 INSERT INTO [dbo].[resourceclaims]=20 ([displayname],=20 [resourcename],=20 [claimname],=20 [parentresourceclaimid],=20 [application_applicationid])=20 VALUES ( 'submissionCertificationDescriptor',=20 'submissionCertificationDescriptor',=20 'http://ed-fi.org/ods/identity/claims/submissionCertificationDescriptor',= =20 @SystemDescriptorsId,=20 @ApplicationId )=20 =20 INSERT INTO [dbo].[ResourceClaims] ( [DisplayName] ,[ResourceName] ,[ClaimName] ,[ParentResourceClaimId] ,[Application_ApplicationId] ) VALUES ( 'postSecondaryOrganization' ,'postSecondaryOrganization' ,'http://ed-fi.org/ods/identity/claims/sample-student-transcript/postSe= condaryOrganization' ,NULL ,@ApplicationId ) =20 --Setup Authorization Strategy =20 DECLARE @AuthorizationStrategyId INT DECLARE @ResourceClaimId INT =20 SELECT @AuthorizationStrategyId =3D AuthorizationStrategyId FROM AuthorizationStrategies WHERE AuthorizationStrategyName =3D 'NoFurtherAuthorizationRequired' =20 SELECT @ResourceClaimId =3D resourceclaimid FROM ResourceClaims WHERE ResourceName =3D 'postSecondaryOrganization' =20 INSERT INTO ResourceClaimAuthorizationMetadatas SELECT ActionId ,@AuthorizationStrategyId ,@ResourceClaimId ,NULL FROM Actions a WHERE NOT EXISTS ( SELECT 1 FROM ResourceClaimAuthorizationMetadatas WHERE Action_ActionId =3D a.ActionId AND AuthorizationStrategy_AuthorizationStrategyId =3D @Authoriz= ationStrategyId AND ResourceClaim_ResourceClaimId =3D @ResourceClaimId ) =20 --Add to SIS Vendor and Ed-Fi Sandbox claim sets INSERT INTO [dbo].[ClaimSetResourceClaims] SELECT [ActionId] ,[ClaimSetId] ,[ResourceClaimId] ,NULL ,NULL FROM Actions a ,ClaimSets c ,ResourceClaims r WHERE r.ResourceName =3D 'postSecondaryOrganization' AND ( c.ClaimSetName =3D 'SIS Vendor' OR c.ClaimSetName =3D 'Ed-Fi Sandbox' ) AND NOT EXISTS ( SELECT 1 FROM ClaimSetResourceClaims WHERE Action_ActionId =3D a.ActionId AND ClaimSet_ClaimSetId =3D c.ClaimSetId AND ResourceClaim_ResourceClaimId =3D r.ResourceClaimId )
With MetaEd 2.x, it is possible to create extension resources that use t= he same name as an Ed-Fi standard resource. The authorization metadata supp= orts this through a change in behavior so it no longer uses just the resour= ce name to identify the resource, but instead uses the ClaimName. To preven= t possible naming conflicts, the claim name's URI value should include the = schema representation, using the following format:
http://ed-fi.org/ods/identity/claims/{schema}/{resourceName}
The URI representation of the schema name should be derived by splitting= the terms in the name of the extension, inserting hyphens and converting t= o lower case. For example, "SampleStudentTranscript" would be separated int= o "Sample", "Student" and "Transcript" and then combined with hyphens and c= onverted to lower case as "sample-student-transcript".
The resource name should be the camel-cased (also known as "medial capit= als"), singularized name of the resource (e.g., "postSecondaryOrganization"= not "PostSecondaryOrganization" or "postSecondaryOrganizations").
Note that in 0001-PostSecondaryOrganization_No_Further_Auth_Require= d.sql script above, the resulting ClaimName value is "http://ed-fi.org/ods/identity/claims/sample-student-transcript/= postSecondaryOrganization".
Save all modified files, close Ed-Fi-ODS.sln, and re-run the code genera=
tion steps outlined in the Getting Started Guide (i.e., from a Po=
werShell prompt run Initialize-PowershellForDevelopment.ps
script, followed by the initdev
command). The=
n, run the application and view the Ed-Fi ODS / API in the Swagger UI.=
The new postSecondaryOrganizations API resource should be visible, as we= ll as the postSecondaryOrganizationReference in = the studentAcademicRecord resource.
Congratulations, you've successfully extended an instance of the Ed-Fi O= DS / API.
The Ed-Fi Extension in this example is fairly simple. It's a good place = to start, but most enterprise users have more complicated needs. The MetaEd Cookbook&nb= sp;documentation provides excellent additional examples of common scenarios= , from the simple to very complex.
Visual Studio Project Templates can be installed by following steps= in Getting Started - Project Templates Installation = section of this documentation.
2.1. To add a project to your Ed-Fi-Ods Visual Stu= dio Solution, right-click on the Ed-Fi Extension= s Folder. Select Add > New Proje= ct.
2.2. Select the Ed-Fi API Extensions =
Project Template option. Make sure you choose Microsoft =
.NET Framework 4.8 or above. In the Name: field enter
3.1. Right-click on th= e Marker_EdFi_Ods_Extensions_ExtensionName.cs fi= le in newly created EdFi.Ods.Extensions.SampleStudentTranscrip= t project and Rename the file to Marker_EdFi_Ods= _Extensions_SampleStudentTranscript.cs.
3.2. When prompted choose to rename all references= to the code element Marker_EdFi_Ods_Extensions_ExtensionName<= /strong>.
In this step, we'll integrate the extension into the solution.
4.1. Locate the EdFi.Ods.WebApi project, within the "Entry Points" folder. Right-clic= k, select Add > Re= ference..., then select the EdF= i.Ods.Extensions.SampleStudentTranscript project.
4.2 Open the EdFi.Ods.WebApi.Startup.ApiStartup.cs file.
First, add a line to include the SampleStudentTranscript assembly:<= /p>
using= EdFi.Ods.Extensions.SampleStudentTranscript;
Next, locate the EnsureAssembliesLoaded
method in=
the same file and add a line for the new extension assembly marker to=
ensure it is loaded at runtime.
Assem= blyLoader.EnsureLoaded<Marker_EdFi_Ods_Extensions_SampleStudentTranscrip= t>();
4.3. Locate any profile projects in the solution. =
Right-click, select Add &g=
t; Project Reference..., then select the&nb=
sp;EdFi.Ods.Extensions.SampleStudentTranscript projec=
t. This step is needed only i=
f any of the Profile resources in the Profiles.xml document are extended, o=
r extension entities are being constrained by a particular Profile.
If you chose to generate Extension artifacts manually, copy them to = ;Artifacts folder of Extension project you created in the previous step. Fo= r the purpose of this example we can use MetatEd Generated Extension Artifa= cts from the Download section.
Open command prompt and navigate to root of the ODS / API repository on = your local drive. This is the folder that contains both Ed-Fi-ODS and&= nbsp;Ed-Fi-ODS-Implementation repositories. Run the following copy commands= :
xcopy= /y "Ed-Fi-ODS\Samples\Extensions\StudentTranscript\StudentTranscriptMetaEd= \MetaEdOutput\SampleStudentTranscript\Database\SQLServer\ODS\Structure" "Ed= -Fi-ODS-Implementation\Application\EdFi.Ods.Extensions.SampleStudentTranscr= ipt\Artifacts\MsSql\Structure\Ods\*" =20 xcopy /y "Ed-Fi-ODS\Samples\Extensions\StudentTranscript\StudentTranscriptM= etaEd\MetaEdOutput\SampleStudentTranscript\ApiMetadata" "Ed-Fi-ODS-Implemen= tation\Application\EdFi.Ods.Extensions.SampleStudentTranscript\Artifacts\Me= tadata\*" =20 xcopy /y "Ed-Fi-ODS\Samples\Extensions\StudentTranscript\StudentTranscriptM= etaEd\MetaEdOutput\SampleStudentTranscript\XSD" "Ed-Fi-ODS-Implementation\A= pplication\EdFi.Ods.Extensions.SampleStudentTranscript\Artifacts\Schemas\*" =20 xcopy /y "Ed-Fi-ODS\Samples\Extensions\StudentTranscript\StudentTranscriptM= etaEd\MetaEdOutput\SampleStudentTranscript\Interchange" "Ed-Fi-ODS-Implemen= tation\Application\EdFi.Ods.Extensions.SampleStudentTranscript\Artifacts\Sc= hemas\*"
The Ed-Fi ODS / API is secure by default. One implication of this design= principle is that new entities and elements may not be accessed until an a= uthorization strategy is applied. This prevents accidental release of confi= dential information, but does require active steps on the part of system de= velopers to enable access to Extensions.
PostSecondaryOrganization has no relationship to people or education org= anizations and therefore has no authorization strategy that can be applied = to it. It is in effect a standalone table and will need an authorization st= rategy of "NoFurtherAuthorizationRequired" for API requests to be made agai= nst it. If security is desired, another authorization strategy could be imp= lemented to handle this entity.
To enable NoFurtherAuthorizationRequired, first create a security SQL sc= ript called 0001-PostSecondaryOrganization_No_Further_Auth_Req= uired.sql and place it in the C:\Ed-Fi-ODS-= Implementation\Artifacts\MsSql\Data\Security folder (Create 'Se= curity' folder if it does not exist). Copy the contents of the following SQ= L DML script into the newly created file and save.
DECLARE @ApplicationId INT SELECT @ApplicationId =3D ApplicationId FROM [dbo].[Applications] WHERE ApplicationName =3D 'Ed-Fi ODS API' INSERT INTO [dbo].[ResourceClaims] ( =09[DisplayName] =09,[ResourceName] =09,[ClaimName] =09,[ParentResourceClaimId] =09,[Application_ApplicationId] =09) VALUES ( =09'postSecondaryOrganization' =09,'postSecondaryOrganization' =09,'http://ed-fi.org/ods/identity/claims/sample-student-transcript/postSec= ondaryOrganization' =09,NULL =09,@ApplicationId =09) --Setup Authorization Strategy DECLARE @AuthorizationStrategyId INT DECLARE @ResourceClaimId INT SELECT @AuthorizationStrategyId =3D AuthorizationStrategyId FROM AuthorizationStrategies WHERE AuthorizationStrategyName =3D 'NoFurtherAuthorizationRequired' SELECT @ResourceClaimId =3D resourceclaimid FROM ResourceClaims WHERE ResourceName =3D 'postSecondaryOrganization' INSERT INTO ResourceClaimAuthorizationMetadatas SELECT ActionId =09,@AuthorizationStrategyId =09,@ResourceClaimId =09,NULL FROM Actions a WHERE NOT EXISTS ( =09=09SELECT 1 =09=09FROM ResourceClaimAuthorizationMetadatas =09=09WHERE Action_ActionId =3D a.ActionId =09=09=09AND AuthorizationStrategy_AuthorizationStrategyId =3D @Authorizati= onStrategyId =09=09=09AND ResourceClaim_ResourceClaimId =3D @ResourceClaimId =09=09) --Add to SIS Vendor and Ed-Fi Sandbox claim sets INSERT INTO [dbo].[ClaimSetResourceClaims] SELECT [ActionId] =09,[ClaimSetId] =09,[ResourceClaimId] =09,NULL =09,NULL FROM Actions a =09,ClaimSets c =09,ResourceClaims r WHERE r.ResourceName =3D 'postSecondaryOrganization' =09AND ( =09=09c.ClaimSetName =3D 'SIS Vendor' =09=09OR c.ClaimSetName =3D 'Ed-Fi Sandbox' =09=09) =09AND NOT EXISTS ( =09=09SELECT 1 =09=09FROM ClaimSetResourceClaims =09=09WHERE Action_ActionId =3D a.ActionId =09=09=09AND ClaimSet_ClaimSetId =3D c.ClaimSetId =09=09=09AND ResourceClaim_ResourceClaimId =3D r.ResourceClaimId =09=09)
Save all modified files, close Ed-Fi-ODS.sln, and re-run the code genera=
tion steps outlined in the Getting Started Guide (i.e., from a Po=
werShell prompt run Initialize-PowershellForDevelopment.ps
script, followed by the initdev
command). The=
n, run the application and view the Ed-Fi ODS / API in the Swagger UI.=
The following new API resource should be visible:
The following GitHub links contain source files for this extensibility s= ample.