diff --git a/docs/tutorials/API_Related/CAOS_SOAP_API/CAOS_with_CAI.md b/docs/tutorials/API_Related/CAOS_SOAP_API/CAOS_with_CAI.md index 1cdeafc94a98cb0cfdb27f716094b94461f5b917..25100fb406302924e33519e4fdcc2b455db23831 100644 --- a/docs/tutorials/API_Related/CAOS_SOAP_API/CAOS_with_CAI.md +++ b/docs/tutorials/API_Related/CAOS_SOAP_API/CAOS_with_CAI.md @@ -4,13 +4,15 @@ Another thing to consider is that setting up an integration to [consume CAOS data is much easier in CDI](docs/tutorials/API_Related/CAOS_SOAP_API/CAOS_with_CDI.md). If you are receiving real-time updates with Webhooks or another messaging service through CAI, you can add a call to a CDI Taskflow or Mapping Task within the CAI Process. In order to do this, you will need to add the [CAI Anonymous User](https://docs.informatica.com/cloud-common-services/administrator/current-version/user-administration/users/application-integration-anonymous-user.html) to the permissions on your CDI objects. +**We recommend that this CAI route be explored only by experienced IICS users or with close consultation with the [Integration Team](mailto:integration-platform@doit.wisc.edu).** + ## Cloud Application Integration The steps for setting up a Process in CAI are as follows: -1) Create Service Connector +1) Create a Service Connector. - For CAOS, you will need to download the .wsdl file instead of refer to the URL, due to the URL only being accessible if your IP is whitelisted. -2) Create an App Connection and refer it to the Service Connector we created in step 1. +2) Create an App Connection and refer it to the Service Connector created in step 1. 3) Create a Process and add a step within it that uses the App Connection that refers to the Service Connector.  diff --git a/docs/tutorials/API_Related/CAOS_SOAP_API/CAOS_with_CDI.md b/docs/tutorials/API_Related/CAOS_SOAP_API/CAOS_with_CDI.md index e9fe5959a44e039b72d4259566ef68c6ac0ed9f9..0404914ef400cc21de86f6101f44925eb978b7ae 100644 --- a/docs/tutorials/API_Related/CAOS_SOAP_API/CAOS_with_CDI.md +++ b/docs/tutorials/API_Related/CAOS_SOAP_API/CAOS_with_CDI.md @@ -1,21 +1,23 @@ # Consuming CAOS data with Cloud Data Integration -[CAOS](https://kb.wisc.edu/registrar/page.php?id=11753) (Curricular and Academic Web Services) is a SOAP API, organized primarily by curricular data. We can retrieve person data if we have specific person identifiers, or we can retrieve curricular data like Programs, Classes, and Subjects. It is easiest to approach consuming CAOS data with a clear idea of what you need and identifiers for requesting it. +[CAOS](https://kb.wisc.edu/registrar/page.php?id=11753) (Curricular and Academic Web Services) is a SOAP API, organized primarily by curricular data. We can retrieve a person's curricular data if we have specific person identifiers, or we can retrieve curricular data like Programs, Classes, and Subjects. It is easiest to approach consuming CAOS data with a clear idea of what elements you are seeking and the identifiers required for requesting it. + +It is important to keep in mind while making your SOAP API mapping that IICS cannot use a SOAP API as a starting Source. It's a mid-stream Web Services source only. This is understandable because we need to provide the SOAP API information in order to retrieve data (for example, giving a person's PVI or NetID to retrieve their graduation date). ## Prerequesites * [Authorization](https://kb.wisc.edu/19278) and credentials for using CAOS. -* [SoapUI](https://git.doit.wisc.edu/road/documentation/-/blob/main/caos/setting-up-caos-soap-ui.md) set up for assisting with navigating CAOS to figure out the data elements you'd like and where they live within the responses you receive. +* [SoapUI](https://git.doit.wisc.edu/road/documentation/-/blob/main/caos/setting-up-caos-soap-ui.md) set up for assisting with navigating CAOS to figure out the data elements you'd like and where they live within the xml responses you receive. ## Exploring SoapUI and the CAOS XML Tree -Once you have SoapUI installed and have CAOS added to it, we can explore the request options and their requirements for the API in a human-readable format. This is a convenient and organized structure that we highly recommend. Below we have an example of how to view the requests and requirements needed to receive a student's data from the TEST CAOS environment. We did not pick a specific student, but we want to show the response structure. +Once you have SoapUI installed and have CAOS added to it, we can explore the request options and their requirements for the API in a human-readable format. This is a convenient and organized structure that we highly recommend. Below we have an example of how to view the requests and requirements needed to receive a student's data from the TEST CAOS environment. -First, we formulate a GetStudentEmplidsEnrolledInTerm. For this request, we need to provide a [term code](https://businessservices.wisc.edu/making-payments/charge-to-a-students-account/term-codes/). +First, we formulate a GetStudentEmplidsEnrolledInTerm. For this request, we need to provide a [term code](https://businessservices.wisc.edu/making-payments/charge-to-a-students-account/term-codes/). We are making this request to grab a random test student's emplid for a future request.  -From here, we can formulate a GetStudents request. In the image below, you can see that we can formulate this in many different ways. If we want specific students, we can use one of their four identifiers (emplid, pvi, netid, or campusid). If we would like to get all students from a specific program, we would need the program code as well as the term code. In addition to this, we can include a [Student Data Option](https://git.doit.wisc.edu/road/documentation/-/blob/main/caos/caos-user-guide.md#getstudents-options) to provide specific information that's not provided with the base return. +From here, we can formulate a GetStudents request. In the image below, you can see that we can formulate this in many different ways. If we want specific students, we can use one of their four identifiers (emplid, pvi, netid, or campusid). If we would like to get all students from a specific program, we would need the program or plan code as well as the term code. In addition to this, we can include a [Student Data Option](https://git.doit.wisc.edu/road/documentation/-/blob/main/caos/caos-user-guide.md#getstudents-options) to provide specific information that's not provided with the base return.  @@ -49,7 +51,7 @@ Since GetStudents requires information from us to send a request, we need to fur  -For our scenario, we will be requesting student data with a list of emplids. To set up our mapping, we have created a .csv in an AWS S3 bucket to use as a source. We used the GetStudentEmplidsEnrolledInTerm request with SoapUI to generate a list of emplids in term 1254. The .csv contains 9 random emplids from the response from the TEST CAOS API. +For our scenario, we will be requesting student data with a list of emplids. To set up our mapping, we have created a .csv in an AWS S3 bucket to use as a source. We used the GetStudentEmplidsEnrolledInTerm request with SoapUI to generate a list of emplids in term 1254. The .csv contains several random emplids from the response from the TEST CAOS API. Our mapping looks like this: @@ -67,11 +69,11 @@ The third tile is the heart of this integration. This is a Web Services Transfor  -In the Response Mapping section of the Web Services transformation, we can see the entire schema for a GetStudents call with every one of the Student Data Options. Select the data elements you need and that you know are returned with your request option. If you need multiple Student Data Options, you will need multiple Web Services Transformation tiles to make additional requests to CAOS because only one option can be sent per request. +In the Response Mapping section of the Web Services transformation, we can see the entire schema for a GetStudents call with every one of the Student Data Options. Select the data elements you need and that you know are returned with your request option. If you need multiple Student Data Options, you will need multiple Web Services Transformation tiles to make additional requests to CAOS because only one option can be sent per request within IICS (but multiple options are possible with SoapUI).  -In the screenshot above, you will notice in the Output Fields two groups: FaultGroup and student. One contains the data elements we selected from the xml tree and the other contains data in the case we receive an error from the API. IICS requires we capture each in separate target files, therefore we have two targets in our mapping. In our mapping we have these configured to deliver to the same S3 bucket as our Source, creating new files at runtime and named uniquely. If you see three Output groups, you may want to change "Relational" to "Denormalized" so that all of your returned data is sent to the same target. +In the screenshot above, you will notice in the Output Fields two groups: FaultGroup and student. One contains the data elements we selected from the xml tree and the other contains data in the case we receive an error from the API. IICS requires we capture each in separate target files, therefore we have two targets in our mapping. We have these configured to deliver to the same S3 bucket as our Source, creating new files at runtime and named uniquely. If you see three Output groups, you may want to change "Relational" to "Denormalized" so that all of your returned data is sent to the same target. 