---Presenter: Eric WeatherSubject: How to Set Up an ERP Integration ServiceDuration: 00:18:51---00:00:05.800 --> 00:00:09.765 - In this video, we're going to be talking about and showing how to 00:00:09.765 --> 00:00:13.730 - set up the ERP integration service. So if we go take a look 00:00:13.730 --> 00:00:16.170 - here at our integration service training integration service 00:00:16.170 --> 00:00:20.920 - right now. We have a lot of constructors and we have a 00:00:20.920 --> 00:00:23.584 - basically not implemented requests or methods here, so 00:00:23.584 --> 00:00:28.246 - we're going to be showing how to set up the list request and also 00:00:28.246 --> 00:00:32.908 - how to set up the HTTP client to accept this here. So the first 00:00:32.908 --> 00:00:37.237 - thing we do is we're going to add our HTTP client to our 00:00:37.237 --> 00:00:41.172 - services container. So the first thing we're going to go 00:00:41.172 --> 00:00:44.580 - do is we're going to go look in our clarity, connects project 00:00:44.580 --> 00:00:47.704 - in our service extensions in our HTTP extensions. OK, so in 00:00:47.704 --> 00:00:51.964 - here you can see a sample of how you would set up a set for 00:00:51.964 --> 00:00:55.088 - quest and ultimately just kind of uncommon. Sing this for a 00:00:55.088 --> 00:00:56.224 - set request would would. 00:00:58.090 --> 00:01:01.246 - Be basically all you need for that, but we're not setting up 00:01:01.246 --> 00:01:04.139 - stuff. We're setting up access to this training year P so. 00:01:04.700 --> 00:01:07.810 - We're going to call our services and we're going to 00:01:07.810 --> 00:01:08.743 - add HTTP client. 00:01:11.580 --> 00:01:11.960 - OK. 00:01:13.740 --> 00:01:17.150 - We're going to add this HTTP client of the name of. 00:01:18.360 --> 00:01:21.410 - Our training. Integration service. 00:01:24.740 --> 00:01:27.341 - And we're going to use our clarity training services 00:01:27.341 --> 00:01:28.497 - clarity dot training dot 00:01:28.497 --> 00:01:32.290 - services OK. So the next thing, the next parameter 00:01:32.290 --> 00:01:35.440 - that HTTP client takes in an we specifically use 00:01:35.440 --> 00:01:38.940 - is. Let's see if we can find it really quickly. 00:01:43.280 --> 00:01:45.900 - Believe it is this one. 00:01:48.940 --> 00:01:52.614 - Yeah it is going to be the action of ice service 00:01:52.614 --> 00:01:55.620 - provider and then the HTTP client and then they 00:01:55.620 --> 00:01:59.628 - configure client. OK. So this is going to take in a SP. 00:02:01.240 --> 00:02:03.760 - Oops, sorry and then the HTTP client. 00:02:07.150 --> 00:02:10.942 - And then we're going to add. First of all, we need our 00:02:10.942 --> 00:02:14.418 - options. So remember before in our options video we added our 00:02:14.418 --> 00:02:17.262 - training options here of our URL, username and password. 00:02:17.262 --> 00:02:21.370 - Right now all we need for the training API is the URL. We 00:02:21.370 --> 00:02:24.530 - don't need to set up the username and password because 00:02:24.530 --> 00:02:27.374 - we're not authenticating currently on the Web API, but 00:02:27.374 --> 00:02:30.850 - you can see how to do that here on the authentication. 00:02:30.850 --> 00:02:34.010 - Specifically for Seth. There are other ways to authenticate if 00:02:34.010 --> 00:02:37.802 - you need to use oauth off to any kind of other other 00:02:37.802 --> 00:02:40.349 - authentication. That requires values. You can definitely look 00:02:40.349 --> 00:02:44.647 - up on stack overflow or MSDN. How you would set up the ad HTTP 00:02:44.647 --> 00:02:47.717 - client for those specific types of authentication. For now, we 00:02:47.717 --> 00:02:51.401 - don't even have authentication, so we're just going to set up a 00:02:51.401 --> 00:02:55.392 - very basic HTTP client. So the first thing we do is we're going 00:02:55.392 --> 00:02:57.234 - to get our options from our 00:02:57.234 --> 00:03:02.030 - service container. So we're going to do options equals SP 00:03:02.030 --> 00:03:03.650 - dot git required service. 00:03:04.460 --> 00:03:06.010 - I options. 00:03:07.280 --> 00:03:10.060 - And it's going to be of type training options. We 00:03:10.060 --> 00:03:11.450 - have to add our reference. 00:03:12.540 --> 00:03:14.612 - And then we also have to add 00:03:14.612 --> 00:03:16.728 - our. Using Microsoft extensions. 00:03:17.470 --> 00:03:21.377 - OK. That is going to be our options. OK, let's go ahead 00:03:21.377 --> 00:03:24.314 - and add are semicolon down here just so it stops yelling 00:03:24.314 --> 00:03:28.319 - at us. OK, so the first thing that we need to set up is our 00:03:28.319 --> 00:03:30.722 - base address for our HTTP requests are HTTP requests 00:03:30.722 --> 00:03:33.392 - requires our base address, so we're going to HTTP clients. 00:03:34.950 --> 00:03:36.309 - Dot base address. 00:03:36.830 --> 00:03:39.008 - Is going to be equal to a new Uri? 00:03:40.970 --> 00:03:43.478 - Of our options value. 00:03:44.350 --> 00:03:45.820 - 'cause we need the value of 00:03:45.820 --> 00:03:48.220 - those options. And then our URL. 00:03:51.460 --> 00:03:54.268 - I think another way we can do this and let's just take it. 00:03:54.268 --> 00:03:57.508 - Just take a look here so we can do a dot value here and then. 00:03:58.670 --> 00:04:02.206 - Can we do it that way? Yeah, it's happy that way too. So 00:04:02.206 --> 00:04:05.198 - similarly way before we did it before of our options extension 00:04:05.198 --> 00:04:08.190 - where we're setting or adding our Singleton of the value. So 00:04:08.190 --> 00:04:11.182 - all we have to do is call training settings dot process 00:04:11.182 --> 00:04:13.902 - instead of Cron settings dot value dot. It's physically the 00:04:13.902 --> 00:04:16.894 - actual value that we're passing in, so we're doing the same 00:04:16.894 --> 00:04:19.614 - thing here. We're setting the value and then we're just 00:04:19.614 --> 00:04:20.702 - saying options dot URL. 00:04:22.360 --> 00:04:25.560 - We're setting it's our base address, so now whenever we 00:04:25.560 --> 00:04:26.520 - call, whenever we. 00:04:27.810 --> 00:04:31.410 - Inject a new HTTP client factory into our integration options, 00:04:31.410 --> 00:04:35.370 - and we call specifically for the training options one or the 00:04:35.370 --> 00:04:38.610 - training integration service one. It's going to use this 00:04:38.610 --> 00:04:43.290 - action to create a new version of it with the space address, so 00:04:43.290 --> 00:04:47.250 - we're always going to have this URL for our base address. 00:04:49.920 --> 00:04:53.882 - OK, so the next thing we're going to do is we're going to go 00:04:53.882 --> 00:04:56.712 - over to our training integration service and we're going to. 00:04:56.712 --> 00:04:59.259 - We're going to change these constructors, so we're just 00:04:59.259 --> 00:05:00.674 - going to use one constructor 00:05:00.674 --> 00:05:03.514 - here. So I'm going to get rid of these. 00:05:04.590 --> 00:05:07.398 - You can look at these and say OK, I need to you. I 00:05:07.398 --> 00:05:09.774 - need to basically use this one and change it a little 00:05:09.774 --> 00:05:11.502 - bit. I'm going to start from scratch here. 00:05:12.670 --> 00:05:15.988 - So because I'm going to have a very basic one, so I'm going to 00:05:15.988 --> 00:05:18.810 - do a public. Training integration service. 00:05:19.840 --> 00:05:20.210 - OK. 00:05:21.480 --> 00:05:25.640 - The parameter that we're taking in Isaiah HTTP. 00:05:26.590 --> 00:05:28.760 - Client. Factory. 00:05:31.260 --> 00:05:33.100 - Told HTTP client factory. 00:05:34.620 --> 00:05:39.660 - OK, so this is going to try and say that we need to use 00:05:39.660 --> 00:05:43.620 - system.net dot HTTP. We don't need, we don't. We're not using 00:05:43.620 --> 00:05:47.220 - that one specifically in. The problem with this, and the 00:05:47.220 --> 00:05:51.540 - reason why we're not using this one specifically is that this is 00:05:51.540 --> 00:05:54.420 - coming from dependency injection. This is not simply 00:05:54.420 --> 00:05:59.100 - just a HTTPS or system.net at HTTP, so we need to actually go 00:05:59.100 --> 00:06:03.420 - to our training dot services project and we're going to add a 00:06:03.420 --> 00:06:04.860 - manage new get packages. 00:06:05.570 --> 00:06:08.890 - And we're going to go at a reference to Microsoft. 00:06:10.260 --> 00:06:13.095 - Dot extensions and I have it already here, but 00:06:13.095 --> 00:06:14.040 - extensions dot HTTP. 00:06:15.660 --> 00:06:19.470 - OK. I already have it so. 00:06:21.100 --> 00:06:24.340 - I don't have to reinstall it, but you want to install two 00:06:24.340 --> 00:06:28.511 - point 2.0. If you don't already have it, it's possible it's 00:06:28.511 --> 00:06:32.240 - already have it. So if you go back to your training 00:06:32.240 --> 00:06:35.630 - integration service, we're going to go ahead and add the 00:06:35.630 --> 00:06:39.020 - reference to this, and then if you have it installed 00:06:39.020 --> 00:06:41.732 - everything, everything resolves and it's fine. Otherwise, you're 00:06:41.732 --> 00:06:46.139 - going to get this underscore and be like why since I have this 00:06:46.139 --> 00:06:49.868 - this not work, it's because it needs. It also requires that 00:06:49.868 --> 00:06:53.258 - Microsoft dot extensions dot HTTP or I'm sorry Microsoft dot 00:06:53.258 --> 00:06:55.292 - extensions dot HTTP so that it 00:06:55.292 --> 00:06:59.122 - can. Use the dependency injection version and then sorry 00:06:59.122 --> 00:07:00.838 - in our constructor here. 00:07:01.770 --> 00:07:03.492 - We're going to go ahead an up 00:07:03.492 --> 00:07:09.593 - here. Um, do a private readonly of an HTTP client. 00:07:11.750 --> 00:07:15.620 - And we're going to call this underscore HTTP client. 00:07:18.160 --> 00:07:20.008 - Alright, so now we can set it here. 00:07:25.220 --> 00:07:28.608 - So remember all we're passing here is the client factory. We 00:07:28.608 --> 00:07:31.996 - need a specific version of from the client factory, so we're 00:07:31.996 --> 00:07:34.152 - going to do a dot create client. 00:07:34.980 --> 00:07:37.800 - We're going to create the client based off of the 00:07:37.800 --> 00:07:40.902 - training integration service, so we need to give it the name 00:07:40.902 --> 00:07:42.030 - of training integration service. 00:07:44.780 --> 00:07:48.760 - So now we have an instance of the training integration 00:07:48.760 --> 00:07:51.270 - service. HTTP client. 00:07:52.640 --> 00:07:57.574 - And we've set that here. OK, so now we can go implement our list 00:07:57.574 --> 00:08:01.380 - request because that's what we've been doing in our in our 00:08:01.380 --> 00:08:02.418 - example that is. 00:08:03.750 --> 00:08:04.520 - OK. 00:08:05.650 --> 00:08:09.043 - So we're going to add a couple things here. So the first thing 00:08:09.043 --> 00:08:12.175 - we're going to try catch around this, because we don't want the 00:08:12.175 --> 00:08:15.568 - job to just fail delete. Well, I'm sorry, we don't want the job 00:08:15.568 --> 00:08:18.439 - to just stop and delete, because that's ultimately what hang fire 00:08:18.439 --> 00:08:21.571 - does if we're not catching these properly. So, and we also want 00:08:21.571 --> 00:08:24.964 - to know what our error is. So the first thing that we're going 00:08:24.964 --> 00:08:29.478 - to do. Is we are going to do a try? 00:08:31.230 --> 00:08:33.134 - And then we're going to do a. 00:08:34.810 --> 00:08:35.960 - Catch 00:08:37.010 --> 00:08:39.926 - Going to catch the exception X. 00:08:42.440 --> 00:08:45.176 - And right here we're just going to throw because we want this. 00:08:45.176 --> 00:08:47.912 - We went this job to fail. We can handle whatever the messages 00:08:47.912 --> 00:08:51.104 - later and we can take him. You know, we can do whatever we want 00:08:51.104 --> 00:08:53.612 - with that. We can do a response or response string, whatever. 00:08:53.612 --> 00:08:56.576 - But for now, we're just going to throw. OK, so the first thing 00:08:56.576 --> 00:08:59.768 - you want to do is we just want to make sure. Double check that 00:08:59.768 --> 00:09:01.364 - once we get to this point, have 00:09:01.364 --> 00:09:05.680 - we? Um, done our requests in our request handlers properly. So, 00:09:05.680 --> 00:09:09.904 - just in case there's not some list method being called in a 00:09:09.904 --> 00:09:11.312 - random create handler, so. 00:09:12.260 --> 00:09:13.886 - We're going to do a if. 00:09:14.430 --> 00:09:15.240 - Not. 00:09:16.660 --> 00:09:18.960 - If not, request is list. 00:09:19.820 --> 00:09:20.590 - Request 00:09:23.910 --> 00:09:28.010 - We're going to add are using clarity training that requests. 00:09:29.250 --> 00:09:31.898 - Of whatever our type is, so T model. 00:09:34.500 --> 00:09:38.076 - If it is, then we want that to be called list requests. 00:09:40.990 --> 00:09:43.942 - This is double checking so we have access to this list request 00:09:43.942 --> 00:09:47.140 - later. If it is not a list request then we want to throw. 00:09:47.670 --> 00:09:50.058 - A new groups. 00:09:50.770 --> 00:09:53.362 - Arguments exception and we're just going to call 00:09:53.362 --> 00:09:54.334 - this invalid request. 00:09:57.530 --> 00:10:00.582 - OK, so now that we know that this is a list request, we can 00:10:00.582 --> 00:10:03.416 - start building are you are I and start building a request. So the 00:10:03.416 --> 00:10:06.250 - first thing we do is we're going to give ourselves a request for 00:10:06.250 --> 00:10:09.302 - request. You are I and this is going to be in this case very 00:10:09.302 --> 00:10:10.820 - simple. Um? 00:10:14.180 --> 00:10:17.001 - Uh, this is just going to be 00:10:17.001 --> 00:10:20.285 - the. HTTP client base 00:10:20.285 --> 00:10:23.978 - address. And we set that earlier. Remember when we 00:10:23.978 --> 00:10:25.980 - did our extension for our HTTP extension? 00:10:27.120 --> 00:10:29.878 - And then it's going to be slash. 00:10:30.870 --> 00:10:32.310 - Our list requests. 00:10:35.840 --> 00:10:37.500 - Dot table. 00:10:39.660 --> 00:10:44.964 - Because in our web Web API, it's the base address slash API, but 00:10:44.964 --> 00:10:47.820 - if we remember on our URL that 00:10:47.820 --> 00:10:53.576 - we set. In here, let's go to our app settings. 00:10:55.300 --> 00:10:59.392 - We already appended the slash API, so we don't need to put 00:10:59.392 --> 00:11:02.802 - that on our training integration service, so we already have 00:11:02.802 --> 00:11:05.189 - slash API. Now we're going to do 00:11:05.189 --> 00:11:08.870 - slash products. OK. 00:11:10.280 --> 00:11:14.606 - So now we have our request. You are I. So now we're going to 00:11:14.606 --> 00:11:17.696 - instantiate our list model. The reason we're doing this here 00:11:17.696 --> 00:11:21.095 - instead of just returning it later is some ER peas, and 00:11:21.095 --> 00:11:24.185 - potentially this one. Later down the road need to paginate 00:11:24.185 --> 00:11:27.893 - things. So let's say we make a request for compare date. That 00:11:27.893 --> 00:11:31.601 - was three weeks ago and there are 500 products that need to 00:11:31.601 --> 00:11:33.146 - come back, but they paginate 00:11:33.146 --> 00:11:37.396 - them by 100. What we need some way of looping through here 00:11:37.396 --> 00:11:40.564 - later and adding to it an updating it, so we're going to 00:11:40.564 --> 00:11:42.412 - do is we're going to give our 00:11:42.412 --> 00:11:48.845 - var ret Val. Equals new list of T Model Loops. 00:11:49.350 --> 00:11:51.750 - New list. 00:11:53.280 --> 00:11:56.490 - Of T model. 00:12:00.250 --> 00:12:00.710 - OK. 00:12:01.980 --> 00:12:05.670 - Now we have now we can add to this and if we need to iterate 00:12:05.670 --> 00:12:08.376 - through several times until we have all 500 however many of 00:12:08.376 --> 00:12:11.820 - them, now we can just use the add range and then we can change 00:12:11.820 --> 00:12:14.772 - it to an array later. So we're going to do our using. 00:12:15.950 --> 00:12:16.670 - Oh, goodness. 00:12:17.910 --> 00:12:23.448 - Using. Um bar response equals alright. Here's we're going to 00:12:23.448 --> 00:12:29.232 - make our target call, so we're going to do a weight HTTP 00:12:29.232 --> 00:12:31.160 - clients dot get async. 00:12:32.760 --> 00:12:36.335 - Get async requires the string of the Uri, so in this case we're 00:12:36.335 --> 00:12:37.985 - going to request you are I. 00:12:39.150 --> 00:12:43.272 - And then we need to pass in a token. 00:12:44.530 --> 00:12:47.818 - So that if we have cancelled the job, it doesn't send their 00:12:47.818 --> 00:12:49.188 - requests and it just cancels. 00:12:50.440 --> 00:12:53.077 - So we're going to call doc configure await false. 00:12:55.240 --> 00:12:57.515 - And then we will use our response. 00:12:58.790 --> 00:12:59.960 - And see why doesn't like that. 00:13:00.660 --> 00:13:03.819 - The wait operation will be used then. Lacing method I need to go 00:13:03.819 --> 00:13:07.221 - change this to a sink so you'll do that for all of these here. 00:13:08.690 --> 00:13:13.550 - OK, so now inside our brains are braces. Here we're going to 00:13:13.550 --> 00:13:18.005 - check our response string, so we're going to have our response 00:13:18.005 --> 00:13:22.055 - string equals await response. The response that we just got 00:13:22.055 --> 00:13:23.270 - from the call? 00:13:24.300 --> 00:13:26.973 - We're going to take the content and we're going 00:13:26.973 --> 00:13:28.458 - to read as string async. 00:13:30.900 --> 00:13:32.880 - Configure await false as normal. 00:13:33.470 --> 00:13:37.617 - OK, so now we have our actual string of our response from our 00:13:37.617 --> 00:13:41.764 - content. So now the first thing we're going to do is we're going 00:13:41.764 --> 00:13:46.270 - to. Check to see if we have a successful request, so we're 00:13:46.270 --> 00:13:49.680 - going to do if responses success status code, then will handle 00:13:49.680 --> 00:13:51.690 - it. Else. 00:13:53.720 --> 00:13:55.440 - We want to throw. 00:13:56.450 --> 00:13:59.710 - New HTTP requests exception. 00:14:05.040 --> 00:14:08.487 - We're going to do the response dot reason phrase. 00:14:10.070 --> 00:14:13.249 - And you can adjust this as necessary for whatever you think 00:14:13.249 --> 00:14:17.295 - is best to help you debug, but I found best to do the reason 00:14:17.295 --> 00:14:19.029 - phrase. That way you have the 00:14:19.029 --> 00:14:24.200 - full response reason. But then also we want the. 00:14:24.940 --> 00:14:27.679 - We want the converted response string so we know exactly what 00:14:27.679 --> 00:14:31.165 - it says rather than just say 404 and have to debug in here and 00:14:31.165 --> 00:14:32.659 - see what is the response next 00:14:32.659 --> 00:14:35.879 - ring say. We already have access to the response string here. 00:14:37.070 --> 00:14:40.612 - And the last thing that I always put in here just so that it's 00:14:40.612 --> 00:14:43.901 - easier to know is the exact request you are I. So if you 00:14:43.901 --> 00:14:46.937 - have access to like Postman that you can use Postman for these, 00:14:46.937 --> 00:14:47.949 - or if you're using. 00:14:48.650 --> 00:14:52.093 - If you're using some kind of other like swagger or something 00:14:52.093 --> 00:14:56.475 - like that, you can take a look at the request you or I you've 00:14:56.475 --> 00:14:59.605 - created versus what might actually work, or you can flub. 00:14:59.605 --> 00:15:03.361 - You know you can change the values in post man until they 00:15:03.361 --> 00:15:07.117 - actually work, and then you can compare it with the request you 00:15:07.117 --> 00:15:09.621 - right here and make any adjustments as necessary. 00:15:10.700 --> 00:15:13.150 - So the last thing we're going to 00:15:13.150 --> 00:15:16.420 - do? I'm not going to do any other kind of iteration through 00:15:16.420 --> 00:15:18.820 - 500 or whatever. At the moment, this doesn't paginate, just 00:15:18.820 --> 00:15:22.180 - going to give him to us. Also, we don't need to do that yet, 00:15:22.180 --> 00:15:25.780 - but we can do a video on how to do that later down the road. 00:15:25.780 --> 00:15:28.660 - We're going to do a return of our return value .2 array. 00:15:31.420 --> 00:15:35.044 - Alright, so that's it that is, oh, I apologize, we haven't done 00:15:35.044 --> 00:15:37.762 - the. Actually, if it's successful, probably want to do 00:15:37.762 --> 00:15:41.386 - that. OK, so our object that we want is going to be 00:15:41.386 --> 00:15:45.616 - deserialized. Generally it deserializes directly into it. 00:15:45.616 --> 00:15:49.544 - However, if you're using odata specifically, odata, possibly 00:15:49.544 --> 00:15:53.989 - some others. You it gives it back first into a separate 00:15:53.989 --> 00:15:57.841 - object that has maybe the request you are I the count the 00:15:57.841 --> 00:16:02.014 - is this count done or is there request done? It might give you 00:16:02.014 --> 00:16:06.508 - the next Uri for the next set of values. So for example if it 00:16:06.508 --> 00:16:10.978 - paginate's on 100. And there's 250. It might give you the 00:16:10.978 --> 00:16:16.032 - actual request you are I you need to go give to, you know, to 00:16:16.032 --> 00:16:21.447 - pass in on the HTTP request so that you can go get the next set 00:16:21.447 --> 00:16:25.622 - of values. But in general, and specifically for the Web API 00:16:25.622 --> 00:16:28.790 - that we've created, it's just going to give back to JSON 00:16:28.790 --> 00:16:31.958 - object of whatever of whatever we're looking for, so this one 00:16:31.958 --> 00:16:35.414 - is pretty simple. We're going to go ahead and do if our 00:16:35.414 --> 00:16:35.990 - response object. 00:16:37.050 --> 00:16:39.399 - Equals Jason Convert. 00:16:40.850 --> 00:16:44.678 - We're going to add a install package noon soft Jason fine 00:16:44.678 --> 00:16:45.722 - install latest version. 00:16:46.560 --> 00:16:49.320 - And then we're going to let that install. 00:16:52.120 --> 00:16:55.370 - And we're going to do serialize the object. The type is going to 00:16:55.370 --> 00:16:56.620 - be of T model array. 00:16:59.630 --> 00:17:02.510 - And then the string value is the response string. 00:17:02.510 --> 00:17:05.710 - For that we got from the content of the response. 00:17:08.840 --> 00:17:11.084 - OK, then last thing we're going to do is we're going 00:17:11.084 --> 00:17:13.532 - to add that to the range of the return values are going 00:17:13.532 --> 00:17:14.756 - to say right Val add range. 00:17:16.250 --> 00:17:17.350 - Response object. 00:17:20.710 --> 00:17:23.962 - All right, so we've created the 00:17:23.962 --> 00:17:26.910 - request URL. We've instantiated our return value. 00:17:27.700 --> 00:17:31.420 - We've gone and made the git call and set it to the 00:17:31.420 --> 00:17:34.210 - response. We have basically changed it from the bite 00:17:34.210 --> 00:17:37.930 - values into our into an actual string that we can read. We've 00:17:37.930 --> 00:17:41.340 - checked to see if it is successful. If it's not, we 00:17:41.340 --> 00:17:43.820 - already have the message, basically. So we're throwing 00:17:43.820 --> 00:17:46.920 - our new requests with the information we might need to 00:17:46.920 --> 00:17:49.710 - debug, and then if it is successful, were deserializing 00:17:49.710 --> 00:17:53.740 - it into the list of the array of our object and then adding 00:17:53.740 --> 00:17:56.840 - it to a range of our rebel and then returning. 00:17:58.170 --> 00:18:02.266 - So if we go ahead and do this, let me go. I did this in a 00:18:02.266 --> 00:18:03.802 - separate video, so let me go. 00:18:03.802 --> 00:18:06.100 - Turn on the. Training. 00:18:06.650 --> 00:18:09.268 - Training Web API. The one that we're actually calling an let's 00:18:09.268 --> 00:18:10.934 - run this and see what we get. 00:18:12.280 --> 00:18:14.830 - So let's go to our. 00:18:15.460 --> 00:18:16.510 - Job service here. 00:18:21.320 --> 00:18:22.559 - And our controller. 00:18:23.360 --> 00:18:25.580 - And let's put a break point right here and see what we 00:18:25.580 --> 00:18:25.950 - get back. 00:18:27.290 --> 00:18:31.021 - So if I go into my recurring jobs, if I go call my 00:18:31.021 --> 00:18:34.178 - products, which is the one that I have go trigger now? 00:18:35.910 --> 00:18:37.782 - Let's see if we get an error, see if we get anything back. 00:18:39.890 --> 00:18:41.938 - So here we go. We have our products. 00:18:43.800 --> 00:18:45.396 - All coming back from our end point.