Enable and Verify RESTCONF with the CLI and Postman.

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] and welcome to the Keith Barker channel everybody is fantastic to have you here I was looking at the blueprint for the CCNA and in section 6 automation and programmability it has some information about rest-based API s if you haven't yet seen the video on rest-based API is that I did check it out it's like eight minutes you'll get a lot of value out of it and I thought you know what else we can do is we can also work on a little aspect of recognizing JSON encoded data and what that is and a good way to do that is for us to actually take the rest comp idea which as a quick reminder rest comp is a restful api that allows a computer like a controller or somebody running an application to interact with networking devices you get information from them and to push information we can manage large amounts of devices with just a single computer or two using automation Network automation Andres Kampf is an example of a RESTful API uses HTTP or its transport and uses the same old HTTP commands like put and get to send and get information from the Cisco device all right so the objectives are I want to walk you through the syntax for enabling rest comp on a Cisco router number two I want to share with you how you can use ACL out of the command line interface like a PowerShell or command prompt with a little utility called see URL client URL to test it and then I want to walk you through postman so my goals was I thought okay how do we break this down to a point where virtually anybody who wants to like you or I could test this and also using a tool like postman which we'll talk about to make it a lot easier and so let's start off with the enabling it on the router all those pieces and then we'll take a closer look at the CLI and postman so here in this topology I bring my face up a little bit there we go hello in this topology I've got our single router that's in the emulator connected to my home local network now if you have this is a csr router I've also tested this in Cisco modeling labs also with live gear the key is you have to have a router that supports rest if you don't have a router oh the iOS supports it you won't be able to go ahead and use it but so even G sisqó modeling labs or gns3 or live gear as long as you can reach that device let me walk you through the syntax for enabling rest comp and I put it somewhere handy here this so here's the syntax for enabling rest comp on a Cisco device config T so we are if you're brand new if you're brand new to Cisco config T is how we get into configuration mode and there's a what's next Wednesday's series that you can join take a look at the playlist here on the YouTube channel or Keith Barkery that walks through the basics so we are creating a user name I'm giving them King Kong rights at level 15 I'm setting equip a password of Cisco exclamation mark to 3 the capital C so that's probably not new to anybody watching this video and then I'm enabling HTTP services on this router because rest comp from our previous video rest comp uses HTTPS as this transport so if the router doesn't support HTTPS that's a problem I also use this command what this says is dear mr. router when somebody connects to you using HTTP or if this secure HTTPS I want you to authenticate that I mean a fancy way of saying identify who they are and use the local database to do it now the local database on a Cisco router means they're running config so that user we created admin will satisfy that as long as we know the username and the password and we'll use it with our rest comp commands then we're going to enable rest comp this this is the moment my friend where you're gonna say oh my router doesn't support rest comp or does but if it doesn't support rest comp the rest comp API won't be able to interact with this device and then for my lab I'm just going to interface gigabit one and I'm giving an IP address that I can reach of dot 56 and then I did a no shutdown and I also enabled a couple routing processes just because I want to have something to look at on that router and then I also did a debug of IP HTTPS SSL error and that was just so I could see so what happens the router has a self-signed certificate and so if we try to access that if we have a client that care just can say well I don't trust that CA the certificate that was signed by itself this is the router itself and so be aware that if we put a debug like that on that's gonna help indicate oh here's the problem and we need to fix it and I'll show you how to do that as well so all that's already in place in this environment right here I hope by the way I had so much fun putting this together so a couple weeks ago somebody requested some Network automation from the CCNA and I've had a blast and putting this together I've got it here somewhere there you so this is the this is the current router and we just show IP interface brief like that there we go we have a gigabit 1 0 or gigabit one which has dot 56 and then I've got a loopback 0 and that's kind of small fonts sorry about that we're gonna do the rest of the work in rest comp most of it ok so let's go back and let's take a look at how we would now once rest comp is enabled how do you use this thing and that's that's a good question so the benefit what is the benefit of an API to talk about that for a moment all right the benefit of an API is that we have a language of love that's understood by a computer or an application that's managing our network and the devices it's managing so if they both understand and agree and work with the same API think of it like a computer's way of dealing with another device however as a network engineer we may occasionally including today we may want to modify or tweak or control that API use it from a tool to manage our network and so it it's good for us to be familiar with some of the commands and also some of the tools that we could use to leverage it so let me share with you the first way we could actually use this rest comp API that's enabled here on this device and that would be something like this let's go to a command prompt let me also bring up I also started using this tool right here is vs code I'm not a programmer but I'll tell you what man it's a great way to collect your thoughts it's also a very amazing thing when you get there not today but like in a few weeks a few months a few years when you want to start backing up that content and your code snippets up to github it's so easy with vs code to do so that's a new skill that I picked up in the last month or so been very very helpful anyway so this is the configuration for getting rest combinated and here is how we can start to test it now curl I think the acronym is C URL is client URL basically think of it at like instead of going to a browser and issuing HTTP colon whack-whack and the URL you can do it right here from a command line now if it's not going to be pretty if we went to Google with curl from the command line cuz all that results are gonna show up you know at the CLI with just like what is this like bombardment of letters and numbers and symbols so but for testing like rest comp it can be used so this basically here's what this says this says I want to use right I want to use curl that's the client I mean it's just using it here from Windows 10 see URL space - K - K says and you can also do a curl space - - help and they'll give you content context-sensitive help but what the - k says is hey there might be a self-signed certificate instead or we may be using an older version of SSL or something go ahead and ignore that and just keep on going that's why I have the K there and then we have HTTPS colon whack-whack 192 168 1.56 slash rest conf space and then because I need to authenticate I'm gonna use the - you that stands for a user and then in quotes my username and password the key value pair of my user and password and if we just take that boom and right click to copy it and go to a command line interface I mean it real big so it'd be easy to see and paste it in and press Enter boom that just went out to that Cisco router via rest comp asked it some basic questions about are you there are you listening and this is a response back now we could continue to do that with a lot of commands and this is I mean I'm talking about if you're new to rest comp as I am I'm not a developer or not a programmer and you want to just enable it and just verify from the CLI that you've got basic rest comp capabilities working on that device this is your command right here just swap out your IP address with the IP address that you've configured on your reachable device that source ruskov you get that response you're in good shape now we could we could continue on that discussion and start using curl with all these additional options which are basically using modules think of a module like a grouping or a setting of options that the router knows about and there's lots of different modules that we could use and then within each of those modules there is information we could retrieve or put based on those like I want to see all the interfaces I want to see all the interfaces based on the IETF format I want to see I want to create a new interface and so all these are options that we could use at the CLI however painful I take it from me painful because they come back and it's like what what would be easier I think is to use a tool like a graphical user interface tool that could allow us to put these URLs in something a little better than a browser because we have to authenticate as well but something way better than the CLI and so that way something better that's something way better easy for me to say is called postman which I used a few weeks like a few months ago and I went I've been on a new machine now so I reinstalled it you know what I forgot possible let me take about postman so postman is a tool that'll allow us to take those api's like a URL HTTP colon Wack Wack just like what we did with curl but do it in a graphical user interface and then allow us to send those commands right from this graphical user interface called postman it also has incredible ability to help us tweaked and tuned as far as what goes in the header for those requests or what data types are we expecting that's really handy I was going somewhere with oh yeah yeah so yeah thanks for hanging in there with me so a few months ago I was using this I logged on I got a free account at I just did a Google search for postman went to the official website got a free account and I didn't realize at the time that whatever I created like little samples and tests API calls I was making as testing things it saves them for me in my profile so I installed a brand new copy of postman this morning and when I logged in all my old commands were there I thought that's pretty darn cool that way you can practice with an API like like rest comp which we're doing and you can go to different machines and it'll synchronize with the web and all your commands are there so pretty darn handy I encourage you to do at least the CR curl from the command line and then if you're gonna do more than just one or two commands use postman it's free and let me show you exactly how it works he's cake you're gonna love this so what I did was I created a grouping here called give the config arrest and in this give the configure rest setting I've got a whole bunch of different rest comp related commands so check out what I did here I have HTTPS colon whack-whack and then my IP address of that router router 1 /r s Kampf all by itself now the problem is when we did that command from the CLI a few months ago I had to put in this username at admin and the password for it to work so here on postman is pretty simple all we do is we put in that URL just think of it like a browser you know are you put in the website you want to go to the URL or sometimes referred to as the URI Uniform Resource identifier I'm old so I still call it a URL sometimes but um if we put that in and then we click on authorization right here just below you can specify how you want to authenticate and I just selected basic authentication and then I put in the password I put the username admin and the password Cisco Bing two three that way when I when we press enter here in a moment it's just like doing it from the CLI except it's gonna remember that information for us and it's a little more pleasant to work with you can also use dark mode here in case your you don't you want the dark mode that's also an option here in postman but these are the defaults if we click on send what is doing right now it just issued that command HTTP colon Wack Wack 190 wants to see 1.56 slash Russ comp it uses this username and password and that's it everything else are the defaults and if we look look at the output down here see us output let's do a compare and contrast real quick alright Ram this is like bring it up here there we go see how the the output the data operations yang library version etc same data just a more pleasant way to work with and handle these api's so a couple things so far we've enabled rest comp on a router boom we did a quick test with this command this HTTP query at the CLI with curl and also from a little utility called postman and actually postman is not such a little utility it's freaking amazing as we'll see coming up so I'd like to show you a couple other examples under capabilities I preset these so I could do them faster in the demo but there all the data's right here so under capabilities I went to HTTP the IP address rest comp data think of data as the route where everything begins and everything after that we're gonna specify the the additional information that we're after we might be spelling a module like hey use this module and I want look at these interfaces or use this module and show me everything that's within the grouping of router or OSPF or whatever else you want your application to check on or look at so here we're just looking at the capabilities and also under authorization yeah I'll come to authorize a sh in a minute so we're still using the same authorization as far as admin and Cisco 1-2-3 or exclamation mark to 3 well click on send now here's where it gets fun and I say that because this is like you've heard of Baskin Robbins 31 or Baskin when I was growing up Baskin Robbins had like 31 flavors of ice cream well with rest comp which is based on its predecessor net comp there are hundreds and hundreds of modules that we could call on some are cisco specific some are the version of the iOS that we're running specific some are IETF more generic so the the range of what we could call on and what we can look for is almost limitless here as far as working with res columns think of it like other router with hundreds of potential ears that are all listening and then whatever we send in we're going to specify through our API calls will specify the well then the router said okay great boom I get it this module and then what specifically would you like from that module and then it can go down further and we interface counters or statistics or configuration elements whatever we're looking for based on the person who wrote the program or the controller that's managing this Cisco device all right so that's the that's the command right there if you want to issue that right from the CLI you can do a curl - Kay meaning don't bother about worrying about the SSL things the problem with self-signed certificate that string and then - you and then in quotes admin : and the password or the authentication so you don't have to use postman but once you use it you're gonna want to keep going all right so variables let's talk about variables next um I discovered something amazing and that's this it's very good chance that we are going to have like lots of devices that we're testing with and if we have to manually put in an IP address of 20 or 30 different devices that might not be too handy so we can use the variable or the host address we can use a variable for the port we can use other variables as well and like to show you right here in postman how that's leveraged its really simple to shut setup let me show you so here in this get request it's HTTP and it's : whack-whack and then in double curly brackets the word host and curly brackets if I hover over that it knows somehow magically that that variable because it's identified as a variable with the curly brackets is at 192 168 1.56 so we do our request it'll simply read as okay HTTP colon wire HTTP colon Wack Wack that IP address and then the rest of the string and the way we set those up is over here on the upper right if you click on the little my faces in the way let me get the other way over here the upper right if you click on the gear icon here we have these environment variables I have one called rust demo and all I did was I put the username the password and the host inside of that environment variable of that environment setting and that way anytime it calls on the username or password a host it can just pull them right from here and that way I don't have to do it again and again and again so that's the magic of not having to repeat the same authentication information for every single one so if we did a send here that's the same capabilities requests we did just a few moments ago exactly the same except now it's using the variable in our string but the actual end result is the same okay now there's a lot of choices here with which modules we want to call on another programmer and so I would probably rely on something that was a sample or pre-baked if I wanted to go through and start searching but here's things if we with the capabilities here here one of those capabilities was this module called Cisco IOS XE - native and so if we simply send that and I'm including the authentication with admin and Cisco exclamation mark - 3 is showing me in XML format the output based on that on that module so XML I got to tell you something about XML when I back in the 80s before I Wow there it goes my mic urn I'm moving to a lapel mic by the way had tested out for my new studio so I can move around and then even um back in the 80s when I was first working with Novell that was before I got into Cisco and Novell you're going way back there well yes I was working with Novell and I went to us they call it brain chair every year for Novell and as part of that I took one course and it was on HTML programming and it used XML so you have open tags and close tags like greater than symbol less than greatest symbol and then when you close it off that name use a slash and it's like wow I'm writing HTML using XML is great stuff and so many years later that information is useful however that's just one format that we can use for plain text data is XML and a lot of web pages and so forth use it however it's not the it's not the what you call it the fan-favorite if we're talking about data and api's we're moving more and more to JSON and that's JavaScript or was it JSON notation Java JavaScript us Oh notation what is the O stand for stand for I don't know so somebody can type that in JSON anyway it's just the way we represent the data and instead of using the greater than the less than symbols and the slashes it uses the curly brackets and then the object and then a comma if there's another object and then some arrays that's a bracket open and closed and so in CCNA one of the tasks here is interpret json encoded data like what's the format for that so as we continue here and I give you some additional examples of using rest comp we can actually change we can specify in the header hey instead of this XML stuff when we see the format the plain text and JSON and we'll do that coming up all right so back here this is an example see the output is in XML that's also showing here if we do looking for just router basic information this is the using the native module again looking for a router so basically it says okay here's the open tag of router and then all the way down to the close tag of router and everything in between regarding that cisco router that we just I brought up a hour ago and then if we wanted to search for OSPF all this is the same URL same module just different specifics now we're looking for router OSPF though there's the basic details about the OSPF or they the configuration based on that module now what what if we wanted counters what if we wanted to know all the neighbor ships what if we wanted to know more details we could simply choose a different module that includes that additional information that the cisco router can then extract and send back via the HTTP GET request that we issued so there HTTP commands and we're using HTTP asks for security for our transport so here's an example of getting interface information via XML well the URL is the same it's just to just change the last part to interface so we'll notice the XML format here and then if we wanted to see it in JSON here's how we do it now before I press GO it's the same URL a IP address of the router rest comp date of the route the module were using and then the interface option for those for that section of the config but under headers what I did was I simply added this one except application slash agang - data + JSON if we look at the previous one I'll go back to headers in the previous one I didn't have that specified didn't specify JSON so it came back as XML but this one which specifies in the header except application slash yang - data + JSON if I click on send same data but now it's going to be formatted in JSON with the curly brackets and then the key value pairs and then so the the curly brackets represent an object and the brackets represent an array and you can nest them but here I can't tell you every times the last two months I've had to count curly brackets you might say Keith what do you mean I'll just by the way we're here looks like without a product I just got another shower so I've taken a few exams recently and in part of the objectives and CCNA was interpret JSON encoded data and so there's rules about how JSON works including starting with the curly bracket and then if there's multiple objects you're gonna have commas and if you have an Open bracket for an array you need to have a closed bracket so if there's 14 open curly brackets there should be 14 closed curly brackets and there should be commas inside of those groupings if they're gonna be correct JSON format so with JSON it doesn't really care about the spaces like take a look at this the spaces are just for us really and how it has these organized may scroll down I have these spaced like the open bracket Dennis bait bases don't matter in JSON they're just for our convenience now in Y Amal they matter but that's little beyond the scope of CCNA because they ask you about JSON format so the spacing actually doesn't matter but the actual opening curly brackets opening brackets closing brackets and commas that would be a good skill to recognize from a pick list hey which of these is valid JSON format alright let's continue here is now going to move to a different type so previously in this one I was using the this module right here which is the Cisco IOS XC native and in this one I just chose a different module which is the IETF interfaces so out of that capabilities command there is over I think there was over 200 options there as far as modules we could choose from so if we click send here and I'm also doing the authentication still it hasn't changed now it's showing us in JSON format because I still have the we go back to headers I still have the JSON option and the header request that's why it's feeding it back to me in JSON and here is the output so if you notice here it says the content slightly different because we're using a slightly different module let's do another one there's yet another module this is the Cisco IOS XE interfaces - oper module and this is very cool cuz he gave us statistics on the interfaces let me click on send here oh by the way ask ask me how I know all these it's like trial and error I just did the capabilities and look through them and thought oh these look good that looks good and then I tried them and then I get an error it's like what am I missing oh yeah it was just a matter of picking and choosing till I got the ones I wanted but look at this this is showing us the interfaces with the module called Cisco IOS XE interfaces - oper that module and here we have the control plane now if you're in CCNA studies you won't have to worry about the control plane yet but as you get on to the professional level the control plane is a logical interface that is taking a look at all traffic trying to come to the device itself for processing so if somebody's telling that it in or SSH 10 or it has api's coming in and out that the router has to process itself we can actually put control plane policing on the logical control plane to protect the router that we've asked 48 interfaces we can protect the actual control plane itself regardless of which interfaces that traffic is coming in as something's trying to do a do s attack for example against us alright so that's the control plane interface if you scroll down there are more interfaces let me go here's gigabit one fantastic and if we scroll down there's the details there's an octet switch is a fancy way for saying how many bytes in and in unicast and so forth and out fantastic alright so that's an example of just yet a different module now why does this matter if you and I were writing a script that was going to go out and query or look for or push information we could use these various modules with a router that's enabled with the rest comp and we could write an application like a Python script that's calling on these modules and then making changes taking information in based on information writing out data so that's beyond the scope of what we have to do for CCNA but understanding the output here in fact let me ask you a question what is the data format for this output I'll give you three choices yeah Mille XML or JSON it's JSON because it starts with that curly bracket and then also because it states right here that's JSON so even if we chose XML guess what it's still JSON because of the formatting all right let's do a couple more here is interface interfaces operations that module but looking at just gig one only so I just simply add the right parameters to the tail end of that URL I'm still doing authentication we'll click on send and that'll give us the detail is just on gigabit one we don't look at all the interfaces just gigabit one and then if we want like an interface get zero I just swapped it out with interface zero here in this URL and that's showing us the details for interface loopback zero okay so last piece here and what is difficult to do from a command line and that's is to write you want to change something so here's what I did I looked at the output here of the interface loopback zero and I just basically copied oh I'm sorry I went up to IETF interfaces yeah I went to IETF interfaces and I went to loop x0 here and I just copy this and all the way down to here right there that is perfect JSON format or pushing this information if we wanted to do so instead of having to put all the correct amount of really open curly and closed curly everything else I just took what the router fed me and then I went to this post example and I recreated it with tweaking the values and I don't think before this morning I've ever done this with a Cisco router I stood up by my I mean if I play with the definite sandbox and I've done other things but as far as like a router that I brought up from scratch enabled rest comps like I showed you how here and then doing it I don't recall ever doing it before this morning and here's one here's my point if I can do it you can do it and I resisted I resisted I studied for the CCNA and also for encore which I've passed enough to be able to pass those exams but preparing for this gave me a real opportunity to practice more and verify what works and what doesn't work and that's the real secret my hope is that you'll take this basic configuration of right here of how to enable SSL and how to set up easier account and they will rest comp on a device that supports it in even G or gns3 or Cisco modeling labs or live gear if you have the sports it and then try at least this one command a curl right from your command line so you can verify that it works and if you never get to postmen I'm okay with that too but you do try it I think you'll like it and now here's where a postman is really helpful in this post example I'm going to https name IP address rest comp data and I'm using this module IETF - interfaces : interfaces and then what I'm going to do is I I went to body and I simply pasted way to set Keith you mean you you took the output of another interface you pasted it and then you modify the values yes yes I did so right here we're just gonna create loopback five and I specify the type and enabled true by the Aikido so open bracket here that represents the beginning of an array which basically is specifying the IP address and the net mask and before we do this let's go verify that that interface doesn't exist let's go back here I was about to go to the COI I was about to go back to the router and say let's take a look but we can you look right here we go back to this one um I can AskMe a risk on boom and there's loop X zero and gigabit four so they're the only the last interfaces loop X zero there is no loop back five so if we go to a this one we're gonna do a post see up here in the top left we're doing a post not a get and let's take a look at the headers real quick let's specify the content type as yang - data + JSON for authentic for authentication I'm using the model that we talked about as being inherited and under the body here is what it's going to be sent so I'm gonna click on send all right it's not to fanfare II but look at this the status 201 created that means it worked now you might say well Keith how to eat Mary you know you just did a post with the rest coughing so you created this loopback 5 how do you know no need to go to the command line that's the thing I want to just get in your minds is that once you have automation set up and you have a program with a nice beautiful interface that's calling the shots but a little bit boom thousands of them potentially every minute there's no need for you and I'm sorting out that data and providing that data for you but need to go to the command line is that maybe a comfort feeling but in the future it's not gonna be needed unless you're doing some serious trouble shooting on a router that just went belly-up or something alright so let's go back to interfaces I'm gonna go to this right here it's using the ietf interfaces module click on send previously we ran it loopback 0 is the last interface though there's loopback zero and there's loopback 5 and let's do it again so I'm just going to take that same one and I'm going to create loopback 99 and let's give the IP address fun thing about syntax that works the key word there is it works they don't have to reinvent it which is a great reason why we might want to use things like vs code and github make our scripts don't include your passwords by the way that's this lesson either and kind of the hard way but save your code and that way you can replicate it whenever you need to so this is loopback 99 I'm gonna go ahead and click on send drum roll please we got a message saying was created go back to IETF interfaces send that rest comp command and now we have loopback 99 okay wait it's pretty fun let me make sure make sure I have all the pieces covered that I wanted to you I wanted to share with you in this it was going to be a premiere but turned into a live stream because I ran out of time yeah there's not too much of the substitute for labbing stuff up and that goes for anybody studying packet tracer or whatever you have so i'm we enabled rest comp walked through that check we tested rest comp at the CLI that got boring pretty quick however i could show you the syntax and i'd encourage you to try that if you have a rest comp capable device i installed postman this morning and then i simply with some capability they saw inside of a rest comp i simply created some urls and tested them now there's also in the dev net sandbox there is IO s routers XE routers that are available you can test against those I think there's other videos out there about that at the CCNA level which is our focus here that's probably beyond the scope of what you have to do because really the blueprint is saying interpret JSON encoded data check with the curly brackets the commas the brackets the open and close have to match up make sure you're not missing a comma anywhere otherwise it won't work correctly or if you're missing a closing bracket it won't work and also in our previous video on rest comp as a RESTful API we describe the characteristics of rest-based API is including crud create read update and delete and other HTTP HTTP verbs like we just did one here was which was post and the data encoding the formatting which includes JSON so that is it for this presentation of the back half of the rest comp I wanted to give you some ability to actually try this see it better understand it and have some fun with it with some commands that work I'll tell you what I'll do also I will go back to this video sometime the next 48 hours and I'll take all the commands that I just did inside a postman because the other variable was the authentication so I'll I'll mention that as well but I will I will post those in that way you can go back to this video go down into the description and not just say I wonder what that command was you can have them and practice it and see it at work all right automation is a it's not just coming it's here and it's important to be aware of now somebody asked well if we are gonna do automation why am i learning about spanning tree at the command line why am i learning about routing protocols at the command line why am i learning you know it's like you know what the reason we're learning it two things number one it they want you to know what cisco wants you to know it and secondly when automation doesn't work it's really tough to troubleshoot or correct an automation problem if you don't know how the underlying technology works so if you're not familiar with how VTP works while VTP is a bad example for CCNA two example familiar with how OSPF works or how routing protocols work or static routes are floating static routes or ipv6 static routes it's not going to help you too much to automate all day and all night if you don't understand the pieces that are being pushed in or pulled out and how the network actually works that's a stepping stone alright I want to remind everybody that the fundamentals the meat and potatoes are critical to know and they'll serve you well and with that I'm gonna play a little outro music and then I'll be back in just a few moments and take some live questions if you have any right here and then if you want to we'll jump in the discord server afterwards in the voice chat room alright I'll see everybody back in just a few moments thanks everybody [Music] don't get out what you put in Oh all in bed
Info
Channel: Keith Barker
Views: 12,367
Rating: 4.9819818 out of 5
Keywords: keith barker ccna 200-301, Keith Barker live video, keith barker dhcp, restconf tutorial, restconf cisco, restconf example, restconf postman, cisco ccna, json vs xml, json tutorial, network automation, ccna study, network programmability, cisco training, network programmability and automation, cisco automation, network programmability cisco, network programmability basics devnet, network automation cisco, network automation ccna
Id: qeanMXpcHIk
Channel Id: undefined
Length: 37min 14sec (2234 seconds)
Published: Sat Jul 11 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.