{"action":"created","comment":{"url":"https://api.github.com/repos/kbrandl/hands-on-labs/pulls/comments/216802721","pull_request_review_id":154372146,"id":216802721,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNjgwMjcyMQ==","diff_hunk":"@@ -0,0 +1,736 @@\n+# Build an Outlook add-in with Office JavaScript APIs\n+\n+Outlook add-ins are web applications built using standard web technologies and loaded within the Outlook client. In this lab, you'll use Outlook JavaScript APIs to build an event-driven add-in that can validate room availability and capacity as an organizer creates an appointment.\n+\n+![A screenshot of the Room Validator add-in with successful validation results](images/appt-add-in-success-carter.png)\n+\n+In this lab:\n+\n+- [Create the add-in project](#create-the-add-in-project)\n+- [Update the code](#update-the-code)\n+- [Prepare to test your add-in](#prepare-to-test-your-add-in)\n+- [Try it out](#try-it-out)\n+\n+## Create the add-in project\n+\n+Complete the following steps to create the add-in project by using the **Yeoman generator for Office Add-ins**.\n+\n+1. Use either File Explorer or the command prompt to create a folder on your local drive, and name the folder `my-outlook-addin`. This is where you'll create the add-in project.\n+\n+1. Open a command prompt and navigate to your new folder. For example, if you created the `my-outlook-addin` folder at the root of `C:\\`, run the following command from the command prompt to navigate to that folder.\n+\n+    ```\n+    cd C:\\my-outlook-addin\n+    ```\n+\n+1. Use the **Yeoman generator for Office Add-ins** to create an Outlook Add-in project by running the following command from the command prompt. Answer the prompts as shown below:\n+\n+    ```\n+    yo office\n+    ```\n+\n+    - **Choose a project type:** `Office Add-in project using Jquery framework`\n+    - **Choose a script type:** `JavaScript`\n+    - **What do you want to name your add-in?:** `My Outlook Add-in`\n+    - **Which Office client application would you like to support?:** `Outlook`\n+    \n+    ![A screenshot of the prompts and answers for the Yeoman generator](images/yo-prompts.png)\n+    \n+    After you complete the wizard, the generator will create the project and install supporting Node components.\n+\n+## Update the code\n+\n+At this point, the **Yeoman generator for Office Add-ins** has created a very basic add-in project that you can use as a starting point for building your Outlook add-in. Next, update the code as described in this section to customize the functionality of the add-in.\n+\n+### Step 1: Open add-in project folder in Visual Studio Code\n+\n+In this lab, you'll use Visual Studio Code as your code editor. Let's get started by using Visual Studio to open the folder that contains the add-in source code.\n+\n+1. Launch Visual Studio Code.\n+\n+1. On the **Welcome** tab in Visual Studio code, choose **Open folder...**.\n+\n+1. In the **Open Folder** dialog window, navigate to the directory where you created the add-in project (as described in [Create the add-in project](#create-the-add-in-project)), and then press `Select Folder`. \n+\n+### Step 2: Customize the manifest\n+\n+An add-in's manifest file defines its settings and capabilities. In this step, you'll customize XML markup in the manifest file to specify metadata for the Room Validator add-in and add a button to the ribbon that an appointment organizer can use to launch the add-in task pane.\n+\n+1. In Visual Studio Code, open the file **my-outlook-add-in-manifest.xml**. \n+\n+1. Replace the entire contents of the file with the following XML markup, and save the file. Notice the following things about this markup:\n+\n+    - The `Rule` element specifies the activation rule that should be evaluated for this contextual add-in. In this case, the specified rule evaluates to `true` for an `Appointment` item.\n+\n+    - The `ExtensionPoint` element defines the button on the ribbon that will open the add-in's task pane. In this case, the button will appear on the ribbon only for an appointment organizer.\n+\n+    ```xml\n+    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n+    <OfficeApp\n+            xmlns=\"http://schemas.microsoft.com/office/appforoffice/1.1\"\n+            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n+            xmlns:bt=\"http://schemas.microsoft.com/office/officeappbasictypes/1.0\"\n+            xmlns:mailappor=\"http://schemas.microsoft.com/office/mailappversionoverrides/1.0\"\n+            xsi:type=\"MailApp\">\n+\n+    <Id>bac018a4-efdb-494b-aa48-dd7c9eec25c4</Id>\n+    <Version>1.0.0.0</Version>\n+    <ProviderName>Jane Doe</ProviderName>\n+    <DefaultLocale>en-US</DefaultLocale>\n+    <DisplayName DefaultValue=\"My Outlook Add-in\" />\n+    <Description DefaultValue=\"Room Validator\"/>\n+    <IconUrl DefaultValue=\"https://localhost:3000/assets/icon-32.png\" />\n+    <HighResolutionIconUrl DefaultValue=\"https://localhost:3000/assets/hi-res-icon.png\"/>\n+    <SupportUrl DefaultValue=\"https://localhost:3000\" />\n+\n+    <Hosts>\n+        <Host Name=\"Mailbox\" />\n+    </Hosts>\n+    <Requirements>\n+        <Sets>\n+            <Set Name=\"Mailbox\" MinVersion=\"1.1\" />\n+        </Sets>\n+    </Requirements>\n+    <FormSettings>\n+        <Form xsi:type=\"ItemRead\">\n+        <DesktopSettings>\n+            <SourceLocation DefaultValue=\"https://localhost:3000/index.html\"/>\n+            <RequestedHeight>250</RequestedHeight>\n+        </DesktopSettings>\n+        </Form>\n+    </FormSettings>\n+\n+    <Permissions>ReadWriteItem</Permissions>\n+\n+    <!-- Rule: ItemType = Appointment -->\n+    <Rule xsi:type=\"RuleCollection\" Mode=\"Or\">\n+        <Rule xsi:type=\"ItemIs\" ItemType=\"Appointment\" FormType=\"Edit\"/>\n+    </Rule>\n+\n+    <DisableEntityHighlighting>false</DisableEntityHighlighting>\n+\n+    <VersionOverrides xmlns=\"http://schemas.microsoft.com/office/mailappversionoverrides\" xsi:type=\"VersionOverridesV1_0\">\n+        <Requirements>\n+            <bt:Sets DefaultMinVersion=\"1.3\">\n+                <bt:Set Name=\"Mailbox\" />\n+            </bt:Sets>\n+        </Requirements>\n+        <Hosts>\n+            <Host xsi:type=\"MailHost\">\n+                <DesktopFormFactor>\n+                    <FunctionFile resid=\"functionFile\" />\n+\n+                    <!-- Button for Appointment Organizer -->\n+                    <ExtensionPoint xsi:type=\"AppointmentOrganizerCommandSurface\">\n+                        <OfficeTab id=\"TabDefault\">\n+                            <Group id=\"apptComposeGroup\">\n+                                <Label resid=\"groupLabel\" />\n+                                <Control xsi:type=\"Button\" id=\"apptComposeOpenPaneButton\">\n+                                <Label resid=\"apptComposeButtonLabel\" />\n+                                <Supertip>\n+                                    <Title resid=\"apptComposeSuperTipTitle\" />\n+                                    <Description resid=\"apptComposeSuperTipDescription\" />\n+                                </Supertip>\n+                                <Icon>\n+                                    <bt:Image size=\"16\" resid=\"icon16\" />\n+                                    <bt:Image size=\"32\" resid=\"icon32\" />\n+                                    <bt:Image size=\"80\" resid=\"icon80\" />\n+                                </Icon>\n+                                <Action xsi:type=\"ShowTaskpane\">\n+                                    <SourceLocation resid=\"apptComposeTaskPaneUrl\" />\n+                                </Action>\n+                                </Control>\n+                            </Group>\n+                        </OfficeTab>\n+                    </ExtensionPoint>\n+\n+                </DesktopFormFactor>\n+            </Host>\n+        </Hosts>\n+\n+        <Resources>\n+            <bt:Images>\n+                <bt:Image id=\"icon16\" DefaultValue=\"https://localhost:3000/assets/icon-16.png\"/>\n+                <bt:Image id=\"icon32\" DefaultValue=\"https://localhost:3000/assets/icon-32.png\"/>\n+                <bt:Image id=\"icon80\" DefaultValue=\"https://localhost:3000/assets/icon-80.png\"/>\n+            </bt:Images>\n+            <bt:Urls>\n+                <bt:Url id=\"functionFile\" DefaultValue=\"https://localhost:3000/function-file/function-file.html\"/>\n+                <bt:Url id=\"apptComposeTaskPaneUrl\" DefaultValue=\"https://localhost:3000/index.html\"/>\n+            </bt:Urls>\n+            <bt:ShortStrings>\n+                <bt:String id=\"groupLabel\" DefaultValue=\"My Add-in Group\"/>\n+                <bt:String id=\"customTabLabel\"  DefaultValue=\"My Add-in Tab\"/>\n+                <bt:String id=\"apptComposeButtonLabel\" DefaultValue=\"Room Validator\"/>\n+                <bt:String id=\"apptComposeSuperTipTitle\" DefaultValue=\"Validate the choice of meeting room\"/>\n+            </bt:ShortStrings>\n+            <bt:LongStrings>\n+                <bt:String id=\"apptComposeSuperTipDescription\" DefaultValue=\"Opens a pane which validates that the selected meeting room is available at the chosen time and can accommodate the number of invited attendees.\"/>\n+            </bt:LongStrings>\n+        </Resources>\n+    </VersionOverrides>\n+    </OfficeApp>\n+    ```\n+\n+### Step 3: Customize the HTML\n+\n+The HTML markup in file **index.html** renders the user interface (UI) of the add-in task pane. In this step, you'll customize the HTML to create the task pane UI of the Room Validator add-in.\n+\n+1. In Visual Studio Code, open the file **index.html**. \n+\n+1. Replace the entire contents of the `body` tag with the following HTML markup, and save the file.\n+\n+    ```html\n+    <body class=\"ms-font-m ms-welcome\">\n+        <header class=\"ms-welcome__header ms-bgColor-themePrimary ms-u-fadeIn500\">\n+            <h1 class=\"ms-fontSize-xxl ms-fontWeight-regular ms-fontColor-white\">Room Validator</h1>\n+        </header>\n+        <main id=\"app-body\" class=\"ms-welcome__main\" style=\"display: none;\">\n+\n+            <div id=\"appointment-details\">\n+                <h2 class=\"ms-font-l ms-fontWeight-semibold ms-fontColor-neutralPrimaryAlt ms-u-slideUpIn20\">Appointment details</h2>\n+                <br />\n+                <p class=\"ms-font-m ms-fontColor-neutralSecondaryAlt\"><span class=\"ms-fontWeight-semibold\">Total number of attendees:&#160;</span><label id=\"attendees-count\"></label></p>\n+                <p class=\"ms-font-m ms-fontColor-neutralSecondaryAlt\"><span class=\"ms-fontWeight-semibold\">Start time:&#160;</span><label id=\"start-time\"></label></p>\n+                <p class=\"ms-font-m ms-fontColor-neutralSecondaryAlt\"><span class=\"ms-fontWeight-semibold\">End time:&#160;</span><label id=\"end-time\"></label></p>\n+                <br />\n+            </div>\n+\n+            <h2 class=\"ms-font-xl ms-fontWeight-semibold ms-fontColor-themeDark ms-u-slideUpIn20\">Choose a room</h2>\n+            <br />\n+            <p class=\"ms-font-m\">Choose a room from the list to see its capacity and availability. Press <b>Select</b> to specify the chosen room as the meeting location and see validation results.</p>\n+            <br />\n+            <select id=\"room\" class=\"ms-font-m\">\n+                <option value=\"0n\">-- Choose a room --</option>\n+                <option value=\"2a\">Conference Room Adams</option>\n+                <option value=\"2p\">Conference Room Carter</option>\n+                <option value=\"4a\">Conference Room Ford</option>\n+                <option value=\"4p\">Conference Room Johnson</option>\n+                <option value=\"6a\">Conference Room Lincoln</option>\n+                <option value=\"6p\">Conference Room Reagan</option>\n+                <option value=\"8a\">Conference Room Truman</option>\n+                <option value=\"8p\">Conference Room Wilson</option>\n+            </select>\n+            <ul class=\"ms-List ms-welcome__features ms-u-slideUpIn10\">\n+                <li class=\"ms-ListItem\">\n+                    <i class=\"ms-Icon ms-Icon--People\"></i>\n+                    <span class=\"ms-font-m ms-fontColor-neutralPrimary\">Capacity:&#160;&#160;</span><label id=\"room-capacity\"></label>\n+                </li>\n+                <li class=\"ms-ListItem\">\n+                        <i class=\"ms-Icon ms-Icon--DateTime\"></i>\n+                        <span class=\"ms-font-m ms-fontColor-neutralPrimary\">Availability:&#160;&#160;</span><label id=\"room-availability\"></label>\n+                    </li>\n+            </ul>\n+            <br />\n+            <button id=\"select\" class=\"ms-Button ms-bgColor-themeDark\">\n+                <span class=\"ms-fontColor-themeDark ms-fontWeight-semibold\">Select</span>\n+            </button>\n+            <br />\n+\n+            <h2 class=\"ms-font-xl ms-fontWeight-semibold ms-fontColor-themeDark ms-u-slideUpIn20\">Validation results</h2>\n+            <br />\n+            <label id=\"result-message\"></label>\n+            <ul id=\"result-list\" class=\"ms-List ms-welcome__features ms-u-slideUpIn10\"></ul>\n+        </main>\n+\n+        <script type=\"text/javascript\" src=\"node_modules/jquery/dist/jquery.js\"></script>\n+        <script type=\"text/javascript\" src=\"node_modules/office-ui-fabric-js/dist/js/fabric.js\"></script>\n+    </body>\n+    ```\n+\n+### Step 4: Customize the CSS\n+\n+The CSS code in file **app.css** specifies the custom styles that are used to render the task pane UI. In this step, you'll customize the CSS to specify the styles that are used by **index.html** to render the task pane UI of the Room Validator add-in.\n+\n+1. In Visual Studio Code, open the file **app.css**.\n+\n+1. Replace the entire contents of the file with the following code, and save the file.\n+\n+    ```css\n+    html, body {\n+        width: 100%;\n+        height: 100%;\n+        margin: 0;\n+        padding: 0;\n+    }\n+\n+    ul, p, h1, h2, h3, h4, h5, h6 {\n+        margin: 0;\n+        padding: 0;\n+    }\n+\n+    .ms-welcome {\n+        position: relative;\n+        display: -webkit-flex;\n+        display: flex;\n+        -webkit-flex-direction: column;\n+        flex-direction: column;\n+        -webkit-flex-wrap: nowrap;\n+        flex-wrap: nowrap;\n+        min-height: 800px;\n+        min-width: 180px;\n+        overflow: auto;\n+        overflow-x: hidden;\n+    }\n+\n+    .ms-welcome__header {\n+        min-height: 30px;\n+        padding: 0px;\n+        padding-bottom: 10px;\n+        display: -webkit-flex;\n+        display: flex;\n+        -webkit-flex-direction: column;\n+        flex-direction: column;\n+        -webkit-flex-wrap: nowrap;\n+        flex-wrap: nowrap;\n+        -webkit-align-items: center;\n+        align-items: center;\n+        -webkit-justify-content: flex-end;\n+        justify-content: flex-end;\n+    }\n+\n+    .ms-welcome__header > h1 {\n+        margin-top: 10px;\n+        text-align: center;\n+    }\n+\n+    .ms-welcome__main {\n+        display: -webkit-flex;\n+        display: flex;\n+        -webkit-flex-direction: column;\n+        flex-direction: column;\n+        -webkit-flex-wrap: nowrap;\n+        flex-wrap: nowrap;\n+        -webkit-align-items: center;\n+        align-items: left;\n+        -webkit-flex: 1 0 0;\n+        flex: 1 0 0;\n+        padding: 20px 20px;\n+    }\n+\n+    .ms-welcome__main > h2 {\n+        width: 100%;\n+        text-align: left;\n+    }\n+\n+    .ms-welcome__features.ms-List .ms-ListItem > .ms-Icon {\n+        font-size: 14pt;\n+    }\n+\n+    .ms-welcome__features.ms-List .ms-ListItem > .ms-Icon {\n+        margin-right: 10px;\n+    }\n+\n+    @media (min-width: 0) and (max-width: 350px) {\n+        .ms-welcome__features {\n+            width: 100%;\n+        }\n+    }\n+    ```\n+\n+### Step 5: Customize the script\n+\n+The contents of file **src\\index.js** specifies the script for the add-in. In this step, you'll specify code that enables the Room Validator add-in to validate room selection when an appointment organizer changes attendees or appointment time.","path":"Ignite18/outlook-add-in-lab/Lab.md","position":333,"original_position":333,"commit_id":"2d5636057b7757dc1da8f31987fc52b8c739dfcc","original_commit_id":"2d5636057b7757dc1da8f31987fc52b8c739dfcc","user":{"login":"ElizabethSamuel-MSFT","id":28541963,"node_id":"MDQ6VXNlcjI4NTQxOTYz","avatar_url":"https://avatars2.githubusercontent.com/u/28541963?v=4","gravatar_id":"","url":"https://api.github.com/users/ElizabethSamuel-MSFT","html_url":"https://github.com/ElizabethSamuel-MSFT","followers_url":"https://api.github.com/users/ElizabethSamuel-MSFT/followers","following_url":"https://api.github.com/users/ElizabethSamuel-MSFT/following{/other_user}","gists_url":"https://api.github.com/users/ElizabethSamuel-MSFT/gists{/gist_id}","starred_url":"https://api.github.com/users/ElizabethSamuel-MSFT/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ElizabethSamuel-MSFT/subscriptions","organizations_url":"https://api.github.com/users/ElizabethSamuel-MSFT/orgs","repos_url":"https://api.github.com/users/ElizabethSamuel-MSFT/repos","events_url":"https://api.github.com/users/ElizabethSamuel-MSFT/events{/privacy}","received_events_url":"https://api.github.com/users/ElizabethSamuel-MSFT/received_events","type":"User","site_admin":false},"body":"should this be \"specify the script\" since the subject is \"The contents\"?","created_at":"2018-09-11T20:01:56Z","updated_at":"2018-09-11T20:01:56Z","html_url":"https://github.com/kbrandl/hands-on-labs/pull/1#discussion_r216802721","pull_request_url":"https://api.github.com/repos/kbrandl/hands-on-labs/pulls/1","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/kbrandl/hands-on-labs/pulls/comments/216802721"},"html":{"href":"https://github.com/kbrandl/hands-on-labs/pull/1#discussion_r216802721"},"pull_request":{"href":"https://api.github.com/repos/kbrandl/hands-on-labs/pulls/1"}}},"pull_request":{"url":"https://api.github.com/repos/kbrandl/hands-on-labs/pulls/1","id":214475141,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE0NDc1MTQx","html_url":"https://github.com/kbrandl/hands-on-labs/pull/1","diff_url":"https://github.com/kbrandl/hands-on-labs/pull/1.diff","patch_url":"https://github.com/kbrandl/hands-on-labs/pull/1.patch","issue_url":"https://api.github.com/repos/kbrandl/hands-on-labs/issues/1","number":1,"state":"open","locked":false,"title":"Outlook add-in lab","user":{"login":"kbrandl","id":3019529,"node_id":"MDQ6VXNlcjMwMTk1Mjk=","avatar_url":"https://avatars3.githubusercontent.com/u/3019529?v=4","gravatar_id":"","url":"https://api.github.com/users/kbrandl","html_url":"https://github.com/kbrandl","followers_url":"https://api.github.com/users/kbrandl/followers","following_url":"https://api.github.com/users/kbrandl/following{/other_user}","gists_url":"https://api.github.com/users/kbrandl/gists{/gist_id}","starred_url":"https://api.github.com/users/kbrandl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbrandl/subscriptions","organizations_url":"https://api.github.com/users/kbrandl/orgs","repos_url":"https://api.github.com/users/kbrandl/repos","events_url":"https://api.github.com/users/kbrandl/events{/privacy}","received_events_url":"https://api.github.com/users/kbrandl/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-09-10T23:48:16Z","updated_at":"2018-09-11T20:01:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5d8687ecf8738b604244e1e4ef9d8faccc562632","assignee":null,"assignees":[],"requested_reviewers":[{"login":"AlexJerabek","id":38896772,"node_id":"MDQ6VXNlcjM4ODk2Nzcy","avatar_url":"https://avatars3.githubusercontent.com/u/38896772?v=4","gravatar_id":"","url":"https://api.github.com/users/AlexJerabek","html_url":"https://github.com/AlexJerabek","followers_url":"https://api.github.com/users/AlexJerabek/followers","following_url":"https://api.github.com/users/AlexJerabek/following{/other_user}","gists_url":"https://api.github.com/users/AlexJerabek/gists{/gist_id}","starred_url":"https://api.github.com/users/AlexJerabek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlexJerabek/subscriptions","organizations_url":"https://api.github.com/users/AlexJerabek/orgs","repos_url":"https://api.github.com/users/AlexJerabek/repos","events_url":"https://api.github.com/users/AlexJerabek/events{/privacy}","received_events_url":"https://api.github.com/users/AlexJerabek/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/kbrandl/hands-on-labs/pulls/1/commits","review_comments_url":"https://api.github.com/repos/kbrandl/hands-on-labs/pulls/1/comments","review_comment_url":"https://api.github.com/repos/kbrandl/hands-on-labs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kbrandl/hands-on-labs/issues/1/comments","statuses_url":"https://api.github.com/repos/kbrandl/hands-on-labs/statuses/2d5636057b7757dc1da8f31987fc52b8c739dfcc","head":{"label":"kbrandl:ignite-outlook-addin-lab","ref":"ignite-outlook-addin-lab","sha":"2d5636057b7757dc1da8f31987fc52b8c739dfcc","user":{"login":"kbrandl","id":3019529,"node_id":"MDQ6VXNlcjMwMTk1Mjk=","avatar_url":"https://avatars3.githubusercontent.com/u/3019529?v=4","gravatar_id":"","url":"https://api.github.com/users/kbrandl","html_url":"https://github.com/kbrandl","followers_url":"https://api.github.com/users/kbrandl/followers","following_url":"https://api.github.com/users/kbrandl/following{/other_user}","gists_url":"https://api.github.com/users/kbrandl/gists{/gist_id}","starred_url":"https://api.github.com/users/kbrandl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbrandl/subscriptions","organizations_url":"https://api.github.com/users/kbrandl/orgs","repos_url":"https://api.github.com/users/kbrandl/repos","events_url":"https://api.github.com/users/kbrandl/events{/privacy}","received_events_url":"https://api.github.com/users/kbrandl/received_events","type":"User","site_admin":false},"repo":{"id":146814890,"node_id":"MDEwOlJlcG9zaXRvcnkxNDY4MTQ4OTA=","name":"hands-on-labs","full_name":"kbrandl/hands-on-labs","owner":{"login":"kbrandl","id":3019529,"node_id":"MDQ6VXNlcjMwMTk1Mjk=","avatar_url":"https://avatars3.githubusercontent.com/u/3019529?v=4","gravatar_id":"","url":"https://api.github.com/users/kbrandl","html_url":"https://github.com/kbrandl","followers_url":"https://api.github.com/users/kbrandl/followers","following_url":"https://api.github.com/users/kbrandl/following{/other_user}","gists_url":"https://api.github.com/users/kbrandl/gists{/gist_id}","starred_url":"https://api.github.com/users/kbrandl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbrandl/subscriptions","organizations_url":"https://api.github.com/users/kbrandl/orgs","repos_url":"https://api.github.com/users/kbrandl/repos","events_url":"https://api.github.com/users/kbrandl/events{/privacy}","received_events_url":"https://api.github.com/users/kbrandl/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kbrandl/hands-on-labs","description":"This repo represents the content for the Coding Challenges, typically used for Microsoft Developer Events (i.e. //build)","fork":true,"url":"https://api.github.com/repos/kbrandl/hands-on-labs","forks_url":"https://api.github.com/repos/kbrandl/hands-on-labs/forks","keys_url":"https://api.github.com/repos/kbrandl/hands-on-labs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kbrandl/hands-on-labs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kbrandl/hands-on-labs/teams","hooks_url":"https://api.github.com/repos/kbrandl/hands-on-labs/hooks","issue_events_url":"https://api.github.com/repos/kbrandl/hands-on-labs/issues/events{/number}","events_url":"https://api.github.com/repos/kbrandl/hands-on-labs/events","assignees_url":"https://api.github.com/repos/kbrandl/hands-on-labs/assignees{/user}","branches_url":"https://api.github.com/repos/kbrandl/hands-on-labs/branches{/branch}","tags_url":"https://api.github.com/repos/kbrandl/hands-on-labs/tags","blobs_url":"https://api.github.com/repos/kbrandl/hands-on-labs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kbrandl/hands-on-labs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kbrandl/hands-on-labs/git/refs{/sha}","trees_url":"https://api.github.com/repos/kbrandl/hands-on-labs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kbrandl/hands-on-labs/statuses/{sha}","languages_url":"https://api.github.com/repos/kbrandl/hands-on-labs/languages","stargazers_url":"https://api.github.com/repos/kbrandl/hands-on-labs/stargazers","contributors_url":"https://api.github.com/repos/kbrandl/hands-on-labs/contributors","subscribers_url":"https://api.github.com/repos/kbrandl/hands-on-labs/subscribers","subscription_url":"https://api.github.com/repos/kbrandl/hands-on-labs/subscription","commits_url":"https://api.github.com/repos/kbrandl/hands-on-labs/commits{/sha}","git_commits_url":"https://api.github.com/repos/kbrandl/hands-on-labs/git/commits{/sha}","comments_url":"https://api.github.com/repos/kbrandl/hands-on-labs/comments{/number}","issue_comment_url":"https://api.github.com/repos/kbrandl/hands-on-labs/issues/comments{/number}","contents_url":"https://api.github.com/repos/kbrandl/hands-on-labs/contents/{+path}","compare_url":"https://api.github.com/repos/kbrandl/hands-on-labs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kbrandl/hands-on-labs/merges","archive_url":"https://api.github.com/repos/kbrandl/hands-on-labs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kbrandl/hands-on-labs/downloads","issues_url":"https://api.github.com/repos/kbrandl/hands-on-labs/issues{/number}","pulls_url":"https://api.github.com/repos/kbrandl/hands-on-labs/pulls{/number}","milestones_url":"https://api.github.com/repos/kbrandl/hands-on-labs/milestones{/number}","notifications_url":"https://api.github.com/repos/kbrandl/hands-on-labs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kbrandl/hands-on-labs/labels{/name}","releases_url":"https://api.github.com/repos/kbrandl/hands-on-labs/releases{/id}","deployments_url":"https://api.github.com/repos/kbrandl/hands-on-labs/deployments","created_at":"2018-08-30T22:52:54Z","updated_at":"2018-08-30T22:53:18Z","pushed_at":"2018-09-11T13:32:35Z","git_url":"git://github.com/kbrandl/hands-on-labs.git","ssh_url":"git@github.com:kbrandl/hands-on-labs.git","clone_url":"https://github.com/kbrandl/hands-on-labs.git","svn_url":"https://github.com/kbrandl/hands-on-labs","homepage":"","size":53505,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"kbrandl:master","ref":"master","sha":"b60d37139bf9976513175c6268c6c40a68a4ac7d","user":{"login":"kbrandl","id":3019529,"node_id":"MDQ6VXNlcjMwMTk1Mjk=","avatar_url":"https://avatars3.githubusercontent.com/u/3019529?v=4","gravatar_id":"","url":"https://api.github.com/users/kbrandl","html_url":"https://github.com/kbrandl","followers_url":"https://api.github.com/users/kbrandl/followers","following_url":"https://api.github.com/users/kbrandl/following{/other_user}","gists_url":"https://api.github.com/users/kbrandl/gists{/gist_id}","starred_url":"https://api.github.com/users/kbrandl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbrandl/subscriptions","organizations_url":"https://api.github.com/users/kbrandl/orgs","repos_url":"https://api.github.com/users/kbrandl/repos","events_url":"https://api.github.com/users/kbrandl/events{/privacy}","received_events_url":"https://api.github.com/users/kbrandl/received_events","type":"User","site_admin":false},"repo":{"id":146814890,"node_id":"MDEwOlJlcG9zaXRvcnkxNDY4MTQ4OTA=","name":"hands-on-labs","full_name":"kbrandl/hands-on-labs","owner":{"login":"kbrandl","id":3019529,"node_id":"MDQ6VXNlcjMwMTk1Mjk=","avatar_url":"https://avatars3.githubusercontent.com/u/3019529?v=4","gravatar_id":"","url":"https://api.github.com/users/kbrandl","html_url":"https://github.com/kbrandl","followers_url":"https://api.github.com/users/kbrandl/followers","following_url":"https://api.github.com/users/kbrandl/following{/other_user}","gists_url":"https://api.github.com/users/kbrandl/gists{/gist_id}","starred_url":"https://api.github.com/users/kbrandl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbrandl/subscriptions","organizations_url":"https://api.github.com/users/kbrandl/orgs","repos_url":"https://api.github.com/users/kbrandl/repos","events_url":"https://api.github.com/users/kbrandl/events{/privacy}","received_events_url":"https://api.github.com/users/kbrandl/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kbrandl/hands-on-labs","description":"This repo represents the content for the Coding Challenges, typically used for Microsoft Developer Events (i.e. //build)","fork":true,"url":"https://api.github.com/repos/kbrandl/hands-on-labs","forks_url":"https://api.github.com/repos/kbrandl/hands-on-labs/forks","keys_url":"https://api.github.com/repos/kbrandl/hands-on-labs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kbrandl/hands-on-labs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kbrandl/hands-on-labs/teams","hooks_url":"https://api.github.com/repos/kbrandl/hands-on-labs/hooks","issue_events_url":"https://api.github.com/repos/kbrandl/hands-on-labs/issues/events{/number}","events_url":"https://api.github.com/repos/kbrandl/hands-on-labs/events","assignees_url":"https://api.github.com/repos/kbrandl/hands-on-labs/assignees{/user}","branches_url":"https://api.github.com/repos/kbrandl/hands-on-labs/branches{/branch}","tags_url":"https://api.github.com/repos/kbrandl/hands-on-labs/tags","blobs_url":"https://api.github.com/repos/kbrandl/hands-on-labs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kbrandl/hands-on-labs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kbrandl/hands-on-labs/git/refs{/sha}","trees_url":"https://api.github.com/repos/kbrandl/hands-on-labs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kbrandl/hands-on-labs/statuses/{sha}","languages_url":"https://api.github.com/repos/kbrandl/hands-on-labs/languages","stargazers_url":"https://api.github.com/repos/kbrandl/hands-on-labs/stargazers","contributors_url":"https://api.github.com/repos/kbrandl/hands-on-labs/contributors","subscribers_url":"https://api.github.com/repos/kbrandl/hands-on-labs/subscribers","subscription_url":"https://api.github.com/repos/kbrandl/hands-on-labs/subscription","commits_url":"https://api.github.com/repos/kbrandl/hands-on-labs/commits{/sha}","git_commits_url":"https://api.github.com/repos/kbrandl/hands-on-labs/git/commits{/sha}","comments_url":"https://api.github.com/repos/kbrandl/hands-on-labs/comments{/number}","issue_comment_url":"https://api.github.com/repos/kbrandl/hands-on-labs/issues/comments{/number}","contents_url":"https://api.github.com/repos/kbrandl/hands-on-labs/contents/{+path}","compare_url":"https://api.github.com/repos/kbrandl/hands-on-labs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kbrandl/hands-on-labs/merges","archive_url":"https://api.github.com/repos/kbrandl/hands-on-labs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kbrandl/hands-on-labs/downloads","issues_url":"https://api.github.com/repos/kbrandl/hands-on-labs/issues{/number}","pulls_url":"https://api.github.com/repos/kbrandl/hands-on-labs/pulls{/number}","milestones_url":"https://api.github.com/repos/kbrandl/hands-on-labs/milestones{/number}","notifications_url":"https://api.github.com/repos/kbrandl/hands-on-labs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kbrandl/hands-on-labs/labels{/name}","releases_url":"https://api.github.com/repos/kbrandl/hands-on-labs/releases{/id}","deployments_url":"https://api.github.com/repos/kbrandl/hands-on-labs/deployments","created_at":"2018-08-30T22:52:54Z","updated_at":"2018-08-30T22:53:18Z","pushed_at":"2018-09-11T13:32:35Z","git_url":"git://github.com/kbrandl/hands-on-labs.git","ssh_url":"git@github.com:kbrandl/hands-on-labs.git","clone_url":"https://github.com/kbrandl/hands-on-labs.git","svn_url":"https://github.com/kbrandl/hands-on-labs","homepage":"","size":53505,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kbrandl/hands-on-labs/pulls/1"},"html":{"href":"https://github.com/kbrandl/hands-on-labs/pull/1"},"issue":{"href":"https://api.github.com/repos/kbrandl/hands-on-labs/issues/1"},"comments":{"href":"https://api.github.com/repos/kbrandl/hands-on-labs/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/kbrandl/hands-on-labs/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/kbrandl/hands-on-labs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kbrandl/hands-on-labs/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/kbrandl/hands-on-labs/statuses/2d5636057b7757dc1da8f31987fc52b8c739dfcc"}},"author_association":"OWNER"}}
{"actor":{"display_login":"ElizabethSamuel-MSFT"}}