Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

デモ:APIへの非プログラマーアプローチ

このビデオでは、プログラマー以外の方法でJuniper Mist™ APIにアプローチする方法を説明します。この例にはスイッチングが含まれますが、有線・無線を問わず、Juniper Mist APIでカバーされているすべてのものに同じアプローチを使用できます。

この例では、Andy が Chrome デベロッパー ツールを使用して、呼び出されている API エンドポイントを正確に把握する方法と、それを Postman で活用する方法を示します。

So, this is my section is on automation for access switching, thought it would be pretty cool to go through the agenda would be just how to use the organizational level, the site level and then direct switch configuration, how to mess with it in Python, and then we'll try to set it up in a dot 1x configuration. So, let me get right into that. So, basically what I've got here is I've got my one switch, and this is my lab area.

And so, if you look, you can see I'm kind of going to walk through the manual way to do it first, and then we'll we'll mess with Python and then how to kind of make it work. And this is kind of the scrappy unofficial, you know, not supported way. But I wanted to show you guys how I basically lab things up or sandbox things in order to make cool stuff happen.

So, if you look at the organizational section, so they have this concept of Switch Templates in the organizational section, which is kind of like the everything I want. I want this to be everywhere. So if we click on that, we can see we don't have any. I got to move all my stuff out of the way here. And then there's also the concept of a site-level switch configuration. So we'll mess with that.

And then we'll also just go straight to the switch when you click on it. We'll change some stuff in here, too. So manually, what I want to do here is I want to add all my next stuff in this template, this top one. And so we'll say this is that template. And we are going to - the cool thing about this is I can add I can put the whole config in here if I want to, but I kind of want to just only do maybe the the next stuff in here. And then, you know, further down, I'll change some other settings in the site levels.

This could be useful if you have help desk or maybe you have some people that are learning how to do this stuff and you want them to have a site of their own to be able to manage, but you don't want them messing with any of the configuration stuff. But you can also in here, you can set up your network support profiles and then your switch configuration. So, the thing I really like in here is I can set if I move all my stuff out of the way here.

I can add a rule here. We won't really be messing with this too much, but I can apply a template. And this is without automation or anything, right? I can apply a template to a switch or a subset of switches based on their name or based on their model.

So that way, I can kind of do things like if I want, you know, port one through five or something, you know, to have one X on them or POE or no POE or whatever I want to do. I can manage those intelligently enough that if I have a switch that doesn't have the same ports all the way across my org, I can still use the same template and then not really have to worry about it. But in here, we'll just do in here, we'll do the RADIUS stuff.

So, I'll add all my RADIUS things in here. Shake is my super secret password. We'll hit go on that. And then we'll do the same thing with the accounting server and super secret password. We'll hit OK on that. And then we will save that.

OK, so now we have this concept of like organizational configuration. Now we're going to go into like a site site level configuration. And so I pre-made an automation boot camp site. So I click on that. And this is where I apply my neck template. So when I apply that and I uncheck these because I don't want to override them, you'll see that I inherited the organizational level template here.

So this configuration was just inherited. And then in here, I want to make it like I want to networks is fine, but I want to add a port profile that says to use that one X. And a little known fact, I've never messed with the Junos yet. So I'm relatively new to the company.

I've been here for seven months, I think. And I thought it was going to be a big deal to have to learn all the CLI ins and outs. So I'll show you all my my awesome knowledge that I've gained so far. So if I do that one X and I just hit this button. So like I know what I'm talking about, right? So hit hit OK on that. That's good.

Well, let's save. And then on the switch itself, we'll just do like we'll just apply that. So on on port two, I've actually got my virtual machine. We'll wake him up. This is just a Windows 10 virtual machine. And I'll show you how that works in a second.

But we are going to go to the port range here and we're going to say ge-0/0/2. And I want to apply my - I want to apply my .1X to that port. So I hit OK, hit save. And then we can go and wake this guy up. And I'll show you that it worked or didn't work. So if I enable this, you'll see that it identified. Everything should be good. So we'll ping the NAC. Good. And then I'll ping the rest of the world. Good to go. So just to prove that this is actually doing what I say it is, we'll go into properties.

I'm going to fat finger my authentication password here. Replace credentials. We're going to use Joe Smith. So J Smith, whatever. I just put a bunch of junk in there. Hit OK on all this stuff. We'll see that it's attempting to authenticate and it failed. So that's just kind of showing you that I'm not, you know, no smoking mirrors, nothing like that. I'm actually going to change this back because I'm going to forget.

And then we're going to get halfway through this. And I won't remember why this wasn't isn't working. So we'll replace this back with J Smith. Missed. Two, three, four. Hit OK on all this stuff. And we're good again. So I'm going to disable him just for now so that we don't mess with anything. And then break out of this.

And so now if I go to, it should be. So this is actually my client, right? So I can click on him and I can see that he is connecting through the wire. It's wired and it's using the port configuration of the .1x. And then if I do this, I can get the insights on this client.

So I can see that it authenticated through user J Smith logged in through MAC address. This is a temporary tag right here that will eventually just be the MAC address of the device. But I wanted to show this because this is kind of a cool thing.

Like I mentioned earlier that I was in the aviation industry and I never had control over any of the NAC stuff. That was always the security team. And everybody always says that if you're a part of the security team, your best practice is to just disconnect everybody always because that's the most secure you can have it.

And then the networking team wants to connect everybody always because that's your job is to push data around. So I always used to go to my NAC team and say, hey, man, I think maybe this user is not in there right or something's happening. And then they always go, OK, man, go ahead and go figure it out. And then we'll change it. So I think it's really cool. I can see that the .1x is happening on the MIST infrastructure.

And I don't have to really go into any NACs or anything weird to mess with that, right? So let's go through here again. And I'll show you how I would do this with a robot, right? So I'm going to actually delete all this stuff because we want to do it again. So go in here, go in here, move my stuff around a little bit.

Bootcamp - we will kill this thing down here is what we just changed. So we'll get rid of that, save. And then we'll go into the switches and we will go in here and change. We're going to take this out so that we know that we're back to default. So how do I do this? How do I make this happen with robots? So this is not something that's supported, right? This is one of those things, like I said, this is kind of hacky, kind of unofficial. I just wanted to show you a cool, fast way to get information in and out of the MIST dashboard.

So again, the professional, super legit way is to hit the question mark. And then you look at API documentation. But we want to do just exactly what the dashboard did. So if I go in here, this is just Chrome, as you can use Firefox, Chrome, whatever, they have these developer tools. And I think they're for more like web developers, but we're going to use it in a kind of a different way. So this thing records the traffic that's going to and from basically the API.

So on this network tab, we click Network tab, and then we're going to go into Postman. So I can show you, I created an automation bootcamp, like workflow, work site. And then I did just a couple of folders, right? So we're going to change, we're going to add stuff to each one of these folders to do exactly what we did manually just a second ago.

So I'm going to, and I actually made an API test just so that I could see that my - I'm going to try real hard not to show you my API token, but I've got it in a global variable that I can't highlight, but it's like right there. And then it's basically a nobody. I'm just doing get to API self.

So if you click on that, you can see that I get data. So I know that my API token works. And then we're going to drive off of that, because I know I'm going to accidentally show you that. And then, so now we want to see like how, how did I make the template? How did I do the very beginning template? How did I do that? And how can I replicate that? So what we're going to do is we'll do create template. And then I'm going to go back into this developer tools thing. And we're going to do NAC template again.

And this is a little bit trial and error because it's not, you know, it's not something that's supported or documented or anything like that. It's just something that this is just the way that it works so that we can, we can take a, you know, we can just take a look in it and see how it works. So I'm going to stop that. And when you click on these, you can see what's going on. If my windows are out of the way. And so really we want this one.

So you can see it went to apimist.com, blah, blah, blah. It was a post. And then all the way down at the bottom, you can see that that's the payload. So we're going to actually just remake this thing in Python or in Postman. So I'm going to copy this. I'm going to go in here and then we're going to do, because it's an org template thing.

We're going to add a request and we're going to say create org template. We'll hit, I keep jockeying these windows around that you probably can't see, but we're going to hit make and then get in here, paste this out. And again, we saw that it was a, that it's a post right here. So we go back in here and we say we want this to be a post. And then my headers, I want authorization. Oops.

And then, so I also found out that if I copy and paste this variable, you don't actually see it. So, okay. You didn't actually see it pop up because that's, you know, that's your super secret password to the keys of the castle. So I'm going to save that. And then we also want a body, right? So if I go back in here, you can see, I got to figure out how to move all this webinar stuff around. Scroll all the way down to this.

And then we're going to hit view source. I like view source a little bit better because then I can just copy and paste the whole thing. So we're going to copy this, paste it in. We want just raw. We'll hit paste. And so you can see that what's happening is it's going to my organization and then it's going to network templates.

And then it's going to post, it's going to make a new one. We're going to name it NAC template. And then in here in Postman, you can actually set this to conditional highlighting or whatever to JSON. And when you set that, it lets you, it allows you to hit this beautify button. And now you can kind of see it as a workflow rather than, you know, just all one block of payload. So we're going to save that.

And again, we'll go back over here and we'll see that this has been created, but we don't, we want to do this with Postman, not manually. So we're just going to delete this one. And then we'll hit refresh, make sure it's actually gone. Okay, cool. So it's gone. Now we'll just run what we have.

And again, here's the, here's the, the response. We're going to end up needing this ID because this is what the rest of this stuff is based off of. And I only learned that through trial and error, right? I was just messing with this, seeing how it would work and, you know, and just doing it this way.

And again, this is the only reason that this works is because this, the dashboard is at, is asking the API on the backend, how, how to interact with all the data. So if this, if the API wasn't there, it didn't exist, and we wouldn't be able to mess with this. So again, I think I hit the button. So I'll hit refresh on this. And like magic, it's there. So the one thing I didn't do because I forgot is added my host names.

So this is my, this is my NAC and I need, we need that. Minus one, two, three, four. And I'll hit okay on that. Add this, get rid of that. One dot 200. Missed one, two, three, four. Okay. So now instead of hitting save right away, cause we know that this is going to save this information. We want to see how it's saving or what's, what it's talking to.

So back to developer tools and then now we hit save. So now if we hit save and then stop, we can see this one's probably the right one because this is our, this is our org stuff. So we see it's going to templates, blah, blah, blah. It's putting information in there. And then if we scroll down, we can see, okay. So it's actually, this is my RADIUS config. So that's actually happening. So let's just do that. That's right. Like, so we just made the thing. Now let's do, we'll go in here and then we'll do add a request. And we're going to say update org template.

And again, this could be something that you do all in one, like just in one thing. If you, if you grabbed it when you created it, that could be something, but maybe not. Who knows? So now we got this and then same thing. I mean, this is like the cheaty, like easy way to do it. I'm just copying and pasting now. Make sure that copy and paste it in here.

Looks good. Maybe, I don't know. We're going to see in a second. And then I wish I could move this. And so this one was a put. So we're going to go in here. When I say PUT, and then our header is going to be authorization because we need that. We're going to copy this so that you guys, again, that's so sketchy. I feel like you guys are going to get my API token at any moment. But luckily, if something goes wrong or this doesn't work or whatever, I recorded this earlier. So we'll have a good version of it. So you could see exactly what's going on and how I made it.

Just because this is kind of, it's a little bit all over the place, but I'm trying to show you how easy it is to just mock up whatever you might want to automate. So that way you can say, okay, here in Postman, I'm doing the same thing that the dashboard's And I don't necessarily need to super understand what the API calls or the JSON or the, this is kind of one of those things that even though I'm, I guess I'm pretty advanced in the API stuff nowadays. It's nice to be able to just copy and paste and just go from there.

So again, I scroll down here. I'm going to hit view source just so I can copy and paste this thing easier. And copy. We're going to paste it into the body. We're all, same thing, same as we did last time. Paste that, turn it to JSON. And then that way we can beautify it. Again, this is exactly just what the dashboard was giving to the API, which gives to the backend. So we can see that it gave it the 192.168. This is our password.

Again, same thing, blah, blah, blah. That's great. We're going to save it. And then we'll go back to it and then close this. So if we delete this template, the whole thing, technically we should be able to run both of these things and it should just work, right? So if I do this, and then this is the ID. We might need this.

I'm not actually sure if we need this. So I'm going to copy it. And then in here we can say, oh, yep. So we'll need it. See how it says that? So this is our org. This is the org. And then it says network template. And it's going to modify this. So we just deleted that. So we're going to put in our new one that I just copied and pasted. And then we'll fire that one off. And then we'll hit refresh here.

And so now it says that we made it. And then you guys can see it before I can. OK, so yeah. So that's everything that we wanted, right? So, that's pretty good for that piece. So now we want to do the same thing with the switch configuration. Because we're just walking through the same thing that we just did. You know, manually. And again, manually, probably fine. It's probably something that you could just do within the constraints of, you know, out-of-the-box operation of this.

But I kind of just, same thing, right? It's just something that might be comfortable. I want to show you that it's a comfortable thing to do it in the dashboard. But then also, if you just want a robot to do it, you can.

So again, so we're in here now. And what we did last time was we inherited this thing, which is good. And then we did, what else did we change? So we changed this. We added a port profile. So again, we'll do the same thing. We'll inherit this. And then we'll add one of these. .1X. And then we'll do our super secret. Because I know Junos really well. Hit that button. Scroll through there. Pretend like we know what we're doing.

Hit OK. And then before we hit save, we're going to do our little cheat again. And then go into Developer Tools. It's recording. And hit play. Or go. And then, and you can see. And again, like, you can see this stuff, right? So I see bundle. That's going to full story dot whatever. I don't really care about that.

Settings. OK, this could be interesting. This is going somewhere kind of neat. That might be something that we want. And then we'll look down here. Yep. So we named it .1X. So that's a thing. And then right here, this is kind of interesting too. Like all these numbers could be something. So, that's a PUT. That's putting something in.

Network template ID. That could be interesting. Let's just start with settings. Just see what happens. So again, we're going to go into here. And now that we're kind of done with our templates, I'm going to save it. And we don't need our API test either. And then we're going to go to site template. We're going to say add request.

I guess we want to update site template. Go back in here. Copy and paste. It's a little redundant. But at the end of this, hopefully we'll be able to see that I can just hit go on all these workflows. And then they'll, you know, all these requests.

And then it'll make exactly what we did manually automatically. And same thing where this is this button right here. This code button is really cool. I'm not going to hit it because you'll be able to see my API token. But this will let you export each one of these requests in Python or, I don't know, PowerShell or whatever else is in there. So it's got a whole bunch of JavaScript.

It's got a whole bunch of examples. And so, again, you could copy and paste each one of these things, put them in Python all in one thing, and then hit go on it. And it'll just do everything that you want to do all in one go rather than just us building it as we go.

So we did that. And then we're going to View Source. Copy all this stuff. Put it in the body. We're all same thing, right? We're going to change this. I keep moving my, you can't see it, but I keep moving my webinar thing around.

And again, so like I hit beautify. So now you can, it's easier to see now. So I'm seeing that there's, here's my profile name and, you know, whatever else that was changed in there. And again, this could be something that you want to change later or not. Who cares, right? So save that. And then we will go back in here.

We'll see if it worked. So we're going to delete, take this off. And then we're going to take this thing off. Hit save. And then we're going to do it in here. Hit go. Authentication credentials. Okay. So that's probably important, right? So copy and paste this. Authentication authorization. Let's see. I'm just kind of, I'm just kind of building it as I go.

Like I didn't really have a real, you know, super solid plan on how I'm doing this. And this is, again, it's like, it's definitely a different like approach to automation than, you know, Calvin and Brian, we're talking about, right? These guys are like, you know, well into their journey in automation. And they're talking about, you know, connecting and integrating these applications together.

And I'm just talking about seeing if I can make something talk to something else just immediately, right? So I hit go on that. Here's a whole bunch of stuff that it said. This is, this is actually pretty important. Like you could go through here and you can see whether or not a pass failed, what kind of thing you did. Or again, I could just go on here, hit bootcamp, and then we'll see what happens. So what happened? We made .1x, but we didn't actually do this config template piece.

So like, why not? What happened? So now we're going to do, we're going to kind of sort of quasi troubleshoot it. So I'm just going to do NAC template. That's the only thing that I'm changing in this again. We'll do developer tools, make sure it's on the network tab we're recording, hit go. And we'll stop it. I'll move my web thingy out of the way. And then we'll just look at it. So full story, don't care. Java, that's options, don't care.

It's probably this setting maybe. We'll look in here. Nope, we did that. So that's good. It's probably this guy. So let's see that. No, that's a GET. Here's a PUT. Let's do that. Let's just see if that worked. So I'm going to say, we'll do a new one. Actually, I'm going to go big brain on this one and then just hit duplicate.

So I don't have to copy and paste my password a bunch of times. Okay. So instead of this, we're going to say, apply, apply org template to site. Again, you name it whatever you want. This is just kind of a easy way to sandbox this stuff. We're going to delete this because we don't want that.

I'm going to delete this because we don't want that either. Kill all that stuff. And then again, back to the copy and paste game. Like we're going to go in here, copy. And then go all the way to the bottom. Change this to this. Copy, paste here. It's already JSON beautified. So this is interesting. So you see that this thing is saying network template ID, and it's going to this site. And that means that it might be applying that to this site. So what was our, let's see, update site template.

We didn't have it in here. Our org template. That's probably our org template ID. So if I hit save on that, this one might be a little easier to test. So we'll just go in here, boot camp. We'll take it off. Save. Go back in here. Hit go. Something happened. That's probably cool. We'll go back in here. Hit OK. And you can already see. So that's what added that NAC template.

So again, this isn't something that, like, this probably isn't in any kind of documentation anywhere because it's just not, oh, so look at this. This is actually overriding our templates here. So we don't want that to happen. So I wonder how we change that. So again, now I'm just doing the same thing all over again. It's a little bit of trial and error.

It's a little bit of, you know, it's kind of scrappy and not really something that is, you know, in anywhere professionally or officially. But again, this is cool because Calvin and I have actually done a lot of work together recently. And I like to put up a whole bunch of these things in there and then just share this to him so that that way, whatever he's using, whether he's putting it in Ansible or, you know, just using ServiceNow or whatever tool he's using, he can have the boiled down version of it right here.

So he can see that this is, you know, this is actually what's the workflow, what's going on as far as talking to Mist. And in that way, at least, you know, there's a whole bunch of other complexities and all that stuff. So at least he's got my section down and he doesn't have to really worry too much about it because he knows that it works.This is really easy to share with other people. And then, you know, and then you're good to go.

So we'll go back in here. We uncheck these. So we're going to see kind of why, like, I don't really know why those things were all overwritten. So we'll go back in here and we'll hit save again. And it looks like it's just the same data. I mean, just kind of glancing at it, it looks the same. So I wonder if it has to do with the order in which we did that in.

So let's just try that. So we're going to we're going to take this off. And then we're going to take this thing off. Delete all this stuff. Hit save. And then we'll go back to it to make sure that it's actually gone. Yeah, so now the stuff's gone. So now let's just do it in a different order. Let's do let me put this up here. And we're going to do this one first. Then we're going to do this one. And then we'll go back here, hit refresh.

See what happened. So now it applied the template. Yep, it's still overwrote them all. So we don't want that to happen. So let's take those off. We'll do it again. And then we'll go into here. Actually, let's just make the whole thing so that we can just copy and paste easier. Oh, we did. We did already. OK, cool. So I'm going to stop this.

This is kind of how you like see how it's doing some things that I don't really care about. If you stop this and then hit rerecord, then you can get just what you want. So I hit save again. Stop that. Settings. So we already know that we have that.

But I'm just going to take all this and just redo it again. So copy this, put it in. This one was our. Yeah, this is the body of this. Delete all this stuff. You can do this with whatever workflow you want. You can do this with I did. I've done this mostly with the wireless stuff. You know, if you want to look at the.

Clients or whatever it is, you can just do the same thing. So now we're going to do network templates. We'll see if this change. So that's a GET. So that's fine. This one was opposed to full story. We don't care about that. Put that's probably OK. So let's try that again. Maybe that was different data, right? And again, you can you can actually dig into this stuff and really see what it's doing. But I'm just, you know, just firing away. Delete that.

OK, it's. Then we'll go and do it again. So we'll hit send on that. Send on that. And it might actually be that I'm using the wrong or template. We can try the whole workflow again. We'll just get through it and then we'll see what happens. Bootcamp, so it applied that. OK, that was what it was.

So we applied the template first and then it just the in that second payload that we copy and pasted. We said, don't override any of this stuff. And now we're good here. Should be good, right? Let's see. Let's make sure. Yeah, that one. So now we all we want to do now is go to the switch. And again, this isn't best practice. So like what I would want to do is I probably would do the. That one next stuff in the organizational level, because I want my whole org to be able to see where my knack is. And then the rest of them, I would just put in in this this one here. And then I would just change instead of going to the actual switch and applying the this template to the to the port.

I would just do it in here. And then that way I can it'll just be in all one place. But I just wanted to show you that we can touch all of these facets of this thing. And then it's effectively the same thing. So we're going in here and then all we have to do now really is apply this apply our port port configuration, right? So I'm going to say G E zero zero dash two. And then I want my super expertly set up. .1X hit OK on that. And OK, that looks good. So we'll do again do the same thing. Developer Tools. It saved. Stop this.

It's usually at the front of this thing. Usually it's something that's at the front. Another cool thing is if you double click on any of these things, it'll drive you back out to the Django REST API framework. And you can see in human-readable like this is actually this one was a get. Yeah, so this one was a get. And it looks like it got a bunch of stuff.

It got the devices and type switch. So this is all my switch configuration stuff. Cool. Not what we want. We want to actually put something or like play something. So I'm thinking it's right here. Yeah. So here's a PUT. And then if we scroll down, we can see. Yeah. So it's changing things. This is where it's putting data. So we'll just make that. So we'll go into we'll minimize these things. Kill these things off just for the sake of whatever.

And then we'll make add a new request. And we're going to say edit switch config. We are going to make that a put. We're going to put our header in here of our token. Hopefully, this is the last time I have to show you the token part. So I don't screw that up.

Boom. And then where are we going? We're going here. And what are we telling it to do? All this stuff. Save that. Put it over here. The body raw paste. Again, I kind of want to see what it looks like because I'm interested. So now I can see that it's my switch. And here it is. This is the piece that we want. This is what it's changing. But again, I didn't I didn't code that. Like, I didn't do any part of that. I just copy and pasted. So we're going to save that.

And then we'll go back over on our other side. Close this out. And then we're going to take it away so that we can programmatically add it again. Hopefully. I think up here. Save. So now we see that it is not in there anymore. And then when I hit the button. Boom, stuff happened. And then scroll over here just to validate. And again, this is something like you could put this in a script all on its own. You can make it say, hey, go out, validate. Make sure you actually put this on. You put that 1X on this section here. And, you know, and you're good to go. So now let's put it all together.

So let me let me delete. Let me clean up the environment a little bit. So we want to delete that. That's good. We're going to go in here because we're changing stuff all over the place. Let's get rid of this. Take this away. Let's take that away. Take this that 1X thing away. Save, save, save, save, save. And then we're going to take the switch template. We're going to blow this thing away. Good to go. All right.

So let's just try. Let's see what happens. Let's go through the whole process. So let me open these things back up. So programmatically, we want to create a template. That's the first thing. And then we're going to save this because it's probably going to be useful. We figured out that that will be useful. Update the org. Remember, we put this in here. Save that stuff happened in here. We got sites.

Let's see in the body real quick. We'll see. Oh, yep. So this is a network template ID. So it's probably this again. Shoot that out. Make sure this doesn't have anything. Yeah, this is our dot one X. Send that away. And then this one, the same thing.

We'll send this one away. And then in here, let's not even look at anything. Let's just look at the end switch. See what happened. Uh, so now we see that we've got .1X is assigned to this, uh, this port. We've got our authentication servers have been inherited.

Our .1X has been inherited. And then, uh, just to show that it did something, we will clear this screen. We'll enable this and watch it not work just because this is live. Just kidding. So there, that's it. So we basically just configured .1X. We learned how to, to walk through a manual workflow of how to mess with the, uh, the dashboard and then we put it in, in, uh, in a Postman.

So that way, um, you know, you're, uh, if we wanted to do this, if we wanted to scale this out to like what Calvin and Brian and those guys are doing, like, that's super cool. That like is the pipe dream. That's where I want to be, but I have to start somewhere.

And, uh, you know, and this is, this is how I start somewhere. This is how, if someone says, Hey, can you give me the list of all the guest users on wireless and put it in a CSV file? I can probably ask Marvis to do that, honestly. But, um, you know, the, the cool thing about this system is that, you know, these APIs are all open on the backend and I don't necessarily need to know the nuts and bolts of how it works to me, be able to use it and use it the way that I want to use it rather than the way that, you know, uh, Mist does, thought that it would be useful for you to have it that way.

Right. So, um, I think that's pretty much my demo. I'll, uh, let me jump into the chat here and see what we got for, uh, questions. Maybe. Andy, I've got a question from the chat that I think you are the perfect person to answer. Uh, the, the question is about, uh, integrating with voice assistance.

Do you have any example on how you can integrate APIs with voice assistance that are commonly used in the home? Absolutely. So, uh, let me see if I can actually just make it work. This is totally ad hoc, by the way, this is, you're going to see my token and it's going to be a terrible idea, but we'll do it. Uh, so since I'm on a windows PC, I have to use a stupid 5k viewer thing. So you can see my, um, my mobile device. So I have an iPhone.

Turn this stuff off and then see if I can share it. My corporate, uh, device sometimes doesn't like it. So we'll allow that. Is everybody getting ready to screenshot Andy's token? Everybody get ready for that and put it on Twitter. Terrible idea. Please don't do that. Please don't. I'm joking. Yeah. Come to find out nothing works because I don't want to, all my things to break. Uh, but the, uh, yeah, I'm this thing. This is one of those things that I fight with constantly, but I do have videos on my YouTube.

I, you know, quarantine, I'm not really one of those people that likes to like go beyond videos or be on these things, but, uh, I'm learning, I'm trying, I'm trying to stay outside of my comfort zone and getting into this stuff. But, um, but yeah, so the idea would be, uh, I've messed with Siri shortcuts and serious Siri shortcuts are just their own thing. And, uh, and so what I did was I Googled Siri shortcut, uh, rest API, see how you can interface with like, uh, uh, you know, a restful, uh, HTTP get, and, uh, and then I did exactly what we were talking about.

So I made one where I can ask Siri. Um, let's see if I can actually, nah, I won't do it. Cause there's too many, way too many people on here, but I can, I don't, I don't have it like controlled, but, uh, I can ask Siri and say, Hey, uh, create a new SSID.

And then she'll say, what do you want it to be? And then you say, I want it to be whatever. And then she'll take that and then interact on the backend with Mist. And the way that I did that was exactly what we're talking about here.

So, I took, I went in here and I did WLANs and then I copied same thing. I did add WLAN. And then I did test, uh, SSID and changed whatever I wanted in here. I saved it in, in the, uh, you know, in Postman so that I could see if I could manually, I'm just saving these real quick, uh, see if I could manually hit Postman and make it make a change on the Mist side. And then the only piece left was to make Siri do it. And so I Googled how Siri shortcuts workflows work.

And it's basically, uh, there are these, these defined variables that you can say, Hey, Siri, say these things and then wait for the person to respond. And when they respond, put it in a, uh, you know, put it in the workflow. And so all I did was I said, I typed out Siri dictate, what do you want your SSID to be? And then, uh, wait for the response.

And that response I made, I just like, like, if it was this, I would just copy and paste it into here. And it would be something that would look like Siri response instead of what I was doing. And then I copy and pasted this, put it in Siri and then you hit go and it all works.

Right. And that's all because I just staged it in here just to see if it would work just to see how I could try to make these two things talk to each other. And I think that's, that's cool. And that's useful. And that'll get you to where these other guys are. Cause like the pipe dream is to have a, a robot make a change, but also validate that change to make sure that it's not broken.

And it's not, you're not like, I love Brian's thing where you use a machine gun on yourself instead of your blast radius is huge by hitting a button rather than, you know, knowing the manual flow. But that's where you want to be. You want to be in a spot where, you know, robots are configuring robots and you just look at it and it just gives you the thumbs up.

And then you're, you know, like you feel confident in that. But you know, it took me a while to get here. I kind of got into the monitoring piece first. I wanted to see if it could just monitor things. Cause that was safer for me. That was, it wasn't changing anything and I didn't know what it was going to change or anything.

I just wanted it to look at things. So you know, so same thing, right? Like that could be a very, very fun thing to go into maybe ServiceNow's developer instance. You get like a free one, you just sign up for it and then just make it monitor stuff, like ask it through exactly what we did, see what you want, whatever could be interesting and then drive that out to ServiceNow so that it can make a report and then you make a dashboard about it or something.

But yeah, it's kind of, it's kind of hard to teach these things because there's so many ways that you can do it. And it's so useful in a very specific way to very specific people that I, you know, again, I just wanted to show you that this is just how you can just, you know, hammer away at it and get something useful out of it. So hopefully that helped.

That's awesome. Thank you, Andy. Awesome. Great questions, actually. And I have to say, personally, without bullshitting, I learned something. I really learned that Postman can be the coder for you for Python. I never really went down that path. This is, this is super cool.