WEBVTT

1
00:00:05.015 --> 00:00:06.615
<00:00:05.015>I <00:00:05.189>want <00:00:05.364>to <00:00:05.539>talk <00:00:05.715>a <00:00:05.890>little <00:00:06.064>bit <00:00:06.239>about <00:00:06.414>APIs,

2
00:00:06.615 --> 00:00:09.975
<00:00:06.615>and <00:00:06.770>it's <00:00:06.926>a <00:00:07.081>bit <00:00:07.237>of, <00:00:07.392>uh, <00:00:07.548>me <00:00:07.703>working <00:00:07.859>with <00:00:08.015>APIs

3
00:00:09.995 --> 00:00:11.095
<00:00:09.995>and <00:00:10.325>going <00:00:10.655>through <00:00:10.985>things.

4
00:00:11.115 --> 00:00:13.935
<00:00:11.115>So <00:00:11.208>as <00:00:11.301>you <00:00:11.395>can <00:00:11.488>see, <00:00:11.581>I <00:00:11.675>work <00:00:11.768>in <00:00:11.861>a, <00:00:11.955>uh, <00:00:12.048>in <00:00:12.141>a, <00:00:12.235>in <00:00:12.328>a, <00:00:12.421>in <00:00:12.515>a,

5
00:00:13.935 --> 00:00:18.655
<00:00:13.935>in <00:00:14.075>a <00:00:14.215>FinTech <00:00:14.355>sector, <00:00:14.495>uh, <00:00:14.635>doing, <00:00:14.775>uh, <00:00:14.915>all <00:00:15.055>kind <00:00:15.195>of <00:00:15.335>integrations

6
00:00:18.715 --> 00:00:20.775
<00:00:18.715>and <00:00:18.948>development, <00:00:19.181>architecture, <00:00:19.415>all <00:00:19.648>kind <00:00:19.881>of <00:00:20.115>things.

7
00:00:21.155 --> 00:00:25.935
<00:00:21.155>Before <00:00:21.282>that, <00:00:21.409>I <00:00:21.536>was <00:00:21.664>a <00:00:21.791>consultant <00:00:21.918>for <00:00:22.045>20 <00:00:22.173>ish <00:00:22.300>years, <00:00:22.427>very <00:00:22.555>close

8
00:00:25.935 --> 00:00:28.255
<00:00:25.935>to <00:00:26.110>20 <00:00:26.285>years, <00:00:26.459>I <00:00:26.634>think <00:00:26.810>19 <00:00:26.985>to <00:00:27.160>be <00:00:27.334>precise.

9
00:00:28.355 --> 00:00:31.095
<00:00:28.355>But, <00:00:28.495>uh, <00:00:28.635>then <00:00:28.775>I <00:00:28.915>worked <00:00:29.055>with <00:00:29.195>a <00:00:29.335>lot <00:00:29.475>of <00:00:29.615>different <00:00:29.755>customers,

10
00:00:31.135 --> 00:00:35.495
<00:00:31.135>a <00:00:31.275>lot <00:00:31.415>of <00:00:31.555>different <00:00:31.695>projects, <00:00:31.835>a <00:00:31.975>lot <00:00:32.115>of <00:00:32.255>different, <00:00:32.395>um, <00:00:32.535>things,

11
00:00:35.665 --> 00:00:38.615
<00:00:35.665>everything, <00:00:35.945>all <00:00:36.225>kind <00:00:36.504>of <00:00:36.785>industries, <00:00:37.065>products,

12
00:00:38.615 --> 00:00:40.175
<00:00:38.615>systems <00:00:38.895>and <00:00:39.175>all <00:00:39.455>kind <00:00:39.735>of <00:00:40.015>things.

13
00:00:40.435 --> 00:00:44.015
<00:00:40.435>And <00:00:40.590>every <00:00:40.746>time <00:00:40.901>you <00:00:41.057>would <00:00:41.212>do <00:00:41.368>something <00:00:41.523>related <00:00:41.679>to <00:00:41.835>APIs

14
00:00:44.015 --> 00:00:45.055
<00:00:44.015>as <00:00:44.327>a <00:00:44.639>developer, <00:00:44.951>right?

15
00:00:45.555 --> 00:00:49.495
<00:00:45.555>And <00:00:45.710>then, <00:00:45.866>um, <00:00:46.021>this <00:00:46.177>was <00:00:46.332>created <00:00:46.488>as <00:00:46.643>a <00:00:46.799>part <00:00:46.955>of

16
00:00:50.005 --> 00:00:52.815
<00:00:50.005>part <00:00:50.285>ran <00:00:50.565>part, <00:00:50.845>uh, <00:00:51.125>you <00:00:51.405>know,

17
00:00:53.265 --> 00:00:55.535
<00:00:53.265>let's <00:00:53.420>do <00:00:53.576>things <00:00:53.731>a <00:00:53.887>little <00:00:54.042>bit <00:00:54.198>better, <00:00:54.353>kind <00:00:54.509>of <00:00:54.665>talk

18
00:00:55.835 --> 00:01:00.175
<00:00:55.835>and <00:00:56.035>let's <00:00:56.235>see <00:00:56.435>how <00:00:56.635>far <00:00:56.835>we'll <00:00:57.035>get <00:00:57.235>today.

19
00:01:01.715 --> 00:01:05.335
<00:01:01.715>So <00:01:01.870>the <00:01:02.026>first <00:01:02.181>thing <00:01:02.337>as <00:01:02.492>a <00:01:02.648>good, <00:01:02.803>all <00:01:02.959>developers <00:01:03.115>do,

20
00:01:05.415 --> 00:01:06.735
<00:01:05.415>I <00:01:05.712>start <00:01:06.009>counting <00:01:06.306>from <00:01:06.603>zero.

21
00:01:06.875 --> 00:01:09.975
<00:01:06.875>So <00:01:07.030>the <00:01:07.186>chapter <00:01:07.341>zero <00:01:07.497>of <00:01:07.652>the <00:01:07.808>whole <00:01:07.963>thing <00:01:08.119>is, <00:01:08.275>um,

22
00:01:10.245 --> 00:01:11.535
<00:01:10.245>what <00:01:10.438>are <00:01:10.632>we <00:01:10.825>gonna <00:01:11.019>be <00:01:11.212>talking <00:01:11.405>about?

23
00:01:11.635 --> 00:01:14.895
<00:01:11.635>So <00:01:11.810>what <00:01:11.985>does <00:01:12.160>it <00:01:12.335>actually <00:01:12.510>mean, <00:01:12.685>building <00:01:12.860>rest <00:01:13.035>APIs

24
00:01:15.035 --> 00:01:17.135
<00:01:15.035>or <00:01:15.501>rest <00:01:15.968>full <00:01:16.435>APIs?

25
00:01:17.135 --> 00:01:18.575
<00:01:17.135>And <00:01:17.459>what's <00:01:17.783>the <00:01:18.107>difference <00:01:18.431>really?

26
00:01:19.355 --> 00:01:22.775
<00:01:19.355>And <00:01:19.495>uh, <00:01:19.635>and, <00:01:19.775>and, <00:01:19.915>you <00:01:20.055>know, <00:01:20.195>how <00:01:20.335>do <00:01:20.475>we <00:01:20.615>build <00:01:20.755>those?

27
00:01:23.075 --> 00:01:26.375
<00:01:23.075>And <00:01:23.202>not <00:01:23.329>the <00:01:23.456>most <00:01:23.584>important <00:01:23.711>probably <00:01:23.838>thing <00:01:23.965>for <00:01:24.093>a <00:01:24.220>lot <00:01:24.347>of <00:01:24.475>us,

28
00:01:26.795 --> 00:01:27.935
<00:01:26.795>how <00:01:27.051>do <00:01:27.308>we <00:01:27.564>maintain <00:01:27.821>them?

29
00:01:28.005 --> 00:01:30.895
<00:01:28.005>Because, <00:01:28.179>you <00:01:28.354>know, <00:01:28.530>building <00:01:28.705>thing <00:01:28.880>is <00:01:29.054>really <00:01:29.229>nice, <00:01:29.405>but

30
00:01:31.035 --> 00:01:32.655
<00:01:31.035>unless, <00:01:31.315>unless <00:01:31.595>you're <00:01:31.875>just <00:01:32.155>building <00:01:32.435>it

31
00:01:32.655 --> 00:01:37.295
<00:01:32.655>and <00:01:32.810>just <00:01:32.966>running <00:01:33.121>away, <00:01:33.277>you <00:01:33.432>still <00:01:33.588>have <00:01:33.743>to <00:01:33.899>maintain <00:01:34.055>that.

32
00:01:37.475 --> 00:01:40.335
<00:01:37.475>Or <00:01:37.615>even <00:01:37.755>worse, <00:01:37.895>you <00:01:38.035>have <00:01:38.175>to <00:01:38.315>take <00:01:38.455>over <00:01:38.595>for <00:01:38.735>somebody <00:01:38.875>else.

33
00:01:41.115 --> 00:01:42.175
<00:01:41.115>And <00:01:41.305>then <00:01:41.496>you're <00:01:41.687>just <00:01:41.878>sitting <00:01:42.069>there.

34
00:01:42.175 --> 00:01:46.255
<00:01:42.175>It's <00:01:42.350>like, <00:01:42.524>who <00:01:42.700>made <00:01:42.875>this <00:01:43.050>thing? <00:01:43.225>Anyone <00:01:43.399>experience <00:01:43.575>that?

35
00:01:47.995 --> 00:01:50.015
<00:01:47.995>Yes. <00:01:48.228>Okay. <00:01:48.461>A <00:01:48.695>room <00:01:48.928>full <00:01:49.161>of <00:01:49.395>hands.

36
00:01:50.595 --> 00:01:53.855
<00:01:50.595>Uh, <00:01:50.770>if <00:01:50.945>those <00:01:51.120>who <00:01:51.295>did <00:01:51.470>not <00:01:51.645>raise <00:01:51.820>your <00:01:51.995>hands,

37
00:01:53.955 --> 00:01:55.815
<00:01:53.955>you <00:01:54.188>probably <00:01:54.421>have <00:01:54.655>or <00:01:54.888>you <00:01:55.121>will <00:01:55.355>have.

38
00:01:55.905 --> 00:02:00.015
<00:01:55.905>We'll <00:01:56.105>see. <00:01:56.305>But, <00:01:56.505>you <00:01:56.705>know, <00:01:56.905>so <00:01:57.105>chapter <00:01:57.305>one,

39
00:02:00.355 --> 00:02:02.015
<00:02:00.355>anyone <00:02:00.705>knows <00:02:01.055>what <00:02:01.405>that <00:02:01.755>means?

40
00:02:05.305 --> 00:02:08.765
<00:02:05.305>No. <00:02:05.538>Not <00:02:05.771>cleaning <00:02:06.005>clothes, <00:02:06.238>but <00:02:06.471>not <00:02:06.705>anyone.

41
00:02:10.155 --> 00:02:14.125
<00:02:10.155>Soap. <00:02:10.354>Yes. <00:02:10.555>Anyone <00:02:10.755>had <00:02:10.955>a <00:02:11.155>pleasure <00:02:11.355>working <00:02:11.555>with?

42
00:02:15.235 --> 00:02:17.765
<00:02:15.235>Yeah, <00:02:15.390>I'm <00:02:15.546>not <00:02:15.701>talking <00:02:15.857>about <00:02:16.012>the <00:02:16.168>shower, <00:02:16.323>but, <00:02:16.479>you <00:02:16.635>know.

43
00:02:18.185 --> 00:02:20.445
<00:02:18.185>Um, <00:02:18.385>but <00:02:18.585>actually <00:02:18.785>I <00:02:18.985>am <00:02:19.185>talking <00:02:19.385>about <00:02:19.585>shower.

44
00:02:20.585 --> 00:02:24.165
<00:02:20.585>So <00:02:20.760>I <00:02:20.935>was <00:02:21.110>in <00:02:21.285>a <00:02:21.460>conference, <00:02:21.635>um, <00:02:21.810>a <00:02:21.985>month

45
00:02:24.185 --> 00:02:25.565
<00:02:24.185>or <00:02:24.433>two <00:02:24.681>months <00:02:24.930>ago <00:02:25.178>in <00:02:25.427>Poland,

46
00:02:25.565 --> 00:02:27.325
<00:02:25.565>and <00:02:25.765>I <00:02:25.965>was <00:02:26.165>doing <00:02:26.365>a <00:02:26.565>totally <00:02:26.765>different <00:02:26.965>talk.

47
00:02:27.755 --> 00:02:30.445
<00:02:27.755>This <00:02:27.910>was <00:02:28.066>a <00:02:28.221>picture <00:02:28.377>from <00:02:28.532>the <00:02:28.688>bathroom, <00:02:28.843>so <00:02:28.999>that <00:02:29.155>was

48
00:02:30.445 --> 00:02:32.725
<00:02:30.445>where <00:02:30.644>you <00:02:30.845>put <00:02:31.045>your, <00:02:31.245>uh, <00:02:31.445>your <00:02:31.644>towel <00:02:31.845>on.

49
00:02:32.945 --> 00:02:35.045
<00:02:32.945>And <00:02:33.120>they <00:02:33.295>actually <00:02:33.470>were <00:02:33.644>talking <00:02:33.820>about <00:02:33.995>the <00:02:34.170>different <00:02:34.345>soap.

50
00:02:35.145 --> 00:02:40.125
<00:02:35.145>But <00:02:35.300>anyone <00:02:35.456>experience <00:02:35.611>doing <00:02:35.767>that <00:02:35.922>with <00:02:36.078>the, <00:02:36.233>the <00:02:36.389>API <00:02:36.545>soap,

51
00:02:40.475 --> 00:02:45.365
<00:02:40.475>APIs <00:02:40.650>and <00:02:40.825>stuff, <00:02:41.000>using <00:02:41.174>soap <00:02:41.350>and <00:02:41.525>singing <00:02:41.700>one <00:02:41.875>hand.

52
00:02:46.005 --> 00:02:50.725
<00:02:46.005>I, <00:02:46.144>I <00:02:46.285>wanna <00:02:46.424>talk <00:02:46.565>to <00:02:46.704>you <00:02:46.845>afterwards, <00:02:46.984>whoever <00:02:47.125>you <00:02:47.265>are, <00:02:47.405>come

53
00:02:50.845 --> 00:02:53.165
<00:02:50.845>and <00:02:51.125>share <00:02:51.405>your <00:02:51.685>wisdom <00:02:51.965>with <00:02:52.245>me.

54
00:02:53.505 --> 00:02:57.445
<00:02:53.505>Uh, <00:02:53.704>cursing <00:02:53.905>more, <00:02:54.105>like, <00:02:54.305>yes, <00:02:54.505>that's <00:02:54.704>the <00:02:54.905>thing.

55
00:02:57.505 --> 00:02:59.525
<00:02:57.505>That's, <00:02:57.738>that's <00:02:57.971>why <00:02:58.204>I <00:02:58.438>was <00:02:58.671>saying <00:02:58.905>singing.

56
00:03:00.185 --> 00:03:03.325
<00:03:00.185>And <00:03:00.301>there <00:03:00.418>was, <00:03:00.535>there <00:03:00.651>was <00:03:00.768>one <00:03:00.885>hand. <00:03:01.001>I, <00:03:01.118>I, <00:03:01.235>I, <00:03:01.351>I <00:03:01.468>saw <00:03:01.585>that.

57
00:03:04.505 --> 00:03:06.765
<00:03:04.505>Anyway, <00:03:04.785>um, <00:03:05.065>that's <00:03:05.345>my <00:03:05.625>bold <00:03:05.905>statement.

58
00:03:06.865 --> 00:03:09.605
<00:03:06.865>So <00:03:06.992>I <00:03:07.119>do <00:03:07.246>believe <00:03:07.374>that, <00:03:07.501>you <00:03:07.628>know, <00:03:07.755>world <00:03:07.883>is <00:03:08.010>a <00:03:08.137>bit <00:03:08.265>better.

59
00:03:09.725 --> 00:03:11.685
<00:03:09.725>I <00:03:10.005>started <00:03:10.285>working <00:03:10.565>as <00:03:10.845>a <00:03:11.125>developer.

60
00:03:12.145 --> 00:03:14.085
<00:03:12.145>Uh, <00:03:12.378>actually <00:03:12.611>funny <00:03:12.845>enough, <00:03:13.078>I <00:03:13.311>started <00:03:13.545>working

61
00:03:14.105 --> 00:03:15.525
<00:03:14.105>as <00:03:14.424>a <00:03:14.744>full <00:03:15.063>stack <00:03:15.383>developer

62
00:03:15.525 --> 00:03:18.445
<00:03:15.525>before <00:03:15.680>actually <00:03:15.836>the <00:03:15.991>word <00:03:16.147>full <00:03:16.302>stack <00:03:16.458>was <00:03:16.613>actually <00:03:16.769>a <00:03:16.925>thing.

63
00:03:18.825 --> 00:03:21.205
<00:03:18.825>And <00:03:19.058>that <00:03:19.291>was, <00:03:19.524>um, <00:03:19.758>early <00:03:19.991>two <00:03:20.225>thousands.

64
00:03:21.565 --> 00:03:22.565
<00:03:21.565>I <00:03:21.745>had <00:03:21.925>to <00:03:22.105>work <00:03:22.285>with <00:03:22.465>soap.

65
00:03:23.025 --> 00:03:27.005
<00:03:23.025>Uh, <00:03:23.152>and, <00:03:23.279>uh, <00:03:23.406>it <00:03:23.534>was, <00:03:23.661>there <00:03:23.788>were <00:03:23.915>some <00:03:24.043>good <00:03:24.170>parts <00:03:24.297>of <00:03:24.425>it,

66
00:03:27.065 --> 00:03:29.205
<00:03:27.065>but <00:03:27.220>a <00:03:27.376>lot <00:03:27.531>of <00:03:27.687>those <00:03:27.842>things <00:03:27.998>were <00:03:28.153>a <00:03:28.309>bit <00:03:28.465>pain.

67
00:03:30.305 --> 00:03:33.285
<00:03:30.305>And <00:03:30.445>the <00:03:30.585>good <00:03:30.725>things <00:03:30.865>is, <00:03:31.005>which <00:03:31.145>was <00:03:31.285>kind <00:03:31.425>of <00:03:31.565>before <00:03:31.705>rest,

68
00:03:33.345 --> 00:03:34.925
<00:03:33.345>and <00:03:33.500>quite <00:03:33.656>a <00:03:33.811>bit <00:03:33.967>of <00:03:34.122>that <00:03:34.278>was <00:03:34.433>a <00:03:34.589>good <00:03:34.745>thing.

69
00:03:35.265 --> 00:03:38.005
<00:03:35.265>It <00:03:35.440>was <00:03:35.614>that <00:03:35.790>we <00:03:35.964>had <00:03:36.140>to <00:03:36.315>work <00:03:36.489>with <00:03:36.665>files.

70
00:03:38.145 --> 00:03:39.805
<00:03:38.145>So <00:03:38.425>we <00:03:38.705>actually <00:03:38.985>had <00:03:39.265>a <00:03:39.545>contract.

71
00:03:40.025 --> 00:03:42.925
<00:03:40.025>You <00:03:40.165>had <00:03:40.305>a <00:03:40.445>file <00:03:40.585>that <00:03:40.725>will <00:03:40.865>define <00:03:41.005>how <00:03:41.145>things <00:03:41.285>looked <00:03:41.425>like,

72
00:03:43.185 --> 00:03:47.005
<00:03:43.185>and <00:03:43.360>then <00:03:43.535>you <00:03:43.710>can <00:03:43.885>just, <00:03:44.060>uh, <00:03:44.235>generate <00:03:44.410>your <00:03:44.585>code

73
00:03:47.065 --> 00:03:49.285
<00:03:47.065>and <00:03:47.220>everything <00:03:47.376>that <00:03:47.531>can <00:03:47.687>actually <00:03:47.842>be <00:03:47.998>a <00:03:48.153>client <00:03:48.309>for <00:03:48.465>that.

74
00:03:49.305 --> 00:03:51.045
<00:03:49.305>And <00:03:49.480>that <00:03:49.655>was <00:03:49.830>really <00:03:50.005>nice. <00:03:50.180>I <00:03:50.355>really <00:03:50.530>enjoyed <00:03:50.705>that.

75
00:03:51.575 --> 00:03:55.805
<00:03:51.575>Generating <00:03:51.714>part <00:03:51.855>was <00:03:51.994>not <00:03:52.135>so <00:03:52.274>fun <00:03:52.415>because <00:03:52.554>it <00:03:52.695>would <00:03:52.834>always <00:03:52.975>fail.

76
00:03:55.805 --> 00:03:57.525
<00:03:55.805>Something <00:03:56.085>would <00:03:56.365>missing, <00:03:56.645>would've <00:03:56.925>been <00:03:57.205>missing.

77
00:03:57.555 --> 00:04:00.165
<00:03:57.555>Some <00:03:57.710>of <00:03:57.866>the <00:03:58.021>schemas <00:03:58.177>were <00:03:58.332>missing <00:03:58.488>and <00:03:58.643>stuff <00:03:58.799>like <00:03:58.955>that.

78
00:04:00.465 --> 00:04:03.285
<00:04:00.465>But <00:04:00.698>still, <00:04:00.931>it <00:04:01.165>was <00:04:01.398>pretty <00:04:01.631>good <00:04:01.865>thing

79
00:04:03.285 --> 00:04:05.285
<00:04:03.285>because <00:04:03.484>you <00:04:03.685>actually <00:04:03.885>know <00:04:04.085>how <00:04:04.285>things <00:04:04.484>are <00:04:04.685>defined.

80
00:04:05.285 --> 00:04:06.285
<00:04:05.285>Rest <00:04:05.585>is <00:04:05.885>getting <00:04:06.185>there.

81
00:04:06.705 --> 00:04:09.045
<00:04:06.705>It <00:04:06.860>takes <00:04:07.016>some <00:04:07.171>time, <00:04:07.327>but <00:04:07.482>you <00:04:07.638>know, <00:04:07.793>we <00:04:07.949>are <00:04:08.105>kind

82
00:04:09.045 --> 00:04:10.165
<00:04:09.045>of <00:04:09.213>in <00:04:09.381>that <00:04:09.548>direction <00:04:09.716>there <00:04:09.885>as <00:04:10.053>well.

83
00:04:10.185 --> 00:04:12.965
<00:04:10.185>But, <00:04:10.340>you <00:04:10.496>know, <00:04:10.651>it <00:04:10.807>was <00:04:10.962>nice. <00:04:11.118>You <00:04:11.273>could <00:04:11.429>generate <00:04:11.585>codes,

84
00:04:13.335 --> 00:04:14.725
<00:04:13.335>which <00:04:13.543>was <00:04:13.752>kind <00:04:13.960>of <00:04:14.169>nice <00:04:14.377>as <00:04:14.585>well.

85
00:04:14.725 --> 00:04:15.805
<00:04:14.725>There <00:04:14.968>was, <00:04:15.211>again, <00:04:15.454>a <00:04:15.697>pain.

86
00:04:16.025 --> 00:04:18.485
<00:04:16.024>And <00:04:16.152>then <00:04:16.279>you <00:04:16.406>had <00:04:16.534>the <00:04:16.661>next <00:04:16.788>paine <00:04:16.915>factor <00:04:17.043>of <00:04:17.170>that <00:04:17.297>was <00:04:17.424>that

87
00:04:18.485 --> 00:04:19.845
<00:04:18.485>what <00:04:18.689>do <00:04:18.893>you <00:04:19.097>do <00:04:19.301>with <00:04:19.505>generated <00:04:19.709>code?

88
00:04:20.185 --> 00:04:22.605
<00:04:20.185>Do <00:04:20.418>you <00:04:20.651>commit <00:04:20.885>it? <00:04:21.118>Do <00:04:21.351>you, <00:04:21.584>um,

89
00:04:24.625 --> 00:04:26.445
<00:04:24.625>let <00:04:24.905>it <00:04:25.185>just <00:04:25.465>regenerate <00:04:25.745>every <00:04:26.025>time?

90
00:04:26.825 --> 00:04:28.525
<00:04:26.825>How <00:04:27.000>do <00:04:27.175>you <00:04:27.349>make <00:04:27.525>sure <00:04:27.700>that <00:04:27.875>it <00:04:28.050>is <00:04:28.224>able

91
00:04:28.525 --> 00:04:29.965
<00:04:28.525>to <00:04:28.849>be <00:04:29.173>generated <00:04:29.496>later <00:04:29.820>on?

92
00:04:30.345 --> 00:04:33.245
<00:04:30.345>How <00:04:30.485>do <00:04:30.625>you <00:04:30.765>make <00:04:30.905>sure <00:04:31.045>that <00:04:31.185>it's <00:04:31.325>actually <00:04:31.465>being <00:04:31.605>generated <00:04:31.745>in,

93
00:04:33.305 --> 00:04:34.725
<00:04:33.305>in, <00:04:33.560>in, <00:04:33.816>in, <00:04:34.071>in <00:04:34.327>10 <00:04:34.583>years?

94
00:04:34.905 --> 00:04:36.845
<00:04:34.905>And <00:04:35.138>what <00:04:35.371>people <00:04:35.604>did, <00:04:35.838>people <00:04:36.071>did <00:04:36.304>some

95
00:04:37.165 --> 00:04:38.765
<00:04:37.165>horrible, <00:04:37.631>horrible, <00:04:38.098>horrible <00:04:38.565>things.

96
00:04:38.875 --> 00:04:40.925
<00:04:38.875>They <00:04:39.155>would <00:04:39.435>generate <00:04:39.715>code, <00:04:39.995>commit <00:04:40.275>it,

97
00:04:41.345 --> 00:04:43.045
<00:04:41.345>and <00:04:41.578>next <00:04:41.811>time <00:04:42.045>would <00:04:42.278>actually <00:04:42.511>edit <00:04:42.745>it.

98
00:04:45.115 --> 00:04:47.405
<00:04:45.115>Good <00:04:45.465>luck <00:04:45.815>maintaining <00:04:46.165>that, <00:04:46.515>right?

99
00:04:48.785 --> 00:04:51.485
<00:04:48.784>Um, <00:04:49.135>yeah, <00:04:49.484>that <00:04:49.835>was <00:04:50.184>it.

100
00:04:51.485 --> 00:04:52.605
<00:04:51.485>And <00:04:51.653>then <00:04:51.821>we <00:04:51.989>also <00:04:52.157>had <00:04:52.325>like, <00:04:52.493>did,

101
00:04:52.605 --> 00:04:54.365
<00:04:52.605>did <00:04:52.838>everything <00:04:53.071>was <00:04:53.305>in <00:04:53.538>an <00:04:53.771>envelope, <00:04:54.005>right?

102
00:04:54.385 --> 00:04:57.485
<00:04:54.385>You <00:04:54.512>had <00:04:54.639>a, <00:04:54.766>a <00:04:54.894>soap <00:04:55.021>envelope <00:04:55.148>and <00:04:55.275>soap <00:04:55.403>header <00:04:55.530>and <00:04:55.657>soap, <00:04:55.784>body

103
00:04:57.505 --> 00:04:58.525
<00:04:57.505>and <00:04:57.734>soap, <00:04:57.964>you <00:04:58.193>know, <00:04:58.423>everything.

104
00:04:58.525 --> 00:05:01.285
<00:04:58.525>And <00:04:58.700>everything <00:04:58.875>was <00:04:59.049>XML, <00:04:59.224>and <00:04:59.400>it <00:04:59.575>was <00:04:59.750>very <00:04:59.924>verbose.

105
00:05:01.465 --> 00:05:02.645
<00:05:01.465>And, <00:05:01.818>you <00:05:02.173>know, <00:05:02.527>reading

106
00:05:02.715 --> 00:05:05.005
<00:05:02.715>that <00:05:02.890>I'm <00:05:03.065>not <00:05:03.239>a <00:05:03.414>computer <00:05:03.590>last <00:05:03.765>time <00:05:03.940>I <00:05:04.114>checked,

107
00:05:05.265 --> 00:05:07.845
<00:05:05.265>so <00:05:05.440>it's <00:05:05.615>a <00:05:05.789>bit <00:05:05.965>hard <00:05:06.140>to <00:05:06.315>parse <00:05:06.490>for <00:05:06.664>us

108
00:05:09.875 --> 00:05:10.965
<00:05:09.875>life <00:05:10.365>after <00:05:10.856>soap.

109
00:05:10.985 --> 00:05:13.205
<00:05:10.985>So <00:05:11.140>a <00:05:11.296>lot <00:05:11.451>of <00:05:11.607>examples <00:05:11.762>that <00:05:11.918>I'll <00:05:12.073>be <00:05:12.229>using <00:05:12.385>there,

110
00:05:13.275 --> 00:05:16.005
<00:05:13.275>I'll <00:05:13.430>be <00:05:13.586>using <00:05:13.741>Jakarta, <00:05:13.897>E <00:05:14.052>and <00:05:14.208>JAMA <00:05:14.363>and <00:05:14.519>all <00:05:14.674>that,

111
00:05:16.065 --> 00:05:18.085
<00:05:16.065>but <00:05:16.265>if <00:05:16.465>you <00:05:16.665>are <00:05:16.865>not <00:05:17.065>that <00:05:17.265>way <00:05:17.465>inclined,

112
00:05:18.085 --> 00:05:19.365
<00:05:18.085>if <00:05:18.315>you're <00:05:18.545>using <00:05:18.776>some <00:05:19.006>other <00:05:19.237>language

113
00:05:19.365 --> 00:05:21.005
<00:05:19.365>or <00:05:19.645>something <00:05:19.925>else, <00:05:20.205>it <00:05:20.485>doesn't <00:05:20.765>matter.

114
00:05:21.005 --> 00:05:23.485
<00:05:21.005>This <00:05:21.132>is <00:05:21.259>just <00:05:21.386>examples <00:05:21.514>just <00:05:21.641>to <00:05:21.768>show <00:05:21.895>you <00:05:22.023>how <00:05:22.150>things <00:05:22.277>are <00:05:22.405>done.

115
00:05:23.825 --> 00:05:28.205
<00:05:23.825>So, <00:05:23.952>you <00:05:24.079>know, <00:05:24.206>you <00:05:24.334>will <00:05:24.461>find <00:05:24.588>similar <00:05:24.715>things <00:05:24.843>in, <00:05:24.970>in, <00:05:25.097>in <00:05:25.224>other,

116
00:05:28.305 --> 00:05:30.285
<00:05:28.305>uh, <00:05:28.655>languages, <00:05:29.005>platforms, <00:05:29.355>whatever, <00:05:29.705>whatnot.

117
00:05:30.745 --> 00:05:34.405
<00:05:30.745>So <00:05:30.885>after, <00:05:31.025>so <00:05:31.165>we <00:05:31.305>actually <00:05:31.445>have <00:05:31.585>rest <00:05:31.725>clients, <00:05:31.865>we <00:05:32.005>don't <00:05:32.145>have

118
00:05:34.405 --> 00:05:38.125
<00:05:34.405>to <00:05:34.521>do <00:05:34.638>a <00:05:34.755>lot <00:05:34.871>of, <00:05:34.988>most <00:05:35.104>of <00:05:35.221>the <00:05:35.338>languages, <00:05:35.455>a <00:05:35.571>lot <00:05:35.688>of <00:05:35.804>languages

119
00:05:38.225 --> 00:05:41.285
<00:05:38.225>or, <00:05:38.458>you <00:05:38.691>know, <00:05:38.925>even <00:05:39.158>libraries <00:05:39.391>like <00:05:39.625>Jakarta

120
00:05:41.285 --> 00:05:42.845
<00:05:41.284>or <00:05:41.460>Spring <00:05:41.635>Boot <00:05:41.809>or <00:05:41.984>whatever <00:05:42.159>you <00:05:42.335>might <00:05:42.510>be <00:05:42.684>using.

121
00:05:43.295 --> 00:05:45.605
<00:05:43.295>We'll <00:05:43.528>have <00:05:43.761>a <00:05:43.995>form <00:05:44.228>of <00:05:44.461>rest <00:05:44.695>clients.

122
00:05:45.625 --> 00:05:49.325
<00:05:45.625>So <00:05:45.780>you'd <00:05:45.936>have <00:05:46.091>something <00:05:46.247>that <00:05:46.402>you <00:05:46.558>can <00:05:46.713>define <00:05:46.869>as <00:05:47.025>an,

123
00:05:49.505 --> 00:05:52.805
<00:05:49.505>an <00:05:49.632>end <00:05:49.759>point, <00:05:49.886>and <00:05:50.014>you <00:05:50.141>can <00:05:50.268>define <00:05:50.395>a <00:05:50.523>few <00:05:50.650>things <00:05:50.777>about <00:05:50.905>it,

124
00:05:53.145 --> 00:05:55.365
<00:05:53.145>and <00:05:53.320>then <00:05:53.495>it'll <00:05:53.669>just <00:05:53.844>automatically <00:05:54.020>map <00:05:54.195>things <00:05:54.370>for <00:05:54.544>you.

125
00:05:55.365 --> 00:05:57.965
<00:05:55.365>That's <00:05:55.540>really <00:05:55.715>nice. <00:05:55.890>And <00:05:56.065>then <00:05:56.240>from <00:05:56.415>speaking <00:05:56.590>of <00:05:56.765>mapping,

126
00:05:57.985 --> 00:06:00.845
<00:05:57.985>you <00:05:58.160>have <00:05:58.335>like <00:05:58.510>JBJP, <00:05:58.685>you <00:05:58.860>know, <00:05:59.035>all <00:05:59.210>those <00:05:59.385>things

127
00:06:00.845 --> 00:06:02.485
<00:06:00.845>that <00:06:01.195>do <00:06:01.545>serialization <00:06:01.895>for <00:06:02.245>us.

128
00:06:02.705 --> 00:06:05.085
<00:06:02.705>If <00:06:02.938>you're <00:06:03.171>using <00:06:03.405>other <00:06:03.638>languages, <00:06:03.871>other <00:06:04.104>frameworks

129
00:06:05.085 --> 00:06:07.645
<00:06:05.085>or <00:06:05.260>whatever, <00:06:05.435>you'll <00:06:05.609>have <00:06:05.784>some <00:06:05.960>other <00:06:06.135>ways <00:06:06.310>of <00:06:06.484>serializing.

130
00:06:07.665 --> 00:06:09.925
<00:06:07.665>You <00:06:07.865>do <00:06:08.065>not <00:06:08.265>have <00:06:08.465>to <00:06:08.665>actually <00:06:08.865>parse <00:06:09.065>Jason

131
00:06:10.185 --> 00:06:11.565
<00:06:10.185>and <00:06:10.362>do <00:06:10.539>all <00:06:10.717>these <00:06:10.894>kind <00:06:11.072>of <00:06:11.249>things, <00:06:11.427>right?

132
00:06:13.025 --> 00:06:17.125
<00:06:13.025>Um, <00:06:13.224>that <00:06:13.424>was <00:06:13.625>kind <00:06:13.825>of <00:06:14.025>the <00:06:14.224>basics. <00:06:14.424>Basics.

133
00:06:17.125 --> 00:06:20.885
<00:06:17.125>And <00:06:17.325>now <00:06:17.525>is <00:06:17.725>the <00:06:17.925>basics. <00:06:18.125>Uh, <00:06:18.325>rest <00:06:18.525>basics.

134
00:06:20.905 --> 00:06:24.845
<00:06:20.905>So <00:06:21.044>what, <00:06:21.184>what <00:06:21.325>is <00:06:21.465>rest <00:06:21.604>basics? <00:06:21.744>What <00:06:21.885>do <00:06:22.025>we <00:06:22.164>talk <00:06:22.304>about?

135
00:06:24.955 --> 00:06:27.365
<00:06:24.955>Well, <00:06:25.155>you <00:06:25.354>know, <00:06:25.555>let's <00:06:25.755>talk <00:06:25.955>about <00:06:26.155>status <00:06:26.354>codes.

136
00:06:28.425 --> 00:06:29.485
<00:06:28.425>You <00:06:28.584>know <00:06:28.743>where <00:06:28.902>I'm <00:06:29.061>going <00:06:29.220>with <00:06:29.379>this.

137
00:06:31.585 --> 00:06:35.045
<00:06:31.585>Um, <00:06:31.864>have <00:06:32.145>you <00:06:32.424>seen <00:06:32.705>this <00:06:32.984>before?

138
00:06:37.625 --> 00:06:42.445
<00:06:37.625>Yes. <00:06:37.765>Do <00:06:37.905>we <00:06:38.045>enjoy <00:06:38.185>seeing <00:06:38.325>that? <00:06:38.465>Yeah, <00:06:38.605>no. <00:06:38.745>Yeah, <00:06:38.885>I <00:06:39.025>know.

139
00:06:42.565 --> 00:06:46.245
<00:06:42.565>I <00:06:42.740>know. <00:06:42.915>Um, <00:06:43.090>oh, <00:06:43.265>this, <00:06:43.440>oh, <00:06:43.615>okay, <00:06:43.790>okay, <00:06:43.965>okay.

140
00:06:46.245 --> 00:06:48.685
<00:06:46.245>This <00:06:46.361>one <00:06:46.478>is <00:06:46.595>good. <00:06:46.711>So <00:06:46.828>the <00:06:46.945>other <00:06:47.061>one, <00:06:47.178>I <00:06:47.295>just <00:06:47.411>did <00:06:47.528>one <00:06:47.645>liner.

141
00:06:48.715 --> 00:06:50.725
<00:06:48.715>It's <00:06:48.995>fine, <00:06:49.275>right? <00:06:49.555>This <00:06:49.835>was <00:06:50.115>500.

142
00:06:50.825 --> 00:06:54.005
<00:06:50.825>And <00:06:50.965>this <00:06:51.104>is <00:06:51.245>me <00:06:51.385>experience <00:06:51.525>say <00:06:51.664>that <00:06:51.805>around <00:06:51.945>a <00:06:52.085>month <00:06:52.224>ago.

143
00:06:54.185 --> 00:06:56.885
<00:06:54.185>And <00:06:54.312>I, <00:06:54.439>I'm, <00:06:54.566>I'm <00:06:54.694>kind <00:06:54.821>of <00:06:54.948>gonna <00:06:55.075>do <00:06:55.203>it <00:06:55.330>line <00:06:55.457>by <00:06:55.585>line

144
00:06:56.905 --> 00:06:58.605
<00:06:56.905>for <00:06:57.184>a <00:06:57.465>bit <00:06:57.744>more <00:06:58.025>dramatic <00:06:58.304>effect.

145
00:06:59.265 --> 00:07:03.645
<00:06:59.265>So, <00:06:59.544>um, <00:06:59.825>right, <00:07:00.104>the, <00:07:00.385>the <00:07:00.664>suspense,

146
00:07:05.155 --> 00:07:08.435
<00:07:05.155>okay, <00:07:05.621>500 <00:07:06.088>server <00:07:06.554>right

147
00:07:10.755 --> 00:07:11.315
messages,

148
00:07:17.745 --> 00:07:18.875
<00:07:17.745>what <00:07:18.253>happened <00:07:18.762>here?

149
00:07:20.075 --> 00:07:22.955
<00:07:20.075>I <00:07:20.275>literally <00:07:20.474>got <00:07:20.675>that <00:07:20.875>error <00:07:21.075>some <00:07:21.275>months <00:07:21.474>ago

150
00:07:23.375 --> 00:07:25.635
<00:07:23.375>and <00:07:23.515>it <00:07:23.655>was <00:07:23.795>like <00:07:23.935>500, <00:07:24.075>there's <00:07:24.215>something <00:07:24.355>wrong <00:07:24.495>with <00:07:24.635>my <00:07:24.775>server.

151
00:07:25.895 --> 00:07:28.675
<00:07:25.895>Oh <00:07:26.128>no, <00:07:26.361>it's <00:07:26.594>not. <00:07:26.828>It's <00:07:27.061>this <00:07:27.294>backend

152
00:07:28.775 --> 00:07:30.875
<00:07:28.775>of <00:07:29.054>a <00:07:29.335>backend <00:07:29.614>that <00:07:29.895>is <00:07:30.174>failing.

153
00:07:31.415 --> 00:07:36.195
<00:07:31.415>And <00:07:31.531>then, <00:07:31.648>you <00:07:31.765>know, <00:07:31.881>you <00:07:31.998>are <00:07:32.115>getting <00:07:32.231>500. <00:07:32.348>Can <00:07:32.465>we <00:07:32.581>not <00:07:32.698>do <00:07:32.815>that?

154
00:07:38.235 --> 00:07:40.095
<00:07:38.235>Um, <00:07:38.435>this <00:07:38.635>is <00:07:38.835>from <00:07:39.035>a <00:07:39.235>friend <00:07:39.435>of <00:07:39.635>mine.

155
00:07:40.155 --> 00:07:42.175
<00:07:40.155>So <00:07:40.354>this <00:07:40.554>is <00:07:40.755>a <00:07:40.955>screenshot <00:07:41.155>of <00:07:41.354>a <00:07:41.554>screenshot

156
00:07:42.175 --> 00:07:43.935
<00:07:42.175>of <00:07:42.375>a <00:07:42.575>screenshot, <00:07:42.775>but <00:07:42.975>it's <00:07:43.175>actually <00:07:43.375>a <00:07:43.575>thing.

157
00:07:43.935 --> 00:07:47.655
<00:07:43.935>And <00:07:44.075>a <00:07:44.215>friend <00:07:44.355>of <00:07:44.495>mine <00:07:44.635>sent <00:07:44.775>that <00:07:44.915>from <00:07:45.055>a <00:07:45.195>legit <00:07:45.335>documentation

158
00:07:48.235 --> 00:07:49.255
<00:07:48.235>of <00:07:48.694>an <00:07:49.153>API.

159
00:07:50.755 --> 00:07:55.535
<00:07:50.755>Yes. <00:07:51.034>It's <00:07:51.315>like <00:07:51.594>when <00:07:51.875>it's <00:07:52.155>documented,

160
00:07:55.565 --> 00:07:56.775
<00:07:55.565>it's <00:07:55.837>a <00:07:56.109>feature <00:07:56.381>now, <00:07:56.654>right?

161
00:07:59.325 --> 00:08:03.615
<00:07:59.325>Yeah. <00:08:00.025>So, <00:08:00.724>um,

162
00:08:04.505 --> 00:08:07.615
<00:08:04.505>let's <00:08:04.645>talk <00:08:04.784>a <00:08:04.925>bit <00:08:05.065>bit <00:08:05.205>bit <00:08:05.344>more <00:08:05.485>about <00:08:05.625>patterns <00:08:05.765>and <00:08:05.905>stuff.

163
00:08:07.715 --> 00:08:11.055
<00:08:07.715>So, <00:08:07.890>you <00:08:08.065>know, <00:08:08.239>it's, <00:08:08.414>it's, <00:08:08.590>we <00:08:08.765>kind <00:08:08.940>of <00:08:09.114>agree

164
00:08:11.055 --> 00:08:12.895
<00:08:11.055>that <00:08:11.255>we <00:08:11.455>should <00:08:11.655>return <00:08:11.855>an <00:08:12.055>H <00:08:12.255>GT <00:08:12.455>P.

165
00:08:12.895 --> 00:08:17.215
<00:08:12.895>There <00:08:13.022>is <00:08:13.149>GT <00:08:13.276>P <00:08:13.404>errors <00:08:13.531>for <00:08:13.658>a <00:08:13.785>reason <00:08:13.913>except <00:08:14.040>for <00:08:14.167>four <00:08:14.294>18,

166
00:08:17.235 --> 00:08:20.855
<00:08:17.235>but <00:08:17.390>all <00:08:17.546>the <00:08:17.701>other <00:08:17.857>ones <00:08:18.012>are <00:08:18.168>actually <00:08:18.323>proper <00:08:18.479>things, <00:08:18.635>right?

167
00:08:20.915 --> 00:08:22.255
<00:08:20.915>Anyone <00:08:21.156>knows <00:08:21.397>what <00:08:21.638>four <00:08:21.879>18 <00:08:22.121>is?

168
00:08:23.885 --> 00:08:25.895
<00:08:23.885>Yeah, <00:08:24.118>for <00:08:24.351>rest <00:08:24.585>of <00:08:24.818>you <00:08:25.051>have <00:08:25.284>fun.

169
00:08:26.315 --> 00:08:28.015
<00:08:26.315>It <00:08:26.548>was <00:08:26.781>started <00:08:27.015>as <00:08:27.248>an <00:08:27.481>April <00:08:27.715>joke.

170
00:08:28.805 --> 00:08:31.015
<00:08:28.805>They <00:08:29.005>put <00:08:29.205>it <00:08:29.405>into <00:08:29.605>spec, <00:08:29.805>it's <00:08:30.005>still <00:08:30.205>there.

171
00:08:31.755 --> 00:08:32.935
<00:08:31.755>It <00:08:32.020>says <00:08:32.285>I'm <00:08:32.551>a <00:08:32.817>teapot.

172
00:08:34.635 --> 00:08:38.415
<00:08:34.635>Um, <00:08:34.914>Right? <00:08:35.194>But <00:08:35.475>use <00:08:35.755>those, <00:08:36.034>right?

173
00:08:38.595 --> 00:08:39.815
<00:08:38.595>But <00:08:38.814>then <00:08:39.034>we <00:08:39.253>also <00:08:39.473>have <00:08:39.693>wordss.

174
00:08:39.835 --> 00:08:42.815
<00:08:39.835>You <00:08:39.990>have <00:08:40.146>things <00:08:40.301>like, <00:08:40.457>you <00:08:40.612>know, <00:08:40.768>well, <00:08:40.923>J <00:08:41.079>Jacks <00:08:41.235>us,

175
00:08:42.815 --> 00:08:44.655
<00:08:42.815>if <00:08:43.015>you're <00:08:43.215>using <00:08:43.415>Java, <00:08:43.615>anything <00:08:43.815>else <00:08:44.015>that <00:08:44.215>you,

176
00:08:44.735 --> 00:08:46.655
<00:08:44.735>you're <00:08:44.935>using <00:08:45.135>something <00:08:45.335>else, <00:08:45.535>you <00:08:45.735>know, <00:08:45.935>you <00:08:46.135>would,

177
00:08:46.715 --> 00:08:48.335
<00:08:46.715>you <00:08:46.995>would <00:08:47.275>provide <00:08:47.555>things <00:08:47.835>like <00:08:48.115>pass,

178
00:08:48.555 --> 00:08:51.535
<00:08:48.555>you <00:08:48.682>would <00:08:48.809>provide <00:08:48.936>things <00:08:49.064>like, <00:08:49.191>you <00:08:49.318>know, <00:08:49.445>wordss <00:08:49.573>if <00:08:49.700>it <00:08:49.827>is <00:08:49.954>get

179
00:08:51.555 --> 00:08:53.695
<00:08:51.555>or <00:08:51.710>post <00:08:51.866>or <00:08:52.021>delete <00:08:52.177>or <00:08:52.332>you <00:08:52.488>know, <00:08:52.643>all <00:08:52.799>those <00:08:52.954>things.

180
00:08:54.195 --> 00:08:56.325
<00:08:54.195>And <00:08:54.428>also <00:08:54.661>you <00:08:54.895>can <00:08:55.128>do <00:08:55.361>content <00:08:55.595>negotiation,

181
00:08:56.325 --> 00:08:58.365
<00:08:56.325>which <00:08:56.500>is <00:08:56.675>really <00:08:56.850>nice <00:08:57.025>on <00:08:57.200>the <00:08:57.375>code <00:08:57.550>side, <00:08:57.725>right?

182
00:08:58.365 --> 00:09:01.085
<00:08:58.365>When <00:08:58.540>you're <00:08:58.715>creating <00:08:58.890>your <00:08:59.065>APIs, <00:08:59.240>you <00:08:59.415>can <00:08:59.590>actually <00:08:59.765>say

183
00:09:01.715 --> 00:09:04.405
<00:09:01.715>what <00:09:01.915>an <00:09:02.115>API <00:09:02.315>produces <00:09:02.515>and <00:09:02.715>what <00:09:02.915>it <00:09:03.115>consumes.

184
00:09:05.585 --> 00:09:07.165
<00:09:05.585>You <00:09:05.865>can <00:09:06.145>also <00:09:06.425>do <00:09:06.705>bean <00:09:06.985>validation.

185
00:09:07.165 --> 00:09:08.765
<00:09:07.165>You <00:09:07.515>can <00:09:07.865>also <00:09:08.214>do <00:09:08.564>serialization,

186
00:09:09.025 --> 00:09:10.445
<00:09:09.025>all <00:09:09.207>those <00:09:09.390>things <00:09:09.572>that <00:09:09.755>we <00:09:09.937>talked <00:09:10.120>about, <00:09:10.303>right?

187
00:09:13.155 --> 00:09:14.805
<00:09:13.155>This <00:09:13.355>is <00:09:13.555>how <00:09:13.755>it <00:09:13.954>looks <00:09:14.155>like <00:09:14.355>typically, <00:09:14.555>right?

188
00:09:14.805 --> 00:09:16.725
<00:09:14.805>You <00:09:15.084>do <00:09:15.364>annotations <00:09:15.645>again <00:09:15.925>in <00:09:16.204>Java,

189
00:09:16.785 --> 00:09:18.685
<00:09:16.785>you <00:09:17.018>will <00:09:17.251>do <00:09:17.485>annotations <00:09:17.718>saying, <00:09:17.951>well, <00:09:18.185>hey,

190
00:09:18.875 --> 00:09:20.885
<00:09:18.875>this <00:09:19.155>should <00:09:19.435>respond <00:09:19.715>to <00:09:19.995>a <00:09:20.275>get.

191
00:09:21.545 --> 00:09:25.405
<00:09:21.545>And, <00:09:21.672>uh, <00:09:21.799>further <00:09:21.926>up <00:09:22.054>in <00:09:22.181>a <00:09:22.308>class, <00:09:22.435>you <00:09:22.563>already <00:09:22.690>defined <00:09:22.817>a <00:09:22.944>path

192
00:09:25.825 --> 00:09:29.685
<00:09:25.825>so <00:09:25.952>you <00:09:26.079>know <00:09:26.206>where <00:09:26.334>that, <00:09:26.461>what <00:09:26.588>it <00:09:26.715>should <00:09:26.843>return <00:09:26.970>to <00:09:27.097>respond <00:09:27.225>to.

193
00:09:29.945 --> 00:09:32.525
<00:09:29.945>And <00:09:30.145>then <00:09:30.345>you <00:09:30.545>also <00:09:30.745>say, <00:09:30.945>produces, <00:09:31.145>uh, <00:09:31.345>Jason,

194
00:09:33.185 --> 00:09:34.685
<00:09:33.185>and <00:09:33.377>then <00:09:33.570>you <00:09:33.763>have <00:09:33.956>some <00:09:34.149>kind <00:09:34.342>of <00:09:34.535>code.

195
00:09:37.035 --> 00:09:41.765
<00:09:37.035>Then <00:09:37.175>you <00:09:37.314>have <00:09:37.454>this. <00:09:37.594>And, <00:09:37.735>uh, <00:09:37.875>it's, <00:09:38.015>it's <00:09:38.155>like <00:09:38.295>a <00:09:38.435>lot

196
00:09:41.765 --> 00:09:43.445
<00:09:41.765>of <00:09:41.998>people <00:09:42.231>really <00:09:42.465>take <00:09:42.698>it <00:09:42.931>very <00:09:43.165>seriously

197
00:09:43.515 --> 00:09:44.685
<00:09:43.515>that <00:09:43.725>it <00:09:43.936>has <00:09:44.146>hate <00:09:44.357>in <00:09:44.568>it.

198
00:09:45.145 --> 00:09:47.605
<00:09:45.145>Um, <00:09:45.319>and <00:09:45.495>they <00:09:45.670>kind <00:09:45.845>of <00:09:46.020>hate <00:09:46.194>it <00:09:46.370>as <00:09:46.545>well.

199
00:09:47.745 --> 00:09:51.885
<00:09:47.745>But <00:09:47.872>then <00:09:47.999>the <00:09:48.126>point <00:09:48.254>is, <00:09:48.381>we <00:09:48.508>are <00:09:48.635>not <00:09:48.763>doing <00:09:48.890>really <00:09:49.017>my <00:09:49.145>point.

200
00:09:51.965 --> 00:09:54.245
<00:09:51.965>I <00:09:52.092>don't <00:09:52.219>gonna <00:09:52.346>push <00:09:52.474>you <00:09:52.601>to <00:09:52.728>do <00:09:52.855>one <00:09:52.983>thing <00:09:53.110>or <00:09:53.237>the <00:09:53.365>other.

201
00:09:54.265 --> 00:09:57.205
<00:09:54.265>But <00:09:54.392>the <00:09:54.519>point <00:09:54.646>is, <00:09:54.774>when <00:09:54.901>we <00:09:55.028>say <00:09:55.155>we're <00:09:55.283>doing <00:09:55.410>rest <00:09:55.537>end <00:09:55.665>points,

202
00:09:57.215 --> 00:09:58.685
<00:09:57.215>we're <00:09:57.435>not <00:09:57.656>really <00:09:57.876>doing <00:09:58.097>rest <00:09:58.317>end <00:09:58.538>points.

203
00:09:58.685 --> 00:10:01.245
<00:09:58.685>We're <00:09:58.918>doing <00:09:59.151>restful <00:09:59.385>ish <00:09:59.618>something, <00:09:59.851>run <00:10:00.084>points.

204
00:10:01.255 --> 00:10:03.645
<00:10:01.255>We're <00:10:01.488>just <00:10:01.721>sending <00:10:01.955>Jason <00:10:02.188>back <00:10:02.421>and <00:10:02.655>forth.

205
00:10:04.185 --> 00:10:08.085
<00:10:04.185>And <00:10:04.312>here <00:10:04.439>you <00:10:04.566>actually, <00:10:04.694>uh, <00:10:04.821>if <00:10:04.948>you're <00:10:05.075>gonna <00:10:05.203>do <00:10:05.330>proper <00:10:05.457>j <00:10:05.584>uh,

206
00:10:08.635 --> 00:10:12.605
<00:10:08.635>rest, <00:10:08.810>you <00:10:08.985>should <00:10:09.160>actually <00:10:09.335>do, <00:10:09.510>uh, <00:10:09.685>full <00:10:09.860>hypermedia <00:10:10.035>stuff.

207
00:10:12.625 --> 00:10:16.685
<00:10:12.625>And <00:10:12.741>by <00:10:12.858>that <00:10:12.975>you <00:10:13.091>also <00:10:13.208>pro <00:10:13.325>need <00:10:13.441>to <00:10:13.558>provide <00:10:13.675>all <00:10:13.791>the <00:10:13.908>other <00:10:14.025>links

208
00:10:16.855 --> 00:10:19.245
<00:10:16.855>where <00:10:17.205>your <00:10:17.555>application <00:10:17.905>can <00:10:18.255>go.

209
00:10:19.345 --> 00:10:22.165
<00:10:19.345>So <00:10:19.472>like <00:10:19.599>in <00:10:19.726>this <00:10:19.854>case, <00:10:19.981>it's <00:10:20.108>just, <00:10:20.235>okay, <00:10:20.363>it's <00:10:20.490>just <00:10:20.617>a <00:10:20.745>book

210
00:10:22.465 --> 00:10:26.045
<00:10:22.465>or <00:10:22.605>it's <00:10:22.745>a <00:10:22.885>book <00:10:23.025>with <00:10:23.165>a, <00:10:23.305>a <00:10:23.445>reference <00:10:23.585>to <00:10:23.725>itself, <00:10:23.865>reference

211
00:10:26.045 --> 00:10:29.605
<00:10:26.045>to <00:10:26.185>all <00:10:26.324>the <00:10:26.464>other <00:10:26.604>books, <00:10:26.745>uh, <00:10:26.885>way <00:10:27.025>to <00:10:27.165>how, <00:10:27.305>what <00:10:27.444>kind

212
00:10:29.605 --> 00:10:31.405
<00:10:29.605>of <00:10:29.780>things <00:10:29.955>you <00:10:30.130>can <00:10:30.305>do <00:10:30.480>with <00:10:30.655>it, <00:10:30.830>update, <00:10:31.005>delete,

213
00:10:31.405 --> 00:10:32.485
<00:10:31.405>and <00:10:31.567>all <00:10:31.729>those <00:10:31.891>kind <00:10:32.053>of <00:10:32.215>things, <00:10:32.377>right?

214
00:10:32.755 --> 00:10:34.965
<00:10:32.755>Much <00:10:32.895>more <00:10:33.035>verbose, <00:10:33.175>but <00:10:33.314>it <00:10:33.455>actually <00:10:33.595>tells <00:10:33.735>you <00:10:33.875>what <00:10:34.015>to <00:10:34.155>do.

215
00:10:36.545 --> 00:10:38.365
<00:10:36.545>It <00:10:36.719>might <00:10:36.895>be <00:10:37.069>very <00:10:37.245>good <00:10:37.420>idea <00:10:37.594>to <00:10:37.770>do <00:10:37.944>that.

216
00:10:38.415 --> 00:10:42.565
<00:10:38.415>Maybe <00:10:38.531>it's <00:10:38.648>a <00:10:38.765>bit <00:10:38.881>of <00:10:38.998>a <00:10:39.115>pain, <00:10:39.231>but <00:10:39.348>it, <00:10:39.464>I'm <00:10:39.581>just <00:10:39.698>mentioning <00:10:39.814>it

217
00:10:42.565 --> 00:10:44.085
<00:10:42.565>because <00:10:42.793>we <00:10:43.021>need <00:10:43.249>to <00:10:43.477>think <00:10:43.705>about <00:10:43.933>it.

218
00:10:44.085 --> 00:10:45.125
<00:10:44.085>We <00:10:44.241>need <00:10:44.397>to <00:10:44.553>be <00:10:44.709>aware <00:10:44.865>of <00:10:45.021>that.

219
00:10:45.635 --> 00:10:49.085
<00:10:45.635>Then <00:10:45.790>we're <00:10:45.946>getting <00:10:46.101>to <00:10:46.257>a <00:10:46.412>bit <00:10:46.568>more, <00:10:46.723>uh, <00:10:46.879>sensitive <00:10:47.035>topic,

220
00:10:50.445 --> 00:10:53.365
<00:10:50.445>API <00:10:50.645>versionings, <00:10:50.845>because <00:10:51.045>how <00:10:51.245>do <00:10:51.445>you <00:10:51.645>version <00:10:51.845>it?

221
00:10:54.225 --> 00:10:57.885
<00:10:54.225>How <00:10:54.365>do <00:10:54.505>you <00:10:54.645>do <00:10:54.785>things? <00:10:54.925>Do <00:10:55.065>you <00:10:55.205>do <00:10:55.345>it <00:10:55.485>through <00:10:55.625>path?

222
00:10:58.745 --> 00:11:00.885
<00:10:58.745>Do <00:10:58.920>you <00:10:59.095>do <00:10:59.270>it <00:10:59.445>through <00:10:59.620>request <00:10:59.795>headers, <00:10:59.970>media <00:11:00.145>types,

223
00:11:01.355 --> 00:11:02.445
<00:11:01.355>request <00:11:02.336>parameters?

224
00:11:03.365 --> 00:11:06.085
<00:11:03.365>A <00:11:03.565>bit <00:11:03.765>questionable <00:11:03.965>choice, <00:11:04.165>but <00:11:04.365>you <00:11:04.565>know, <00:11:04.765>uh,

225
00:11:06.265 --> 00:11:08.485
<00:11:06.265>and <00:11:06.465>then <00:11:06.665>also <00:11:06.865>how <00:11:07.064>do <00:11:07.265>you <00:11:07.465>deprecate <00:11:07.665>things?

226
00:11:08.785 --> 00:11:10.645
<00:11:08.785>How <00:11:08.985>do <00:11:09.185>you <00:11:09.385>actually <00:11:09.584>deprecate <00:11:09.785>endpoints <00:11:09.985>as <00:11:10.185>well?

227
00:11:11.825 --> 00:11:15.535
<00:11:11.825>And <00:11:11.941>with <00:11:12.058>path, <00:11:12.175>it's <00:11:12.291>kind <00:11:12.408>of, <00:11:12.525>it's <00:11:12.641>the <00:11:12.758>kind <00:11:12.875>of <00:11:12.991>the, <00:11:13.108>the, <00:11:13.225>the,

228
00:11:15.535 --> 00:11:17.815
<00:11:15.535>the, <00:11:15.690>the, <00:11:15.846>the <00:11:16.001>types <00:11:16.157>that <00:11:16.312>we've <00:11:16.468>seen <00:11:16.623>the <00:11:16.779>most, <00:11:16.935>right?

229
00:11:17.865 --> 00:11:19.695
<00:11:17.865>We've <00:11:18.065>seen <00:11:18.265>it, <00:11:18.465>uh, <00:11:18.665>most <00:11:18.865>of <00:11:19.065>the <00:11:19.265>time.

230
00:11:20.115 --> 00:11:23.015
<00:11:20.115>And <00:11:20.465>it's <00:11:20.815>like <00:11:21.165>this, <00:11:21.515>right?

231
00:11:23.035 --> 00:11:26.935
<00:11:23.035>You <00:11:23.190>have <00:11:23.346>API <00:11:23.501>slash <00:11:23.657>V <00:11:23.812>one <00:11:23.968>resource, <00:11:24.123>blah, <00:11:24.279>blah, <00:11:24.435>blah.

232
00:11:26.935 --> 00:11:28.495
<00:11:26.935>And <00:11:27.090>then <00:11:27.246>you <00:11:27.401>do <00:11:27.557>that. <00:11:27.712>But <00:11:27.868>then <00:11:28.023>the <00:11:28.179>question <00:11:28.334>is,

233
00:11:28.625 --> 00:11:29.935
<00:11:28.625>where <00:11:28.821>do <00:11:29.018>you <00:11:29.214>put <00:11:29.411>that <00:11:29.607>V <00:11:29.804>one?

234
00:11:30.555 --> 00:11:33.015
<00:11:30.555>Is <00:11:30.682>it <00:11:30.809>you <00:11:30.936>put <00:11:31.064>it <00:11:31.191>right <00:11:31.318>after <00:11:31.445>API, <00:11:31.573>do <00:11:31.700>you <00:11:31.827>put <00:11:31.954>it?

235
00:11:33.195 --> 00:11:37.095
<00:11:33.195>Is <00:11:33.311>it <00:11:33.428>the <00:11:33.545>V <00:11:33.661>one <00:11:33.778>of <00:11:33.895>the <00:11:34.011>whole <00:11:34.128>API <00:11:34.245>or <00:11:34.361>just <00:11:34.478>the <00:11:34.595>resource,

236
00:11:37.955 --> 00:11:39.415
<00:11:37.955>or <00:11:38.217>how <00:11:38.480>do <00:11:38.743>you <00:11:39.006>do <00:11:39.269>that?

237
00:11:39.475 --> 00:11:40.735
<00:11:39.475>How <00:11:39.701>do <00:11:39.928>you <00:11:40.155>handle <00:11:40.382>those <00:11:40.609>things

238
00:11:41.795 --> 00:11:43.815
<00:11:41.795>and <00:11:42.074>how <00:11:42.354>do <00:11:42.635>you <00:11:42.915>make <00:11:43.194>sure

239
00:11:43.815 --> 00:11:47.375
<00:11:43.815>that <00:11:43.970>you <00:11:44.126>don't <00:11:44.281>introduce <00:11:44.437>new <00:11:44.592>weird <00:11:44.748>versions <00:11:44.903>down <00:11:45.059>the <00:11:45.215>path?

240
00:11:48.595 --> 00:11:50.455
<00:11:48.595>So, <00:11:48.795>you <00:11:48.995>know, <00:11:49.195>you <00:11:49.395>need <00:11:49.595>to <00:11:49.795>be <00:11:49.995>able

241
00:11:50.515 --> 00:11:51.615
<00:11:50.515>to <00:11:50.762>think <00:11:51.010>about <00:11:51.257>those <00:11:51.505>things,

242
00:11:51.755 --> 00:11:54.205
<00:11:51.755>but <00:11:51.955>to <00:11:52.155>do <00:11:52.355>that, <00:11:52.555>it's <00:11:52.755>pretty <00:11:52.955>easy, <00:11:53.155>right?

243
00:11:54.405 --> 00:11:57.525
<00:11:54.405>I, <00:11:54.560>I <00:11:54.716>actually <00:11:54.871>even <00:11:55.027>put <00:11:55.182>the <00:11:55.338>curl <00:11:55.493>and <00:11:55.649>HTTP <00:11:55.805>commands

244
00:11:57.525 --> 00:12:00.205
<00:11:57.525>and <00:11:57.652>stuff <00:11:57.779>like <00:11:57.906>that <00:11:58.034>in <00:11:58.161>there <00:11:58.288>so <00:11:58.415>you <00:11:58.543>can <00:11:58.670>actually <00:11:58.797>see <00:11:58.925>what's

245
00:12:00.205 --> 00:12:01.325
<00:12:00.205>going <00:12:00.373>on <00:12:00.541>and <00:12:00.709>how <00:12:00.877>you <00:12:01.045>do <00:12:01.213>that.

246
00:12:01.785 --> 00:12:04.285
<00:12:01.785>It <00:12:01.925>will <00:12:02.064>be <00:12:02.204>very <00:12:02.344>useful <00:12:02.485>for <00:12:02.625>the <00:12:02.765>next <00:12:02.905>examples <00:12:03.045>as <00:12:03.185>well.

247
00:12:04.705 --> 00:12:06.845
<00:12:04.705>But <00:12:04.880>with <00:12:05.055>this <00:12:05.230>one, <00:12:05.405>it's <00:12:05.580>kind <00:12:05.755>of <00:12:05.930>easy, <00:12:06.105>right?

248
00:12:06.845 --> 00:12:08.845
<00:12:06.845>You <00:12:07.195>just <00:12:07.545>put <00:12:07.895>version <00:12:08.245>two.

249
00:12:09.305 --> 00:12:12.205
<00:12:09.305>And <00:12:09.460>here <00:12:09.616>I <00:12:09.771>actually <00:12:09.927>did <00:12:10.082>it <00:12:10.238>on <00:12:10.393>purpose, <00:12:10.549>not <00:12:10.704>just

250
00:12:12.225 --> 00:12:13.245
<00:12:12.225>for <00:12:12.684>whole <00:12:13.143>API,

251
00:12:13.305 --> 00:12:17.485
<00:12:13.305>but <00:12:13.421>I <00:12:13.538>just <00:12:13.655>did <00:12:13.771>a <00:12:13.888>version <00:12:14.005>two <00:12:14.121>of <00:12:14.238>some <00:12:14.354>subset <00:12:14.471>of <00:12:14.588>it, <00:12:14.704>right?

252
00:12:19.095 --> 00:12:21.165
<00:12:19.095>Which <00:12:19.328>again, <00:12:19.561>probably <00:12:19.795>not <00:12:20.028>a <00:12:20.261>good <00:12:20.495>idea,

253
00:12:21.225 --> 00:12:22.485
<00:12:21.225>but <00:12:21.508>it's <00:12:21.792>possible <00:12:22.075>to <00:12:22.359>do

254
00:12:22.505 --> 00:12:24.285
<00:12:22.505>and <00:12:22.705>it <00:12:22.905>can <00:12:23.105>happen <00:12:23.305>and <00:12:23.505>it <00:12:23.705>does <00:12:23.905>happen.

255
00:12:26.345 --> 00:12:29.885
<00:12:26.345>Um, <00:12:26.485>custom <00:12:26.625>headers. <00:12:26.765>So <00:12:26.905>now <00:12:27.045>we <00:12:27.185>can <00:12:27.325>do <00:12:27.465>the <00:12:27.605>bit <00:12:27.745>different.

256
00:12:29.885 --> 00:12:32.885
<00:12:29.885>Right <00:12:30.040>now <00:12:30.196>we <00:12:30.351>can <00:12:30.507>actually <00:12:30.662>hide <00:12:30.818>this <00:12:30.973>kind <00:12:31.129>of <00:12:31.285>things.

257
00:12:32.995 --> 00:12:36.525
<00:12:32.995>Instead <00:12:33.135>of <00:12:33.275>putting <00:12:33.415>into <00:12:33.555>URLs, <00:12:33.695>we <00:12:33.835>can <00:12:33.975>actually <00:12:34.115>put <00:12:34.255>it <00:12:34.395>into,

258
00:12:36.985 --> 00:12:38.325
<00:12:36.985>uh, <00:12:37.588>into <00:12:38.191>headers.

259
00:12:38.745 --> 00:12:41.685
<00:12:38.745>So <00:12:38.920>now <00:12:39.095>you <00:12:39.270>can <00:12:39.445>actually <00:12:39.620>say <00:12:39.795>accept <00:12:39.970>version <00:12:40.145>two,

260
00:12:42.305 --> 00:12:45.925
<00:12:42.305>and <00:12:42.460>it <00:12:42.616>will <00:12:42.771>always <00:12:42.927>like <00:12:43.082>try <00:12:43.238>to <00:12:43.393>match <00:12:43.549>that <00:12:43.704>version.

261
00:12:46.065 --> 00:12:48.165
<00:12:46.065>And <00:12:46.265>if <00:12:46.465>it <00:12:46.665>doesn't, <00:12:46.865>it <00:12:47.065>will <00:12:47.265>just <00:12:47.465>fail.

262
00:12:50.105 --> 00:12:52.725
<00:12:50.105>Um, <00:12:50.260>a <00:12:50.416>little <00:12:50.571>bit <00:12:50.727>more <00:12:50.882>hidden <00:12:51.038>way <00:12:51.193>of <00:12:51.349>doing <00:12:51.505>it.

263
00:12:52.725 --> 00:12:56.565
<00:12:52.725>But <00:12:52.865>it <00:12:53.005>can <00:12:53.145>be <00:12:53.285>very <00:12:53.425>useful <00:12:53.565>for <00:12:53.705>some, <00:12:53.845>uh, <00:12:53.985>applications, <00:12:54.125>right?

264
00:12:58.145 --> 00:13:02.645
<00:12:58.145>Uh, <00:12:58.261>it'll <00:12:58.378>even <00:12:58.495>a <00:12:58.611>bit <00:12:58.728>more <00:12:58.845>special <00:12:58.961>way <00:12:59.078>of <00:12:59.194>doing <00:12:59.311>stuff <00:12:59.428>is <00:12:59.545>just

265
00:13:02.645 --> 00:13:04.125
<00:13:02.645>by <00:13:03.089>providing <00:13:03.533>media <00:13:03.977>types

266
00:13:04.145 --> 00:13:06.765
<00:13:04.145>and <00:13:04.425>also <00:13:04.704>providing, <00:13:04.985>uh, <00:13:05.265>versions <00:13:05.545>there.

267
00:13:06.905 --> 00:13:09.205
<00:13:06.905>And <00:13:07.138>then <00:13:07.371>you <00:13:07.605>can <00:13:07.838>actually <00:13:08.071>say <00:13:08.305>produces,

268
00:13:09.705 --> 00:13:14.245
<00:13:09.705>and <00:13:09.880>then <00:13:10.055>so, <00:13:10.230>well, <00:13:10.405>my <00:13:10.580>endpoint, <00:13:10.755>this <00:13:10.930>endpoint <00:13:11.105>responds

269
00:13:14.345 --> 00:13:15.725
<00:13:14.345>to <00:13:14.966>version <00:13:15.587>three

270
00:13:15.825 --> 00:13:19.205
<00:13:15.825>and <00:13:16.105>version <00:13:16.385>four <00:13:16.665>of <00:13:16.945>the <00:13:17.225>APIs,

271
00:13:19.265 --> 00:13:21.325
<00:13:19.265>all <00:13:19.465>the <00:13:19.665>other <00:13:19.865>things <00:13:20.064>will <00:13:20.265>not <00:13:20.465>be <00:13:20.665>called,

272
00:13:23.115 --> 00:13:24.565
<00:13:23.115>that <00:13:23.332>method <00:13:23.550>will <00:13:23.767>not <00:13:23.985>be <00:13:24.202>called, <00:13:24.420>right?

273
00:13:26.265 --> 00:13:30.165
<00:13:26.265>Um, <00:13:26.420>it's <00:13:26.576>also <00:13:26.731>possible <00:13:26.887>of <00:13:27.042>doing <00:13:27.198>that, <00:13:27.353>possible <00:13:27.509>doing <00:13:27.665>that,

274
00:13:30.185 --> 00:13:31.965
<00:13:30.185>but <00:13:30.385>it's <00:13:30.584>even <00:13:30.785>more <00:13:30.984>kind <00:13:31.185>of <00:13:31.385>hidden <00:13:31.584>things.

275
00:13:32.025 --> 00:13:34.925
<00:13:32.025>You <00:13:32.180>need <00:13:32.336>to <00:13:32.491>analyze <00:13:32.647>the <00:13:32.802>whole <00:13:32.958>call, <00:13:33.113>the <00:13:33.269>whole <00:13:33.425>package,

276
00:13:35.025 --> 00:13:36.685
<00:13:35.025>the <00:13:35.180>header <00:13:35.336>of <00:13:35.491>it <00:13:35.647>and <00:13:35.802>all <00:13:35.958>these <00:13:36.113>kind <00:13:36.269>of <00:13:36.425>things.

277
00:13:37.025 --> 00:13:39.885
<00:13:37.025>But <00:13:37.152>it <00:13:37.279>is <00:13:37.406>possible <00:13:37.534>and <00:13:37.661>we <00:13:37.788>need <00:13:37.915>to <00:13:38.043>be <00:13:38.170>aware <00:13:38.297>of <00:13:38.425>that.

278
00:13:39.905 --> 00:13:43.045
<00:13:39.905>We <00:13:40.021>need <00:13:40.138>a <00:13:40.255>lot <00:13:40.371>of <00:13:40.488>people <00:13:40.605>just <00:13:40.721>think <00:13:40.838>this <00:13:40.954>is <00:13:41.071>the <00:13:41.188>only <00:13:41.305>way

279
00:13:43.045 --> 00:13:44.565
<00:13:43.045>of <00:13:43.318>doing <00:13:43.592>it, <00:13:43.865>and <00:13:44.139>that's <00:13:44.413>all.

280
00:13:44.755 --> 00:13:46.365
<00:13:44.755>Well, <00:13:44.988>it's <00:13:45.221>not. <00:13:45.455>There <00:13:45.688>are <00:13:45.921>some <00:13:46.155>other

281
00:13:46.395 --> 00:13:47.605
<00:13:46.395>ways <00:13:46.667>of <00:13:46.939>doing <00:13:47.211>that, <00:13:47.484>right?

282
00:13:48.155 --> 00:13:50.405
<00:13:48.155>Okay, <00:13:48.435>let's <00:13:48.714>do <00:13:48.995>that. <00:13:49.275>Path <00:13:49.555>APIs,

283
00:13:50.405 --> 00:13:51.925
<00:13:50.405>anyone <00:13:50.747>using <00:13:51.089>that, <00:13:51.430>doing <00:13:51.772>that?

284
00:13:52.595 --> 00:13:54.485
<00:13:52.595>Good <00:13:53.295>Custom <00:13:53.995>headers.

285
00:13:55.755 --> 00:13:59.845
<00:13:55.755>Okay, <00:13:55.955>three <00:13:56.155>four <00:13:56.355>hands <00:13:56.555>media <00:13:56.755>type. <00:13:56.955>Oh, <00:13:57.155>okay.

286
00:13:59.845 --> 00:14:01.805
<00:13:59.845>Four <00:14:00.045>hands <00:14:00.245>there <00:14:00.445>as <00:14:00.645>well. <00:14:00.845>Nice. <00:14:01.045>Okay, <00:14:01.245>good.

287
00:14:02.265 --> 00:14:04.485
<00:14:02.265>But <00:14:02.439>it's, <00:14:02.615>it's, <00:14:02.790>it's <00:14:02.965>pretty <00:14:03.140>much <00:14:03.314>like <00:14:03.490>the <00:14:03.665>most

288
00:14:04.485 --> 00:14:06.925
<00:14:04.485>of <00:14:04.640>the <00:14:04.796>room <00:14:04.951>was <00:14:05.107>here <00:14:05.262>then <00:14:05.418>I <00:14:05.573>had <00:14:05.729>four <00:14:05.885>hands

289
00:14:06.925 --> 00:14:07.965
<00:14:06.925>there <00:14:07.159>and <00:14:07.393>four <00:14:07.627>hands <00:14:07.861>there.

290
00:14:08.025 --> 00:14:11.525
<00:14:08.025>So, <00:14:08.152>you <00:14:08.279>know, <00:14:08.406>and <00:14:08.534>then <00:14:08.661>we <00:14:08.788>also <00:14:08.915>come <00:14:09.043>to <00:14:09.170>the <00:14:09.297>fun <00:14:09.425>part.

291
00:14:11.585 --> 00:14:13.285
<00:14:11.585>We <00:14:11.818>actually <00:14:12.051>need <00:14:12.285>to <00:14:12.518>deprecate <00:14:12.751>those <00:14:12.985>things

292
00:14:13.285 --> 00:14:15.925
<00:14:13.285>because <00:14:13.518>when <00:14:13.751>you <00:14:13.985>do <00:14:14.218>versions, <00:14:14.451>you <00:14:14.685>need

293
00:14:15.925 --> 00:14:17.205
<00:14:15.925>to <00:14:16.213>start <00:14:16.501>killing <00:14:16.789>old <00:14:17.077>versions.

294
00:14:17.205 --> 00:14:19.365
<00:14:17.205>It's <00:14:17.438>very, <00:14:17.671>very <00:14:17.905>important <00:14:18.138>actually <00:14:18.371>thing, <00:14:18.605>because

295
00:14:19.515 --> 00:14:23.125
<00:14:19.515>otherwise <00:14:19.715>you <00:14:19.915>will <00:14:20.115>not <00:14:20.314>be <00:14:20.515>able <00:14:20.715>to, <00:14:20.915>um,

296
00:14:24.845 --> 00:14:26.285
<00:14:24.845>maintain <00:14:25.277>a <00:14:25.709>million <00:14:26.141>versions.

297
00:14:26.355 --> 00:14:28.565
<00:14:26.355>It's <00:14:26.555>gonna <00:14:26.755>be <00:14:26.955>a <00:14:27.155>pain. <00:14:27.355>So <00:14:27.555>you <00:14:27.755>need

298
00:14:28.565 --> 00:14:30.765
<00:14:28.565>to <00:14:28.845>provide <00:14:29.125>a <00:14:29.405>proper <00:14:29.685>deprecation <00:14:29.965>things.

299
00:14:30.765 --> 00:14:31.965
<00:14:30.765>And <00:14:30.944>there <00:14:31.125>are <00:14:31.305>ways <00:14:31.485>of <00:14:31.665>doing <00:14:31.845>it.

300
00:14:31.965 --> 00:14:33.525
<00:14:31.965>There <00:14:32.315>are <00:14:32.665>like <00:14:33.015>different <00:14:33.365>ways.

301
00:14:33.635 --> 00:14:36.765
<00:14:33.635>It's <00:14:33.790>a <00:14:33.946>lot <00:14:34.101>of <00:14:34.257>like <00:14:34.412>taste <00:14:34.568>and, <00:14:34.723>you <00:14:34.879>know, <00:14:35.035>feelings

302
00:14:36.765 --> 00:14:38.765
<00:14:36.765>and <00:14:36.965>all <00:14:37.165>that <00:14:37.365>when <00:14:37.564>how <00:14:37.765>to <00:14:37.965>deprecate <00:14:38.165>things.

303
00:14:39.105 --> 00:14:41.885
<00:14:39.105>But <00:14:39.338>there <00:14:39.571>is <00:14:39.805>also <00:14:40.038>kind <00:14:40.271>of <00:14:40.505>standards,

304
00:14:41.885 --> 00:14:43.245
<00:14:41.885>it's <00:14:42.129>not <00:14:42.374>really <00:14:42.619>standard, <00:14:42.864>but <00:14:43.109>it's,

305
00:14:43.245 --> 00:14:44.765
<00:14:43.245>it's <00:14:43.440>at <00:14:43.635>least <00:14:43.831>a <00:14:44.026>way <00:14:44.222>of <00:14:44.417>doing <00:14:44.613>that.

306
00:14:44.865 --> 00:14:47.205
<00:14:44.865>So <00:14:45.098>you <00:14:45.331>might <00:14:45.565>consider, <00:14:45.798>uh, <00:14:46.031>re <00:14:46.265>uh,

307
00:14:47.205 --> 00:14:49.885
<00:14:47.205>returning <00:14:47.405>something <00:14:47.605>like <00:14:47.805>temporary <00:14:48.005>redirect <00:14:48.205>at <00:14:48.405>some <00:14:48.605>point.

308
00:14:49.885 --> 00:14:51.965
<00:14:49.885>First <00:14:50.235>you <00:14:50.585>just <00:14:50.935>return <00:14:51.285>warnings.

309
00:14:51.965 --> 00:14:53.645
<00:14:51.965>At <00:14:52.198>some <00:14:52.431>point <00:14:52.665>you'll <00:14:52.898>do <00:14:53.131>temporary <00:14:53.365>direct

310
00:14:53.825 --> 00:14:56.165
<00:14:53.825>and <00:14:53.965>at <00:14:54.105>some <00:14:54.245>point <00:14:54.385>you <00:14:54.525>will <00:14:54.665>do <00:14:54.805>like <00:14:54.945>a <00:14:55.085>full, <00:14:55.225>uh,

311
00:14:56.335 --> 00:14:59.165
<00:14:56.335>moved <00:14:56.510>permanently <00:14:56.685>3 <00:14:56.860>0 <00:14:57.035>1 <00:14:57.210>kind <00:14:57.385>of <00:14:57.560>redirect, <00:14:57.735>right?

312
00:15:01.065 --> 00:15:04.725
<00:15:01.065>Um, <00:15:01.172>probably <00:15:01.280>good <00:15:01.388>idea <00:15:01.495>to <00:15:01.603>add <00:15:01.711>a <00:15:01.818>link <00:15:01.926>to <00:15:02.034>a <00:15:02.141>new, <00:15:02.249>to, <00:15:02.357>to, <00:15:02.465>to,

313
00:15:04.745 --> 00:15:06.005
<00:15:04.745>to <00:15:04.971>new <00:15:05.198>version <00:15:05.425>in <00:15:05.652>the <00:15:05.879>header.

314
00:15:06.225 --> 00:15:08.005
<00:15:06.225>You <00:15:06.505>can <00:15:06.785>also <00:15:07.065>log <00:15:07.345>those <00:15:07.625>things

315
00:15:08.185 --> 00:15:10.285
<00:15:08.185>and <00:15:08.359>actually <00:15:08.535>see <00:15:08.709>how <00:15:08.885>many <00:15:09.060>are <00:15:09.234>still <00:15:09.410>using <00:15:09.584>that.

316
00:15:10.345 --> 00:15:13.005
<00:15:10.345>And <00:15:10.500>then, <00:15:10.656>uh, <00:15:10.811>you <00:15:10.967>know, <00:15:11.122>do <00:15:11.278>something <00:15:11.433>more <00:15:11.589>about <00:15:11.745>that.

317
00:15:13.005 --> 00:15:14.685
<00:15:13.005>Because <00:15:13.285>if <00:15:13.564>you <00:15:13.845>own <00:15:14.125>that <00:15:14.405>API,

318
00:15:14.705 --> 00:15:16.525
<00:15:14.705>you <00:15:14.938>should <00:15:15.171>raise <00:15:15.405>some <00:15:15.638>kind <00:15:15.871>of <00:15:16.105>awareness.

319
00:15:17.985 --> 00:15:20.925
<00:15:17.985>Um, <00:15:18.160>a <00:15:18.335>lot <00:15:18.510>of <00:15:18.685>codes, <00:15:18.860>a <00:15:19.035>wall <00:15:19.210>of <00:15:19.385>text,

320
00:15:21.305 --> 00:15:23.085
<00:15:21.305>but <00:15:21.505>it <00:15:21.704>also <00:15:21.905>shows <00:15:22.104>a <00:15:22.305>lot <00:15:22.505>of <00:15:22.704>things

321
00:15:23.085 --> 00:15:24.925
<00:15:23.085>that <00:15:23.225>I <00:15:23.365>added <00:15:23.505>arrows <00:15:23.645>to <00:15:23.785>show <00:15:23.925>you <00:15:24.065>a <00:15:24.205>little <00:15:24.345>bit <00:15:24.485>about.

322
00:15:25.465 --> 00:15:27.765
<00:15:25.465>Uh, <00:15:25.640>like, <00:15:25.815>so <00:15:25.990>first <00:15:26.165>we <00:15:26.340>have <00:15:26.515>a <00:15:26.690>version <00:15:26.865>there

323
00:15:27.915 --> 00:15:29.125
<00:15:27.915>that <00:15:28.278>will <00:15:28.641>be <00:15:29.004>deprecated

324
00:15:29.585 --> 00:15:32.445
<00:15:29.585>and <00:15:29.760>then <00:15:29.935>you <00:15:30.110>actually <00:15:30.285>mention <00:15:30.460>deprecated <00:15:30.635>a <00:15:30.810>million <00:15:30.985>times.

325
00:15:32.545 --> 00:15:34.685
<00:15:32.545>So <00:15:32.824>hopefully <00:15:33.104>somebody <00:15:33.385>will <00:15:33.665>read <00:15:33.944>it

326
00:15:34.685 --> 00:15:38.685
<00:15:34.685>because <00:15:34.859>all <00:15:35.035>that <00:15:35.209>is <00:15:35.385>being <00:15:35.560>used <00:15:35.734>to <00:15:35.910>generate, <00:15:36.084>um,

327
00:15:39.715 --> 00:15:42.765
<00:15:39.715>open <00:15:39.870>API <00:15:40.026>spec <00:15:40.181>for <00:15:40.337>your <00:15:40.492>endpoint <00:15:40.648>and <00:15:40.803>your <00:15:40.959>open <00:15:41.115>API

328
00:15:42.825 --> 00:15:45.485
<00:15:42.825>and <00:15:43.000>spec <00:15:43.175>endpoint <00:15:43.350>is <00:15:43.525>something <00:15:43.700>that <00:15:43.875>is <00:15:44.050>being <00:15:44.225>used

329
00:15:45.865 --> 00:15:47.005
<00:15:45.865>by <00:15:46.121>other <00:15:46.378>tools <00:15:46.634>as <00:15:46.891>well

330
00:15:47.025 --> 00:15:49.365
<00:15:47.025>to <00:15:47.258>actually <00:15:47.491>generate <00:15:47.725>documentation <00:15:47.958>for <00:15:48.191>your <00:15:48.425>endpoints.

331
00:15:49.545 --> 00:15:51.005
<00:15:49.545>And <00:15:49.764>that <00:15:49.983>will <00:15:50.202>be <00:15:50.420>very <00:15:50.640>useful, <00:15:50.859>right?

332
00:15:51.465 --> 00:15:53.885
<00:15:51.465>Um, <00:15:51.665>you <00:15:51.865>also <00:15:52.065>do <00:15:52.265>the, <00:15:52.465>the <00:15:52.665>accounted <00:15:52.865>thing

333
00:15:54.035 --> 00:15:55.645
<00:15:54.035>that <00:15:54.385>will <00:15:54.735>actually <00:15:55.084>collect <00:15:55.435>metrics

334
00:15:55.905 --> 00:15:58.725
<00:15:55.905>and <00:15:56.045>expose <00:15:56.185>that <00:15:56.324>as <00:15:56.464>a <00:15:56.605>metrics <00:15:56.745>so <00:15:56.885>you <00:15:57.025>can <00:15:57.165>actually <00:15:57.305>see

335
00:15:59.585 --> 00:16:01.525
<00:15:59.585>how <00:15:59.725>much <00:15:59.865>is <00:16:00.005>being <00:16:00.145>run <00:16:00.285>and <00:16:00.425>used <00:16:00.565>and <00:16:00.705>stuff <00:16:00.845>like <00:16:00.985>that.

336
00:16:02.105 --> 00:16:05.965
<00:16:02.105>And <00:16:02.245>then <00:16:02.385>you <00:16:02.525>also <00:16:02.665>do <00:16:02.805>the <00:16:02.945>URL <00:16:03.085>at <00:16:03.225>the <00:16:03.365>end <00:16:03.505>there.

337
00:16:06.385 --> 00:16:08.605
<00:16:06.385>So <00:16:06.618>link, <00:16:06.851>new <00:16:07.085>version, <00:16:07.318>blah, <00:16:07.551>blah, <00:16:07.785>blah.

338
00:16:08.605 --> 00:16:10.285
<00:16:08.605>That's <00:16:08.760>where <00:16:08.916>you <00:16:09.071>add <00:16:09.227>the <00:16:09.382>link <00:16:09.538>to <00:16:09.693>a <00:16:09.849>new <00:16:10.005>version

339
00:16:10.825 --> 00:16:12.645
<00:16:10.825>and <00:16:11.025>you <00:16:11.225>return <00:16:11.425>it <00:16:11.625>also <00:16:11.825>in <00:16:12.025>a <00:16:12.225>header.

340
00:16:12.985 --> 00:16:15.125
<00:16:12.985>So <00:16:13.140>that's <00:16:13.296>an <00:16:13.451>at <00:16:13.607>least <00:16:13.762>one <00:16:13.918>way <00:16:14.073>of <00:16:14.229>doing <00:16:14.385>that.

341
00:16:17.405 --> 00:16:19.005
<00:16:17.405>Speaking <00:16:17.871>of <00:16:18.338>that <00:16:18.805>documentation.

342
00:16:19.205 --> 00:16:20.445
<00:16:19.205>Documentation <00:16:19.428>is <00:16:19.651>a <00:16:19.874>nice <00:16:20.097>thing, <00:16:20.321>right?

343
00:16:21.065 --> 00:16:23.685
<00:16:21.065>We <00:16:21.265>always <00:16:21.465>love <00:16:21.665>documentation, <00:16:21.865>at <00:16:22.065>least <00:16:22.265>reading <00:16:22.465>it.

344
00:16:23.905 --> 00:16:27.205
<00:16:23.905>Do <00:16:24.138>we <00:16:24.371>love <00:16:24.605>read <00:16:24.838>writing <00:16:25.071>it? <00:16:25.305>Yes.

345
00:16:27.345 --> 00:16:28.885
<00:16:27.345>One <00:16:27.543>person <00:16:27.741>said <00:16:27.939>yes, <00:16:28.137>thank <00:16:28.335>you <00:16:28.533>very <00:16:28.731>much.

346
00:16:29.305 --> 00:16:30.685
<00:16:29.305>The <00:16:29.512>rest <00:16:29.718>of <00:16:29.925>you <00:16:30.132>shame <00:16:30.339>on <00:16:30.546>you.

347
00:16:31.545 --> 00:16:36.405
<00:16:31.545>Um, <00:16:31.895>we <00:16:32.245>need, <00:16:32.594>I <00:16:32.944>mean,

348
00:16:36.515 --> 00:16:38.965
<00:16:36.515>well, <00:16:36.642>I <00:16:36.769>mean <00:16:36.896>you <00:16:37.024>might <00:16:37.151>not <00:16:37.278>like <00:16:37.405>it, <00:16:37.533>but <00:16:37.660>we <00:16:37.787>need <00:16:37.915>it

349
00:16:40.155 --> 00:16:41.605
<00:16:40.155>because <00:16:40.590>you <00:16:41.025>need <00:16:41.460>it.

350
00:16:42.945 --> 00:16:47.165
<00:16:42.945>And <00:16:43.120>then, <00:16:43.295>or <00:16:43.470>somebody <00:16:43.645>else <00:16:43.820>taking <00:16:43.995>over <00:16:44.170>your <00:16:44.345>API

351
00:16:47.165 --> 00:16:48.285
<00:16:47.165>later <00:16:47.416>will <00:16:47.669>need <00:16:47.920>it, <00:16:48.173>right?

352
00:16:48.825 --> 00:16:51.125
<00:16:48.825>Um, <00:16:50.225>again,

353
00:16:51.125 --> 00:16:53.885
<00:16:51.125>if <00:16:51.300>you're <00:16:51.475>using <00:16:51.650>things <00:16:51.825>like <00:16:52.000>Jakarta <00:16:52.175>e <00:16:52.350>micro <00:16:52.525>profile

354
00:16:53.885 --> 00:16:56.925
<00:16:53.885>and <00:16:54.040>all <00:16:54.196>these <00:16:54.351>things, <00:16:54.507>they <00:16:54.662>have <00:16:54.818>open <00:16:54.973>API <00:16:55.129>spec <00:16:55.285>integration.

355
00:16:56.945 --> 00:17:00.205
<00:16:56.945>So <00:16:57.120>they <00:16:57.295>automatically <00:16:57.470>generate <00:16:57.645>open <00:16:57.820>API <00:16:57.995>spec <00:16:58.170>for <00:16:58.345>that.

356
00:17:00.505 --> 00:17:03.045
<00:17:00.505>The <00:17:00.785>same <00:17:01.064>does, <00:17:01.345>um, <00:17:01.625>spring <00:17:01.905>boot.

357
00:17:03.145 --> 00:17:06.445
<00:17:03.145>The <00:17:03.272>same <00:17:03.399>thing <00:17:03.526>does <00:17:03.654>in, <00:17:03.781>I <00:17:03.908>don't <00:17:04.035>know, <00:17:04.163>let's <00:17:04.290>say <00:17:04.417>go, <00:17:04.545>uh,

358
00:17:06.505 --> 00:17:09.325
<00:17:06.505>you <00:17:06.680>can <00:17:06.855>find <00:17:07.030>libraries <00:17:07.205>that <00:17:07.380>will <00:17:07.555>automatically <00:17:07.730>generate <00:17:07.905>it.

359
00:17:09.475 --> 00:17:13.565
<00:17:09.474>I've <00:17:09.630>been <00:17:09.786>in <00:17:09.941>a <00:17:10.097>project <00:17:10.252>where, <00:17:10.408>uh, <00:17:10.563>people <00:17:10.719>would <00:17:10.875>try

360
00:17:13.585 --> 00:17:17.325
<00:17:13.585>to <00:17:13.818>make <00:17:14.051>me <00:17:14.285>force <00:17:14.518>developers <00:17:14.751>write <00:17:14.985>documentation,

361
00:17:17.325 --> 00:17:20.685
<00:17:17.325>like <00:17:17.500>a <00:17:17.675>copy <00:17:17.850>paste <00:17:18.025>documentation <00:17:18.200>for <00:17:18.375>APIs <00:17:18.550>with <00:17:18.725>verbs

362
00:17:20.685 --> 00:17:23.205
<00:17:20.685>and <00:17:20.859>parameters <00:17:21.034>and <00:17:21.210>all <00:17:21.385>that <00:17:21.560>in <00:17:21.734>a <00:17:21.909>confluence <00:17:22.085>page.

363
00:17:23.665 --> 00:17:25.685
<00:17:23.665>And <00:17:23.820>I <00:17:23.976>was <00:17:24.131>like, <00:17:24.287>no, <00:17:24.442>this <00:17:24.598>is <00:17:24.753>not <00:17:24.909>gonna <00:17:25.065>work.

364
00:17:25.835 --> 00:17:27.245
<00:17:25.835>This <00:17:26.088>is <00:17:26.342>not <00:17:26.596>gonna <00:17:26.850>be <00:17:27.103>maintained.

365
00:17:27.545 --> 00:17:30.085
<00:17:27.545>It <00:17:27.672>will, <00:17:27.799>people <00:17:27.926>will <00:17:28.054>spend <00:17:28.181>a <00:17:28.308>lot <00:17:28.435>of <00:17:28.563>time <00:17:28.690>writing <00:17:28.817>it <00:17:28.945>once

366
00:17:30.085 --> 00:17:33.365
<00:17:30.085>because <00:17:30.240>you've <00:17:30.396>made <00:17:30.551>them <00:17:30.707>and <00:17:30.862>nobody <00:17:31.018>will <00:17:31.173>maintain <00:17:31.329>it <00:17:31.485>again.

367
00:17:33.365 --> 00:17:34.565
<00:17:33.365>And <00:17:33.635>it'll <00:17:33.905>be <00:17:34.175>very <00:17:34.445>confusing.

368
00:17:34.825 --> 00:17:37.565
<00:17:34.825>But <00:17:34.965>then <00:17:35.105>if <00:17:35.245>you <00:17:35.385>ought <00:17:35.525>to <00:17:35.665>generate <00:17:35.805>that <00:17:35.945>stuff <00:17:36.085>every <00:17:36.225>time,

369
00:17:37.905 --> 00:17:39.205
<00:17:37.905>that's <00:17:38.295>a <00:17:38.685>different <00:17:39.074>story.

370
00:17:39.785 --> 00:17:41.885
<00:17:39.785>And <00:17:39.940>then <00:17:40.096>we <00:17:40.251>ended <00:17:40.407>up <00:17:40.562>actually <00:17:40.718>doing <00:17:40.873>like <00:17:41.029>open <00:17:41.185>ice,

371
00:17:41.915 --> 00:17:43.285
<00:17:41.915>open <00:17:42.326>API <00:17:42.737>spec <00:17:43.148>instead.

372
00:17:43.785 --> 00:17:47.085
<00:17:43.785>And <00:17:43.925>then <00:17:44.065>you <00:17:44.205>also <00:17:44.345>have <00:17:44.485>well <00:17:44.625>annotation <00:17:44.765>driven <00:17:44.905>like <00:17:45.045>I <00:17:45.185>did

373
00:17:47.085 --> 00:17:49.485
<00:17:47.085>here, <00:17:47.365>this <00:17:47.645>all <00:17:47.925>the <00:17:48.205>annotations <00:17:48.485>that

374
00:17:49.515 --> 00:17:52.805
<00:17:49.515>what <00:17:49.748>generates <00:17:49.981>it <00:17:50.215>versus, <00:17:50.448>uh, <00:17:50.681>static <00:17:50.915>documentation,

375
00:17:52.805 --> 00:17:53.965
<00:17:52.805>which <00:17:52.979>is <00:17:53.153>not <00:17:53.327>a <00:17:53.501>very <00:17:53.675>good <00:17:53.849>thing.

376
00:17:54.545 --> 00:17:58.805
<00:17:54.545>And <00:17:54.778>then <00:17:55.011>we <00:17:55.245>also <00:17:55.478>do, <00:17:55.711>um, <00:17:55.945>documentation.

377
00:17:58.805 --> 00:18:02.405
<00:17:58.805>Your <00:17:58.960>open <00:17:59.116>API <00:17:59.271>spec <00:17:59.427>is <00:17:59.582>actually <00:17:59.738>your <00:17:59.893>living <00:18:00.049>API <00:18:00.205>contract.

378
00:18:02.405 --> 00:18:03.805
<00:18:02.405>Your, <00:18:03.035>your <00:18:03.665>living

379
00:18:03.865 --> 00:18:07.285
<00:18:03.865>and <00:18:04.020>breathing <00:18:04.176>API <00:18:04.331>contract, <00:18:04.487>kind <00:18:04.642>of <00:18:04.798>like <00:18:04.953>what <00:18:05.109>we <00:18:05.265>had

380
00:18:07.285 --> 00:18:11.285
<00:18:07.285>with <00:18:07.425>Wiz <00:18:07.565>VSDL <00:18:07.705>files <00:18:07.845>was <00:18:07.985>kind <00:18:08.125>of <00:18:08.265>the <00:18:08.405>same <00:18:08.545>thing, <00:18:08.685>right?

381
00:18:14.075 --> 00:18:18.165
<00:18:14.075>Yeah. <00:18:14.425>Um, <00:18:14.775>This <00:18:15.125>is, <00:18:15.475>again,

382
00:18:19.325 --> 00:18:21.245
<00:18:19.325>I <00:18:19.480>do <00:18:19.636>not <00:18:19.791>want <00:18:19.947>you <00:18:20.102>to <00:18:20.258>read <00:18:20.413>the <00:18:20.569>whole <00:18:20.725>thing.

383
00:18:21.665 --> 00:18:23.125
<00:18:21.665>It <00:18:21.927>is <00:18:22.190>just <00:18:22.453>to <00:18:22.716>show <00:18:22.979>you,

384
00:18:23.505 --> 00:18:25.365
<00:18:23.505>and <00:18:23.680>I <00:18:23.855>don't <00:18:24.030>expect <00:18:24.205>you, <00:18:24.380>it's <00:18:24.555>very <00:18:24.730>small <00:18:24.905>text

385
00:18:25.825 --> 00:18:27.245
<00:18:25.825>and <00:18:26.007>I <00:18:26.190>hope <00:18:26.372>you <00:18:26.555>are <00:18:26.737>not <00:18:26.920>able <00:18:27.102>to

386
00:18:27.245 --> 00:18:29.485
<00:18:27.245>because <00:18:27.400>I <00:18:27.556>kind <00:18:27.711>of <00:18:27.867>lost <00:18:28.022>you <00:18:28.178>parsing <00:18:28.333>the <00:18:28.489>whole <00:18:28.645>thing.

387
00:18:30.225 --> 00:18:33.085
<00:18:30.225>Uh, <00:18:30.399>but <00:18:30.574>the <00:18:30.750>point <00:18:30.925>here <00:18:31.100>is <00:18:31.274>that <00:18:31.449>you <00:18:31.625>generate,

388
00:18:33.115 --> 00:18:35.965
<00:18:33.115>this <00:18:33.270>is <00:18:33.426>from <00:18:33.581>the <00:18:33.737>spec <00:18:33.892>itself <00:18:34.048>from <00:18:34.203>open <00:18:34.359>API <00:18:34.515>spec,

389
00:18:35.985 --> 00:18:39.285
<00:18:35.985>and <00:18:36.112>the <00:18:36.239>URL <00:18:36.366>is <00:18:36.494>there <00:18:36.621>because <00:18:36.748>it's <00:18:36.875>very <00:18:37.003>short <00:18:37.130>and, <00:18:37.257>and <00:18:37.385>handy.

390
00:18:39.865 --> 00:18:41.685
<00:18:39.865>So <00:18:40.098>I <00:18:40.331>put <00:18:40.565>it <00:18:40.798>on <00:18:41.031>the <00:18:41.265>side.

391
00:18:42.105 --> 00:18:47.045
<00:18:42.105>Um, <00:18:42.212>but <00:18:42.320>the <00:18:42.428>thing <00:18:42.535>is, <00:18:42.643>um, <00:18:42.751>the <00:18:42.858>point <00:18:42.966>here <00:18:43.074>is <00:18:43.181>to <00:18:43.289>show <00:18:43.397>you <00:18:43.505>that

392
00:18:47.665 --> 00:18:48.725
<00:18:47.665>by <00:18:48.141>adding <00:18:48.619>this

393
00:18:48.785 --> 00:18:51.765
<00:18:48.785>and <00:18:48.985>also <00:18:49.185>adding <00:18:49.385>potential <00:18:49.585>error <00:18:49.785>codes <00:18:49.985>in <00:18:50.185>there,

394
00:18:51.785 --> 00:18:54.485
<00:18:51.785>you <00:18:51.940>see <00:18:52.096>there <00:18:52.251>is <00:18:52.407>a <00:18:52.562>400 <00:18:52.718>there <00:18:52.873>and <00:18:53.029>what <00:18:53.185>else?

395
00:18:54.675 --> 00:18:56.365
<00:18:54.675>Yeah, <00:18:55.141>just <00:18:55.608>400. <00:18:56.075>Uh,

396
00:18:56.475 --> 00:18:58.605
<00:18:56.475>then <00:18:56.649>you <00:18:56.824>can <00:18:57.000>actually <00:18:57.175>generate <00:18:57.350>a <00:18:57.524>really <00:18:57.699>nice <00:18:57.875>schema

397
00:18:58.605 --> 00:19:00.325
<00:18:58.605>for <00:18:59.071>your <00:18:59.538>API <00:19:00.005>automatically

398
00:19:00.905 --> 00:19:03.685
<00:19:00.905>and <00:19:01.138>it'll <00:19:01.371>also <00:19:01.605>provide <00:19:01.838>you <00:19:02.071>potential <00:19:02.305>errors

399
00:19:03.685 --> 00:19:06.205
<00:19:03.685>and <00:19:03.918>what <00:19:04.151>do <00:19:04.385>they <00:19:04.618>actually <00:19:04.851>mean, <00:19:05.085>right?

400
00:19:06.865 --> 00:19:09.925
<00:19:06.865>So <00:19:07.005>you <00:19:07.145>can <00:19:07.285>put <00:19:07.425>all <00:19:07.565>your <00:19:07.705>200 <00:19:07.845>error <00:19:07.985>happened <00:19:08.125>in <00:19:08.265>there.

401
00:19:11.905 --> 00:19:14.125
<00:19:11.905>No, <00:19:12.138>don't <00:19:12.371>do <00:19:12.605>that <00:19:12.838>by <00:19:13.071>the <00:19:13.305>way.

402
00:19:14.385 --> 00:19:19.005
<00:19:14.385>Uh, <00:19:14.735>but <00:19:15.085>well, <00:19:15.435>security, <00:19:15.785>uh,

403
00:19:19.005 --> 00:19:21.045
<00:19:19.005>let's <00:19:19.145>talk <00:19:19.285>a <00:19:19.425>little <00:19:19.565>bit <00:19:19.705>about <00:19:19.845>security <00:19:19.985>a <00:19:20.125>tiny <00:19:20.265>little <00:19:20.405>bit

404
00:19:21.045 --> 00:19:22.885
<00:19:21.045>because <00:19:21.245>we <00:19:21.445>have <00:19:21.645>to, <00:19:21.845>because <00:19:22.045>we <00:19:22.245>need <00:19:22.445>that,

405
00:19:23.155 --> 00:19:25.845
<00:19:23.155>because <00:19:23.435>we <00:19:23.715>need <00:19:23.995>to <00:19:24.274>do <00:19:24.555>authorization

406
00:19:26.025 --> 00:19:28.685
<00:19:26.025>and <00:19:26.200>authentication <00:19:26.375>of <00:19:26.550>your <00:19:26.725>API, <00:19:26.900>API <00:19:27.075>endpoint <00:19:27.250>as <00:19:27.425>well.

407
00:19:29.265 --> 00:19:34.245
<00:19:29.265>So, <00:19:29.465>um, <00:19:29.665>Best, <00:19:29.865>best <00:19:30.065>practices, <00:19:30.265>well, <00:19:30.465>authentication <00:19:30.665>options.

408
00:19:34.465 --> 00:19:37.965
<00:19:34.465>Um, <00:19:34.745>in <00:19:35.024>Jakarta, <00:19:35.304>you, <00:19:35.584>you <00:19:35.865>have

409
00:19:38.705 --> 00:19:43.245
<00:19:38.705>JT <00:19:38.905>integration, <00:19:39.105>there <00:19:39.304>is <00:19:39.504>something <00:19:39.705>called <00:19:39.905>microprofile <00:19:40.105>Jots,

410
00:19:43.455 --> 00:19:46.365
<00:19:43.455>again, <00:19:43.610>playing <00:19:43.766>really <00:19:43.921>well <00:19:44.077>with <00:19:44.232>Jakarta <00:19:44.388>stack <00:19:44.543>and <00:19:44.699>all <00:19:44.855>that.

411
00:19:46.625 --> 00:19:48.285
<00:19:46.625>You <00:19:46.800>still <00:19:46.975>have <00:19:47.150>the <00:19:47.325>same <00:19:47.500>thing <00:19:47.675>in <00:19:47.850>Spring <00:19:48.025>Boot.

412
00:19:48.285 --> 00:19:50.525
<00:19:48.285>You <00:19:48.485>still <00:19:48.685>have, <00:19:48.885>uh, <00:19:49.085>something <00:19:49.285>similar <00:19:49.485>other <00:19:49.685>places.

413
00:19:50.985 --> 00:19:52.925
<00:19:50.985>You <00:19:51.264>have <00:19:51.544>a <00:19:51.824>Gen <00:19:52.104>Pro <00:19:52.385>provider

414
00:19:52.945 --> 00:19:55.365
<00:19:52.945>of <00:19:53.178>those <00:19:53.411>jot <00:19:53.645>files, <00:19:53.878>uh, <00:19:54.111>sorry, <00:19:54.345>tokens.

415
00:19:55.365 --> 00:20:00.085
<00:19:55.365>And <00:19:55.565>then <00:19:55.765>you <00:19:55.965>can <00:19:56.165>actually, <00:19:56.365>um, <00:19:56.565>check <00:19:56.765>them,

416
00:20:00.265 --> 00:20:03.605
<00:20:00.265>uh, <00:20:00.440>in <00:20:00.615>your <00:20:00.790>code <00:20:00.965>without <00:20:01.140>really <00:20:01.315>writing <00:20:01.490>too <00:20:01.665>much.

417
00:20:05.585 --> 00:20:08.125
<00:20:05.585>Uh, <00:20:05.785>you <00:20:05.985>can <00:20:06.185>do <00:20:06.385>also <00:20:06.585>role-based <00:20:06.785>stuff, <00:20:06.985>rba

418
00:20:09.065 --> 00:20:13.275
<00:20:09.065>and, <00:20:09.265>uh, <00:20:09.465>you <00:20:09.665>can <00:20:09.865>with, <00:20:10.065>with <00:20:10.265>your <00:20:10.465>carta,

419
00:20:13.275 --> 00:20:15.115
<00:20:13.275>you <00:20:13.450>can <00:20:13.625>actually <00:20:13.800>pro <00:20:13.975>it <00:20:14.150>provides <00:20:14.325>you <00:20:14.500>with, <00:20:14.675>with,

420
00:20:15.115 --> 00:20:18.715
<00:20:15.115>with <00:20:15.270>at <00:20:15.426>annotations <00:20:15.581>like <00:20:15.737>that <00:20:15.892>you <00:20:16.048>can <00:20:16.203>do <00:20:16.359>roles <00:20:16.515>allowed,

421
00:20:18.865 --> 00:20:21.035
<00:20:18.865>deny <00:20:19.005>all <00:20:19.145>permit, <00:20:19.285>all, <00:20:19.425>you <00:20:19.565>know, <00:20:19.705>all <00:20:19.845>these <00:20:19.985>kind <00:20:20.125>of <00:20:20.265>things

422
00:20:21.125 --> 00:20:23.875
<00:20:21.125>where <00:20:21.300>you <00:20:21.475>can <00:20:21.650>actually <00:20:21.825>provide <00:20:22.000>and <00:20:22.175>tell <00:20:22.350>which <00:20:22.525>roles

423
00:20:23.895 --> 00:20:27.155
<00:20:23.895>and <00:20:24.035>who <00:20:24.175>can <00:20:24.315>accept <00:20:24.455>your <00:20:24.595>things <00:20:24.735>or <00:20:24.875>use <00:20:25.014>your, <00:20:25.155>your <00:20:25.295>calls.

424
00:20:27.455 --> 00:20:29.595
<00:20:27.455>So <00:20:27.735>for <00:20:28.014>example, <00:20:28.294>for <00:20:28.574>some <00:20:28.855>endpoints,

425
00:20:30.085 --> 00:20:32.755
<00:20:30.085>roles <00:20:30.285>allowed <00:20:30.485>are <00:20:30.685>only <00:20:30.885>admins, <00:20:31.085>for <00:20:31.285>example, <00:20:31.485>right?

426
00:20:35.335 --> 00:20:36.635
<00:20:35.335>Uh, <00:20:35.725>you <00:20:36.115>declare <00:20:36.505>roles

427
00:20:37.015 --> 00:20:39.595
<00:20:37.015>and <00:20:37.215>also <00:20:37.415>you <00:20:37.615>can <00:20:37.815>use <00:20:38.015>those <00:20:38.215>roles <00:20:38.415>afterwards.

428
00:20:39.595 --> 00:20:43.035
<00:20:39.595>When <00:20:39.711>you <00:20:39.828>do <00:20:39.945>all <00:20:40.061>that, <00:20:40.178>you <00:20:40.295>can <00:20:40.411>actually <00:20:40.528>use <00:20:40.645>it <00:20:40.761>in <00:20:40.878>your <00:20:40.995>code.

429
00:20:43.215 --> 00:20:47.565
<00:20:43.215>You <00:20:43.370>just <00:20:43.526>say, <00:20:43.681>if <00:20:43.837>security <00:20:43.992>context <00:20:44.148>is <00:20:44.303>user <00:20:44.459>enroll <00:20:44.615>something,

430
00:20:47.565 --> 00:20:49.205
<00:20:47.565>then <00:20:47.915>do <00:20:48.265>something <00:20:48.615>else, <00:20:48.965>right?

431
00:20:49.265 --> 00:20:50.605
<00:20:49.265>You <00:20:49.466>can <00:20:49.667>do <00:20:49.868>that <00:20:50.069>kind <00:20:50.270>of <00:20:50.471>things.

432
00:20:51.095 --> 00:20:52.885
<00:20:51.095>Again, <00:20:51.375>this <00:20:51.655>is <00:20:51.935>examples <00:20:52.215>from <00:20:52.495>Jakarta.

433
00:20:53.185 --> 00:20:54.805
<00:20:53.185>It <00:20:53.465>will <00:20:53.745>be <00:20:54.024>kind <00:20:54.304>of <00:20:54.585>different

434
00:20:55.265 --> 00:20:56.485
<00:20:55.265>for <00:20:55.484>if <00:20:55.704>you're <00:20:55.923>using <00:20:56.143>something <00:20:56.362>else.

435
00:20:57.665 --> 00:21:00.245
<00:20:57.665>And <00:20:57.820>obviously <00:20:57.976>you <00:20:58.131>need <00:20:58.287>to <00:20:58.442>do <00:20:58.598>validation <00:20:58.753>of <00:20:58.909>your <00:20:59.065>stuff.

436
00:21:00.985 --> 00:21:02.245
<00:21:00.985>Uh, <00:21:01.362>sanitation <00:21:01.741>as <00:21:02.119>well.

437
00:21:02.985 --> 00:21:05.965
<00:21:02.985>Uh, <00:21:03.140>San <00:21:03.296>sanitization <00:21:03.451>meaning <00:21:03.607>that <00:21:03.762>you <00:21:03.918>remove <00:21:04.073>all <00:21:04.229>the <00:21:04.385>things

438
00:21:05.965 --> 00:21:08.925
<00:21:05.965>that <00:21:06.092>can <00:21:06.219>be <00:21:06.346>bad, <00:21:06.474>can <00:21:06.601>be <00:21:06.728>scary, <00:21:06.855>can <00:21:06.983>be, <00:21:07.110>I <00:21:07.237>don't <00:21:07.365>know,

439
00:21:09.255 --> 00:21:11.165
<00:21:09.255>let's <00:21:09.455>say <00:21:09.655>SQL <00:21:09.855>injections, <00:21:10.055>not <00:21:10.255>in <00:21:10.455>this <00:21:10.655>case,

440
00:21:11.225 --> 00:21:15.805
<00:21:11.225>but, <00:21:11.691>you <00:21:12.158>know, <00:21:12.625>usually

441
00:21:16.115 --> 00:21:18.365
<00:21:16.115>this <00:21:16.290>last <00:21:16.465>line <00:21:16.640>is <00:21:16.815>the <00:21:16.990>thing <00:21:17.165>that <00:21:17.340>usually <00:21:17.515>people,

442
00:21:18.985 --> 00:21:20.205
<00:21:18.985>uh, <00:21:19.351>have <00:21:19.716>troubles <00:21:20.082>with.

443
00:21:20.205 --> 00:21:22.725
<00:21:20.205>And <00:21:20.405>like <00:21:20.605>if <00:21:20.804>something <00:21:21.004>is <00:21:21.205>not <00:21:21.405>working, <00:21:21.605>some

444
00:21:22.725 --> 00:21:25.765
<00:21:22.725>of <00:21:22.880>your <00:21:23.036>calls <00:21:23.191>on <00:21:23.347>your <00:21:23.502>backend, <00:21:23.658>uh, <00:21:23.813>or <00:21:23.969>front <00:21:24.125>end

445
00:21:25.765 --> 00:21:26.925
<00:21:25.765>or <00:21:26.026>something, <00:21:26.287>it's <00:21:26.548>usually <00:21:26.809>that.

446
00:21:26.995 --> 00:21:29.325
<00:21:26.995>It's <00:21:27.274>usually <00:21:27.554>cross <00:21:27.834>origin, <00:21:28.114>uh, <00:21:28.395>thing

447
00:21:29.475 --> 00:21:32.725
<00:21:29.475>because <00:21:29.708>if <00:21:29.941>it's <00:21:30.175>different, <00:21:30.408>uh, <00:21:30.641>domains, <00:21:30.875>uh,

448
00:21:32.785 --> 00:21:35.845
<00:21:32.785>the <00:21:32.985>calls <00:21:33.185>not <00:21:33.385>necessarily <00:21:33.585>work <00:21:33.785>unless <00:21:33.985>you're <00:21:34.185>permitted.

449
00:21:35.905 --> 00:21:38.925
<00:21:35.905>And <00:21:36.045>if <00:21:36.185>anything <00:21:36.325>for <00:21:36.465>like, <00:21:36.605>if <00:21:36.745>anything <00:21:36.885>fails <00:21:37.024>on <00:21:37.165>the <00:21:37.305>internet,

450
00:21:39.315 --> 00:21:43.405
<00:21:39.315>it's <00:21:39.490>probably <00:21:39.665>DNS <00:21:39.840>if <00:21:40.015>anything <00:21:40.190>fails <00:21:40.365>on <00:21:40.540>your <00:21:40.715>backend,

451
00:21:43.405 --> 00:21:46.405
<00:21:43.405>frontend <00:21:43.560>thing <00:21:43.716>is <00:21:43.871>probably <00:21:44.027>coarse, <00:21:44.182>kind <00:21:44.338>of <00:21:44.493>like, <00:21:44.649>at <00:21:44.805>least

452
00:21:46.665 --> 00:21:48.285
<00:21:46.665>that's <00:21:46.945>where <00:21:47.225>you <00:21:47.504>usually <00:21:47.784>check <00:21:48.065>first.

453
00:21:50.405 --> 00:21:54.285
<00:21:50.405>A <00:21:50.560>little <00:21:50.716>bit <00:21:50.871>more <00:21:51.027>advanced <00:21:51.182>patterns, <00:21:51.338>uh, <00:21:51.493>to <00:21:51.649>do <00:21:51.805>that.

454
00:21:54.745 --> 00:21:59.605
<00:21:54.745>Um, <00:21:54.872>So <00:21:54.999>you <00:21:55.126>can <00:21:55.254>actually <00:21:55.381>do <00:21:55.508>quite <00:21:55.635>a <00:21:55.763>lot <00:21:55.890>of <00:21:56.017>fun <00:21:56.145>things

455
00:21:59.605 --> 00:22:01.925
<00:21:59.605>with <00:21:59.805>APIs <00:22:00.005>when <00:22:00.205>you, <00:22:00.405>for <00:22:00.605>example, <00:22:00.805>list <00:22:01.005>things

456
00:22:01.945 --> 00:22:05.165
<00:22:01.945>or <00:22:02.120>stuff <00:22:02.294>like <00:22:02.470>that, <00:22:02.645>you <00:22:02.820>can <00:22:02.995>actually <00:22:03.169>provide, <00:22:03.345>uh,

457
00:22:05.165 --> 00:22:07.765
<00:22:05.165>things <00:22:05.445>like <00:22:05.725>pagination, <00:22:06.004>you <00:22:06.284>can <00:22:06.565>do,

458
00:22:08.155 --> 00:22:10.085
<00:22:08.155>just <00:22:08.330>don't <00:22:08.504>give <00:22:08.680>me <00:22:08.855>everything <00:22:09.030>at <00:22:09.205>the <00:22:09.379>same <00:22:09.555>time,

459
00:22:10.185 --> 00:22:14.605
<00:22:10.185>but <00:22:10.325>give <00:22:10.465>me, <00:22:10.605>uh, <00:22:10.745>so <00:22:10.885>many, <00:22:11.024>um, <00:22:11.165>objects <00:22:11.304>at <00:22:11.445>a <00:22:11.585>time.

460
00:22:15.105 --> 00:22:17.525
<00:22:15.105>You <00:22:15.245>have <00:22:15.385>to <00:22:15.525>be <00:22:15.665>careful. <00:22:15.805>So <00:22:15.945>the <00:22:16.085>list <00:22:16.225>of <00:22:16.365>objects <00:22:16.505>and,

461
00:22:17.665 --> 00:22:20.725
<00:22:17.665>and <00:22:17.792>order <00:22:17.919>and <00:22:18.046>all <00:22:18.174>that <00:22:18.301>doesn't <00:22:18.428>change, <00:22:18.555>but <00:22:18.683>you <00:22:18.810>can <00:22:18.937>do <00:22:19.065>that.

462
00:22:20.785 --> 00:22:23.405
<00:22:20.785>You <00:22:20.985>can <00:22:21.185>also <00:22:21.385>provide, <00:22:21.585>since <00:22:21.785>you're <00:22:21.985>doing <00:22:22.185>pagination,

463
00:22:23.585 --> 00:22:25.165
<00:22:23.585>you <00:22:23.935>also <00:22:24.285>can <00:22:24.635>provide <00:22:24.985>offsets

464
00:22:25.675 --> 00:22:27.725
<00:22:25.675>because, <00:22:25.875>you <00:22:26.075>know, <00:22:26.274>just <00:22:26.475>like, <00:22:26.675>I <00:22:26.875>don't <00:22:27.075>want

465
00:22:27.725 --> 00:22:29.445
<00:22:27.725>to <00:22:27.958>first <00:22:28.191>hundred <00:22:28.425>objects, <00:22:28.658>I <00:22:28.891>wanna <00:22:29.125>have

466
00:22:30.245 --> 00:22:32.605
<00:22:30.245>a <00:22:30.524>hundred <00:22:30.804>objects <00:22:31.084>from <00:22:31.364>object <00:22:31.645>number

467
00:22:32.745 --> 00:22:34.165
<00:22:32.745>2000 <00:22:33.170>or <00:22:33.597>something, <00:22:34.023>right?

468
00:22:35.945 --> 00:22:40.045
<00:22:35.945>Um, <00:22:36.120>filtering <00:22:36.294>options <00:22:36.470>is <00:22:36.645>very <00:22:36.820>good <00:22:36.995>thing <00:22:37.169>to <00:22:37.345>have

469
00:22:40.945 --> 00:22:42.245
<00:22:40.945>on <00:22:41.335>a <00:22:41.725>good <00:22:42.114>API.

470
00:22:42.785 --> 00:22:45.325
<00:22:42.785>And <00:22:42.960>sorting <00:22:43.135>parameters <00:22:43.310>is <00:22:43.485>as <00:22:43.660>well, <00:22:43.835>is <00:22:44.010>a <00:22:44.185>very,

471
00:22:45.325 --> 00:22:47.045
<00:22:45.325>very <00:22:45.605>interesting <00:22:45.885>way <00:22:46.165>of <00:22:46.445>providing <00:22:46.725>things.

472
00:22:47.185 --> 00:22:48.845
<00:22:47.185>So <00:22:47.385>you <00:22:47.585>can <00:22:47.784>actually <00:22:47.985>do <00:22:48.185>things <00:22:48.385>like <00:22:48.585>that.

473
00:22:49.145 --> 00:22:51.605
<00:22:49.145>You <00:22:49.300>can <00:22:49.456>do <00:22:49.611>like <00:22:49.767>sort, <00:22:49.922>uh, <00:22:50.078>sort <00:22:50.233>title <00:22:50.389>and <00:22:50.545>stuff,

474
00:22:51.605 --> 00:22:54.005
<00:22:51.605>but <00:22:51.805>you <00:22:52.005>can <00:22:52.205>also <00:22:52.405>do <00:22:52.605>buy <00:22:52.805>publish <00:22:53.005>date

475
00:22:54.005 --> 00:22:55.245
<00:22:54.005>for <00:22:54.228>example <00:22:54.451>and <00:22:54.674>things <00:22:54.897>like <00:22:55.120>that.

476
00:22:55.345 --> 00:22:56.685
<00:22:55.345>And <00:22:55.646>it's <00:22:55.948>really, <00:22:56.249>really <00:22:56.551>nice.

477
00:22:57.325 --> 00:23:00.645
<00:22:57.325>I <00:22:57.465>don't, <00:22:57.605>I <00:22:57.745>have <00:22:57.885>not <00:22:58.025>seen <00:22:58.165>many, <00:22:58.305>uh, <00:22:58.445>APIs <00:22:58.585>or <00:22:58.725>URLs

478
00:23:00.665 --> 00:23:03.885
<00:23:00.665>or <00:23:00.805>any <00:23:00.945>many <00:23:01.085>applications <00:23:01.225>using <00:23:01.365>that <00:23:01.504>out <00:23:01.645>there <00:23:01.784>in <00:23:01.925>a <00:23:02.065>while,

479
00:23:03.905 --> 00:23:05.965
<00:23:03.905>but <00:23:04.080>it <00:23:04.254>is <00:23:04.430>there, <00:23:04.605>that's <00:23:04.780>why <00:23:04.955>I'm <00:23:05.129>mentioning <00:23:05.305>it.

480
00:23:07.625 --> 00:23:11.305
<00:23:07.625>Um, <00:23:08.091>long <00:23:08.558>running <00:23:09.025>operations.

481
00:23:11.325 --> 00:23:14.225
<00:23:11.325>So <00:23:11.465>there <00:23:11.605>is <00:23:11.745>another <00:23:11.885>thing <00:23:12.025>that <00:23:12.165>when <00:23:12.305>things <00:23:12.445>time <00:23:12.585>take <00:23:12.725>time,

482
00:23:14.645 --> 00:23:16.545
<00:23:14.645>you <00:23:14.845>don't <00:23:15.045>want <00:23:15.245>to <00:23:15.445>have <00:23:15.645>the <00:23:15.845>spinning <00:23:16.045>wheel

483
00:23:16.575 --> 00:23:20.705
<00:23:16.575>because <00:23:16.715>that <00:23:16.855>spinning <00:23:16.995>wheel <00:23:17.135>will <00:23:17.275>become <00:23:17.415>a, <00:23:17.555>um, <00:23:17.695>a <00:23:17.835>little <00:23:17.975>ball

484
00:23:20.705 --> 00:23:23.785
<00:23:20.705>of <00:23:20.860>death <00:23:21.016>on, <00:23:21.171>at <00:23:21.327>least <00:23:21.482>if <00:23:21.638>you're <00:23:21.793>using <00:23:21.949>Apple <00:23:22.105>devices

485
00:23:23.965 --> 00:23:25.785
<00:23:23.965>or <00:23:24.139>something <00:23:24.314>else, <00:23:24.490>you <00:23:24.665>know, <00:23:24.840>it <00:23:25.014>just <00:23:25.189>starts <00:23:25.365>spinning

486
00:23:25.785 --> 00:23:29.225
<00:23:25.785>and <00:23:25.960>never <00:23:26.135>finishes <00:23:26.310>and <00:23:26.485>you <00:23:26.660>know, <00:23:26.835>it's, <00:23:27.010>you <00:23:27.185>want

487
00:23:29.225 --> 00:23:30.945
<00:23:29.225>to <00:23:29.458>handle <00:23:29.691>it <00:23:29.925>a <00:23:30.158>bit <00:23:30.391>more <00:23:30.625>nicer.

488
00:23:31.725 --> 00:23:34.625
<00:23:31.725>Uh, <00:23:31.880>and <00:23:32.036>then <00:23:32.191>you <00:23:32.347>can <00:23:32.502>actually <00:23:32.658>do, <00:23:32.813>again, <00:23:32.969>return <00:23:33.125>codes.

489
00:23:34.625 --> 00:23:37.385
<00:23:34.625>You <00:23:34.765>can <00:23:34.905>do <00:23:35.045>return <00:23:35.185>2 <00:23:35.325>0 <00:23:35.465>2 <00:23:35.605>or <00:23:35.745>something <00:23:35.885>like <00:23:36.025>that.

490
00:23:37.445 --> 00:23:39.025
<00:23:37.445>And <00:23:37.678>you <00:23:37.911>can <00:23:38.145>also <00:23:38.378>provide <00:23:38.611>a <00:23:38.845>location

491
00:23:39.025 --> 00:23:41.865
<00:23:39.025>where <00:23:39.258>the <00:23:39.491>answer <00:23:39.725>will <00:23:39.958>be, <00:23:40.191>uh, <00:23:40.425>um,

492
00:23:42.875 --> 00:23:44.665
<00:23:42.875>given <00:23:43.225>at <00:23:43.575>some <00:23:43.925>point, <00:23:44.275>right?

493
00:23:44.885 --> 00:23:46.245
<00:23:44.885>You <00:23:45.089>just <00:23:45.293>say, <00:23:45.496>okay, <00:23:45.701>you <00:23:45.905>know <00:23:46.109>what?

494
00:23:46.365 --> 00:23:49.765
<00:23:46.365>I <00:23:46.540>received <00:23:46.715>your, <00:23:46.890>uh, <00:23:47.065>request, <00:23:47.240>it <00:23:47.415>will <00:23:47.590>be <00:23:47.765>generated

495
00:23:50.185 --> 00:23:53.565
<00:23:50.185>and <00:23:50.292>you <00:23:50.400>will <00:23:50.508>go, <00:23:50.615>uh, <00:23:50.723>if <00:23:50.831>you <00:23:50.938>go <00:23:51.046>to <00:23:51.154>reports <00:23:51.261>slash <00:23:51.369>1 <00:23:51.477>2 <00:23:51.585>3,

496
00:23:53.625 --> 00:23:55.005
<00:23:53.625>for <00:23:53.873>example, <00:23:54.121>some <00:23:54.370>kind <00:23:54.618>of <00:23:54.867>id,

497
00:23:55.465 --> 00:23:57.205
<00:23:55.465>the <00:23:55.665>report <00:23:55.865>will <00:23:56.064>be <00:23:56.264>there <00:23:56.465>whenever <00:23:56.665>it's <00:23:56.865>done.

498
00:23:58.625 --> 00:24:02.925
<00:23:58.625>And <00:23:58.741>then, <00:23:58.858>uh, <00:23:58.975>also <00:23:59.091>reports <00:23:59.208>1, <00:23:59.325>2, <00:23:59.441>3 <00:23:59.558>will <00:23:59.675>also <00:23:59.791>give <00:23:59.908>you, <00:24:00.025>uh,

499
00:24:02.955 --> 00:24:04.365
<00:24:02.955>some <00:24:03.378>kind <00:24:03.801>of <00:24:04.224>status

500
00:24:04.625 --> 00:24:08.485
<00:24:04.625>or <00:24:04.780>idea <00:24:04.936>of <00:24:05.091>like <00:24:05.247>if <00:24:05.402>it's <00:24:05.558>processing, <00:24:05.713>done <00:24:05.869>error, <00:24:06.025>whatever.

501
00:24:08.545 --> 00:24:10.925
<00:24:08.545>And <00:24:08.700>then <00:24:08.856>you <00:24:09.011>can <00:24:09.167>do <00:24:09.322>slash <00:24:09.478>result <00:24:09.633>for <00:24:09.789>example, <00:24:09.945>right?

502
00:24:11.065 --> 00:24:12.885
<00:24:11.065>So <00:24:11.220>this <00:24:11.376>is <00:24:11.531>at <00:24:11.687>least <00:24:11.842>a <00:24:11.998>way <00:24:12.153>of <00:24:12.309>doing <00:24:12.465>that.

503
00:24:12.945 --> 00:24:14.685
<00:24:12.945>And <00:24:13.294>it's, <00:24:13.645>it's <00:24:13.995>pretty <00:24:14.345>nice

504
00:24:14.785 --> 00:24:18.005
<00:24:14.785>for <00:24:15.018>long <00:24:15.251>running <00:24:15.485>operations <00:24:15.718>like <00:24:15.951>asynchronous <00:24:16.185>something

505
00:24:18.005 --> 00:24:19.925
<00:24:18.005>that <00:24:18.471>should <00:24:18.938>run <00:24:19.405>asynchronously.

506
00:24:21.985 --> 00:24:25.165
<00:24:21.985>Um, <00:24:22.112>you <00:24:22.239>can <00:24:22.366>also <00:24:22.494>do <00:24:22.621>bulk <00:24:22.748>creates <00:24:22.875>and <00:24:23.003>updates <00:24:23.130>and <00:24:23.257>all <00:24:23.385>that.

507
00:24:25.235 --> 00:24:27.205
<00:24:25.235>It's, <00:24:25.435>I <00:24:25.635>don't <00:24:25.834>see <00:24:26.034>that <00:24:26.235>happening <00:24:26.435>very <00:24:26.635>often.

508
00:24:27.285 --> 00:24:29.525
<00:24:27.285>I <00:24:27.518>don't <00:24:27.751>see <00:24:27.985>many <00:24:28.218>APIs <00:24:28.451>supporting <00:24:28.685>that

509
00:24:29.545 --> 00:24:30.685
<00:24:29.545>or <00:24:29.887>documenting <00:24:30.229>in <00:24:30.571>that,

510
00:24:30.945 --> 00:24:33.085
<00:24:30.945>but <00:24:31.085>it's <00:24:31.225>really, <00:24:31.365>really <00:24:31.504>nice <00:24:31.645>way <00:24:31.784>of <00:24:31.925>doing <00:24:32.064>that <00:24:32.205>as <00:24:32.345>well

511
00:24:33.085 --> 00:24:34.845
<00:24:33.085>because <00:24:33.365>now <00:24:33.645>you <00:24:33.925>can <00:24:34.205>add, <00:24:34.485>instead

512
00:24:34.845 --> 00:24:38.725
<00:24:34.845>of <00:24:35.020>just <00:24:35.195>creating <00:24:35.370>a <00:24:35.545>one <00:24:35.720>call <00:24:35.895>per <00:24:36.070>uh, <00:24:36.245>object,

513
00:24:38.905 --> 00:24:40.765
<00:24:38.905>you <00:24:39.254>can <00:24:39.605>actually <00:24:39.955>do, <00:24:40.305>um,

514
00:24:42.235 --> 00:24:44.125
<00:24:42.235>several <00:24:42.468>in, <00:24:42.701>in, <00:24:42.935>in, <00:24:43.168>in <00:24:43.401>at <00:24:43.635>once.

515
00:24:44.225 --> 00:24:45.805
<00:24:44.225>And <00:24:44.458>that's <00:24:44.691>is <00:24:44.925>very, <00:24:45.158>very <00:24:45.391>important <00:24:45.625>thing

516
00:24:45.805 --> 00:24:48.885
<00:24:45.805>because <00:24:45.960>for <00:24:46.116>example, <00:24:46.271>where <00:24:46.427>I'm <00:24:46.582>working, <00:24:46.738>we <00:24:46.893>do <00:24:47.049>a <00:24:47.205>lot

517
00:24:48.885 --> 00:24:50.165
<00:24:48.885>of <00:24:49.115>calls <00:24:49.345>at <00:24:49.576>the <00:24:49.806>same <00:24:50.037>time.

518
00:24:50.465 --> 00:24:52.725
<00:24:50.465>And <00:24:50.620>doing <00:24:50.776>the <00:24:50.931>1 <00:24:51.087>million <00:24:51.242>calls, <00:24:51.398>there <00:24:51.553>is <00:24:51.709>a <00:24:51.865>lot

519
00:24:52.725 --> 00:24:55.965
<00:24:52.725>of <00:24:52.958>overhead <00:24:53.191>from <00:24:53.425>HT <00:24:53.658>DP <00:24:53.891>authorization, <00:24:54.125>authentication,

520
00:24:56.265 --> 00:24:58.245
<00:24:56.265>you <00:24:56.465>know, <00:24:56.665>validation, <00:24:56.865>all <00:24:57.065>these <00:24:57.265>kind <00:24:57.465>of <00:24:57.665>things.

521
00:24:58.465 --> 00:24:59.485
<00:24:58.465>But <00:24:58.648>if <00:24:58.832>you <00:24:59.015>do <00:24:59.199>it <00:24:59.382>once

522
00:24:59.505 --> 00:25:01.245
<00:24:59.505>and <00:24:59.705>then <00:24:59.905>you <00:25:00.105>send <00:25:00.305>a <00:25:00.505>bunch <00:25:00.705>of <00:25:00.905>objects,

523
00:25:01.755 --> 00:25:03.045
<00:25:01.755>it's <00:25:02.045>much, <00:25:02.335>much, <00:25:02.625>much <00:25:02.916>easier.

524
00:25:03.235 --> 00:25:04.685
<00:25:03.235>It's <00:25:03.669>much <00:25:04.105>less <00:25:04.540>time.

525
00:25:04.755 --> 00:25:07.805
<00:25:04.755>It's <00:25:04.930>not <00:25:05.105>the <00:25:05.280>same <00:25:05.455>as <00:25:05.630>sending <00:25:05.805>1 <00:25:05.980>million <00:25:06.155>requests

526
00:25:07.865 --> 00:25:10.685
<00:25:07.865>or <00:25:08.020>sending <00:25:08.176>one <00:25:08.331>request <00:25:08.487>with <00:25:08.642>1 <00:25:08.798>million <00:25:08.953>items <00:25:09.109>in <00:25:09.265>it.

527
00:25:10.785 --> 00:25:12.085
<00:25:10.785>So <00:25:11.077>that's <00:25:11.370>the <00:25:11.662>thing, <00:25:11.955>right?

528
00:25:12.425 --> 00:25:13.765
<00:25:12.425>And <00:25:12.626>then <00:25:12.827>you <00:25:13.028>can <00:25:13.229>loop <00:25:13.430>through <00:25:13.631>those

529
00:25:14.705 --> 00:25:16.725
<00:25:14.705>and <00:25:14.985>then <00:25:15.264>just <00:25:15.544>return <00:25:15.824>something <00:25:16.105>if,

530
00:25:16.905 --> 00:25:18.365
<00:25:16.905>for <00:25:17.233>example, <00:25:17.562>to <00:25:17.890>process <00:25:18.219>that.

531
00:25:18.365 --> 00:25:23.085
<00:25:18.365>Simple <00:25:18.565>example, <00:25:18.765>right? <00:25:18.965>Uh, <00:25:19.165>we're <00:25:19.365>beyond <00:25:19.565>the <00:25:19.765>rest.

532
00:25:23.665 --> 00:25:26.645
<00:25:23.665>Uh, <00:25:23.898>so <00:25:24.131>we <00:25:24.365>have <00:25:24.598>things, <00:25:24.831>other <00:25:25.065>things.

533
00:25:26.755 --> 00:25:29.405
<00:25:26.755>Rest <00:25:26.910>is <00:25:27.066>not <00:25:27.221>solution <00:25:27.377>and <00:25:27.532>meaning <00:25:27.688>of <00:25:27.843>life <00:25:27.999>and <00:25:28.155>everything.

534
00:25:29.865 --> 00:25:31.645
<00:25:29.865>Uh, <00:25:30.215>uh, <00:25:30.565>well <00:25:30.915>that's <00:25:31.265>42.

535
00:25:31.865 --> 00:25:33.765
<00:25:31.865>But <00:25:32.215>apart <00:25:32.565>from <00:25:32.915>that, <00:25:33.265>um,

536
00:25:35.225 --> 00:25:39.005
<00:25:35.225>we <00:25:35.399>have <00:25:35.574>things <00:25:35.750>like <00:25:35.925>GRPC <00:25:36.100>that <00:25:36.274>are, <00:25:36.449>uh, <00:25:36.625>very,

537
00:25:39.075 --> 00:25:40.925
<00:25:39.075>very <00:25:39.425>much <00:25:39.775>more <00:25:40.125>high <00:25:40.475>performance.

538
00:25:40.925 --> 00:25:43.245
<00:25:40.925>It's <00:25:41.080>a <00:25:41.236>binary <00:25:41.391>format <00:25:41.547>and <00:25:41.702>all <00:25:41.858>these <00:25:42.013>kind <00:25:42.169>of <00:25:42.325>things,

539
00:25:43.385 --> 00:25:47.005
<00:25:43.385>but <00:25:43.512>it <00:25:43.639>has <00:25:43.766>its <00:25:43.894>own <00:25:44.021>usages <00:25:44.148>and <00:25:44.275>it <00:25:44.403>has <00:25:44.530>its <00:25:44.657>own <00:25:44.785>advantages.

540
00:25:47.305 --> 00:25:48.765
<00:25:47.305>You <00:25:47.633>have <00:25:47.962>things <00:25:48.290>like <00:25:48.619>GraphQL,

541
00:25:48.785 --> 00:25:50.725
<00:25:48.785>so <00:25:48.960>you <00:25:49.135>can <00:25:49.310>actually <00:25:49.485>query <00:25:49.660>your <00:25:49.835>own <00:25:50.010>data <00:25:50.185>instead

542
00:25:50.725 --> 00:25:53.725
<00:25:50.725>of <00:25:50.880>expecting <00:25:51.036>the <00:25:51.191>data <00:25:51.347>structure <00:25:51.502>to <00:25:51.658>be <00:25:51.813>created <00:25:51.969>for <00:25:52.125>you.

543
00:25:54.645 --> 00:25:57.685
<00:25:54.645>Actually, <00:25:54.785>one <00:25:54.925>thing <00:25:55.065>with <00:25:55.205>the <00:25:55.345>rest <00:25:55.485>I <00:25:55.625>didn't <00:25:55.764>mention <00:25:55.905>here <00:25:56.045>is

544
00:25:57.685 --> 00:26:01.045
<00:25:57.685>that <00:25:57.860>do <00:25:58.034>not, <00:25:58.210>one <00:25:58.385>of <00:25:58.560>the <00:25:58.735>really <00:25:58.909>important <00:25:59.085>things,

545
00:26:01.045 --> 00:26:02.645
<00:26:01.045>and <00:26:01.245>I <00:26:01.445>see <00:26:01.645>this <00:26:01.845>error <00:26:02.045>happening <00:26:02.245>a <00:26:02.445>lot.

546
00:26:02.905 --> 00:26:05.365
<00:26:02.905>People <00:26:03.138>expose <00:26:03.371>their <00:26:03.605>in <00:26:03.838>turn <00:26:04.071>data <00:26:04.305>structures

547
00:26:05.365 --> 00:26:06.445
<00:26:05.365>as <00:26:05.689>the <00:26:06.013>rest <00:26:06.337>endpoints.

548
00:26:06.705 --> 00:26:08.445
<00:26:06.705>Do <00:26:06.985>not <00:26:07.264>do <00:26:07.544>that. <00:26:07.824>'cause <00:26:08.105>most

549
00:26:08.445 --> 00:26:09.925
<00:26:08.445>of <00:26:08.667>the <00:26:08.889>times <00:26:09.110>you'd <00:26:09.332>want <00:26:09.554>something <00:26:09.777>simple

550
00:26:10.425 --> 00:26:14.445
<00:26:10.425>and <00:26:10.580>you <00:26:10.736>don't <00:26:10.891>want <00:26:11.047>to <00:26:11.202>explain <00:26:11.358>very <00:26:11.513>complicated <00:26:11.669>domain <00:26:11.825>rules

551
00:26:14.905 --> 00:26:18.405
<00:26:14.905>to <00:26:15.021>user, <00:26:15.138>to <00:26:15.254>endpoint <00:26:15.371>user <00:26:15.488>to <00:26:15.605>be <00:26:15.721>able <00:26:15.838>to <00:26:15.955>use <00:26:16.071>your <00:26:16.188>rest <00:26:16.305>APIs,

552
00:26:18.545 --> 00:26:21.445
<00:26:18.545>you <00:26:18.700>need <00:26:18.856>to <00:26:19.011>do <00:26:19.167>something, <00:26:19.322>uh, <00:26:19.478>simplified <00:26:19.633>there <00:26:19.789>as <00:26:19.945>well.

553
00:26:22.865 --> 00:26:24.805
<00:26:22.865>So <00:26:23.145>that <00:26:23.425>was <00:26:23.705>pretty <00:26:23.985>much <00:26:24.265>it,

554
00:26:24.805 --> 00:26:28.845
<00:26:24.805>and <00:26:24.932>I <00:26:25.059>have <00:26:25.186>one <00:26:25.314>minute, <00:26:25.441>less <00:26:25.568>than <00:26:25.695>a <00:26:25.823>minute <00:26:25.950>to, <00:26:26.077>uh, <00:26:26.205>to,

555
00:26:28.985 --> 00:26:30.005
<00:26:28.985>to <00:26:29.214>wrap, <00:26:29.444>wrap <00:26:29.673>it <00:26:29.903>up.

556
00:26:30.585 --> 00:26:32.405
<00:26:30.585>And <00:26:30.760>this <00:26:30.935>is <00:26:31.110>what <00:26:31.285>the <00:26:31.460>things <00:26:31.635>we <00:26:31.810>looked <00:26:31.985>at

557
00:26:32.465 --> 00:26:36.285
<00:26:32.465>and <00:26:32.605>we <00:26:32.745>will <00:26:32.885>have, <00:26:33.024>we'll <00:26:33.165>not <00:26:33.304>have <00:26:33.445>time <00:26:33.584>for <00:26:33.725>questions <00:26:33.865>now,

558
00:26:36.385 --> 00:26:37.485
<00:26:36.385>but <00:26:36.632>I <00:26:36.879>will <00:26:37.127>be <00:26:37.375>here.

559
00:26:37.665 --> 00:26:40.565
<00:26:37.665>You're <00:26:37.781>more <00:26:37.898>than <00:26:38.014>welcome <00:26:38.131>to <00:26:38.248>meet <00:26:38.365>me <00:26:38.481>at <00:26:38.598>the <00:26:38.715>end <00:26:38.831>of <00:26:38.948>the <00:26:39.065>room

560
00:26:40.825 --> 00:26:42.605
<00:26:40.825>and <00:26:40.980>then <00:26:41.136>we <00:26:41.291>can <00:26:41.447>talk <00:26:41.602>about <00:26:41.758>this <00:26:41.913>kind <00:26:42.069>of <00:26:42.225>things.

561
00:26:42.705 --> 00:26:44.365
<00:26:42.705>But <00:26:43.054>we <00:26:43.405>talked <00:26:43.754>about <00:26:44.105>rest

562
00:26:45.225 --> 00:26:47.565
<00:26:45.225>and <00:26:45.458>soap, <00:26:45.691>we <00:26:45.925>talked <00:26:46.158>about <00:26:46.391>rest <00:26:46.625>basics,

563
00:26:47.565 --> 00:26:50.485
<00:26:47.565>we <00:26:47.845>talked <00:26:48.125>about <00:26:48.405>versioning, <00:26:48.685>documentation, <00:26:48.965>security,

564
00:26:50.885 --> 00:26:53.925
<00:26:50.885>a <00:26:51.040>little <00:26:51.196>bit <00:26:51.351>of <00:26:51.507>advanced <00:26:51.662>patterns <00:26:51.818>and <00:26:51.973>things <00:26:52.129>beyond <00:26:52.285>rest.

565
00:26:53.955 --> 00:26:56.045
<00:26:53.955>Like <00:26:54.188>what <00:26:54.421>other <00:26:54.655>things <00:26:54.888>you <00:26:55.121>can <00:26:55.355>do.

566
00:26:56.705 --> 00:26:59.725
<00:26:56.705>And, <00:26:56.821>uh, <00:26:56.938>you'll <00:26:57.054>find <00:26:57.171>me, <00:26:57.288>easiest <00:26:57.405>way <00:26:57.521>to <00:26:57.638>find <00:26:57.754>me <00:26:57.871>is <00:26:57.988>just <00:26:58.105>go

567
00:26:59.725 --> 00:27:02.205
<00:26:59.725>to <00:26:59.925>rest <00:27:00.125>ano <00:27:00.324>and <00:27:00.524>you'll <00:27:00.725>find <00:27:00.925>me <00:27:01.125>there.

568
00:27:02.385 --> 00:27:04.605
<00:27:02.385>And <00:27:02.540>all <00:27:02.696>the <00:27:02.851>social <00:27:03.007>media <00:27:03.162>and <00:27:03.318>all <00:27:03.473>the <00:27:03.629>other <00:27:03.785>things,

569
00:27:04.865 --> 00:27:06.805
<00:27:04.865>and <00:27:05.098>also <00:27:05.331>the <00:27:05.565>code <00:27:05.798>I've <00:27:06.031>been <00:27:06.265>using,

570
00:27:07.315 --> 00:27:10.485
<00:27:07.315>it's <00:27:07.455>in <00:27:07.595>a <00:27:07.735>repository <00:27:07.875>called <00:27:08.015>The <00:27:08.155>Random <00:27:08.295>Strings <00:27:08.435>in <00:27:08.575>my <00:27:08.715>GitHub.

571
00:27:10.585 --> 00:27:12.645
<00:27:10.585>And <00:27:10.740>in <00:27:10.896>my <00:27:11.051>GitHub, <00:27:11.207>you'll <00:27:11.362>also <00:27:11.518>find <00:27:11.673>there <00:27:11.829>on <00:27:11.985>the,

572
00:27:12.665 --> 00:27:13.725
<00:27:12.665>on <00:27:13.141>that <00:27:13.619>website.

573
00:27:14.185 --> 00:27:15.685
<00:27:14.185>So <00:27:14.455>thank <00:27:14.725>you <00:27:14.995>all <00:27:15.264>for <00:27:15.534>coming.

574
00:27:15.715 --> 00:27:17.245
<00:27:15.715>It's <00:27:15.990>been <00:27:16.265>really, <00:27:16.541>really <00:27:16.816>great <00:27:17.091>being

575
00:27:17.275 --> 00:27:19.205
<00:27:17.275>with <00:27:17.555>you <00:27:17.835>here <00:27:18.115>again <00:27:18.395>this <00:27:18.675>year.

576
00:27:19.695 --> 00:27:20.405
<00:27:19.695>Thank <00:27:20.014>you <00:27:20.334>all.