{"action":"created","comment":{"url":"https://api.github.com/repos/workato/connector_sdk/pulls/comments/205489971","pull_request_review_id":140768545,"id":205489971,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNTQ4OTk3MQ==","diff_hunk":"@@ -0,0 +1,1258 @@\n+{\n+  title: \"Microsoft Sharepoint (Custom)\",\n+\n+  secure_tunnel: true,\n+\n+  connection: {\n+    fields: [\n+      {\n+        name: \"subdomain\",\n+        control_type: \"subdomain\",\n+        url: \".sharepoint.com\",\n+        optional: false,\n+        hint: \"Your sharepoint subdomain found in your sharepoint URL\",\n+      },\n+      {\n+        name: \"client_id\",\n+        optional: false\n+      },\n+      {\n+        name: \"client_secret\",\n+        optional: true,\n+        control_type: \"password\"\n+      },\n+      {\n+        name: \"siteurl\", label: \"Site relative URL\",\n+        hint: \"Site relative url between *.sharepoint.com/ and /_api \" \\\n+          \"from the sharepoint Rest API url e.g. sites/AppsCon \"\n+      }\n+    ],\n+\n+    authorization: {\n+      type: \"oauth2\",\n+      authorization_url: lambda do |connection|\n+        \"https://login.windows.net/common/oauth2/authorize?resource=\\\n+        https://#{connection['subdomain']}.sharepoint.com&response_type=code&\\\n+        prompt=login&client_id=#{connection['client_id']}\"\n+      end,\n+\n+      acquire: lambda do |connection, auth_code, redirect_url|\n+        post(\"https://login.windows.net/common/oauth2/token\").\n+          payload(client_id: connection[\"client_id\"],\n+            client_secret: connection[\"client_secret\"],\n+            grant_type: :authorization_code,\n+            code: auth_code,\n+            redirect_uri: redirect_url).\n+          request_format_www_form_urlencoded\n+      end,\n+\n+      refresh: lambda do |connection, refresh_token|\n+        post(\"https://login.windows.net/common/oauth2/token\").\n+          payload(client_id: connection[\"client_id\"],\n+            client_secret: connection[\"client_secret\"],\n+            grant_type: :refresh_token,\n+            refresh_token: refresh_token).\n+          request_format_www_form_urlencoded\n+      end,\n+\n+      credentials: lambda do |_connection, access_token|\n+        headers(\"Authorization\": \"Bearer #{access_token}\")\n+      end\n+    },\n+\n+    base_uri: lambda do |connection|\n+      \"https://#{connection['subdomain']}.sharepoint.com\"\n+    end\n+  },\n+\n+  test: lambda do |connection|\n+    get(\"/_api/web/title\")\n+  end,\n+\n+  object_definitions: {\n+    list_create: {\n+      fields: lambda do |connection, config|\n+        get(call(\"url\", siteurl: connection[\"siteurl\"]) +  \\\n+        \"lists(guid%27#{config['list_id']}%27)/Fields\").\n+          params(\"$select\": \"odata.type,EntityPropertyName,Hidden,Required,\n+          ReadOnlyField,Title,TypeAsString,\n+          Choices,IsDependentLookup\")[\"value\"].\n+          select { |f| f[\"ReadOnlyField\"] == false &&\n+            f[\"Hidden\"] == false && f[\"TypeAsString\"] != \"Attachments\" &&\n+          f[\"EntityPropertyName\"] != \"ContentType\" }.\n+          map do |f|\n+            if f[\"odata.type\"] == \"SP.Field\"\n+              {\n+                name: f[\"EntityPropertyName\"],\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                type: :boolean, optional: !f[\"Required\"]\n+              }\n+            elsif f[\"odata.type\"] == \"SP.FieldNumber\"\n+              {\n+                name: f[\"EntityPropertyName\"],\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                type: :integer, optional: !f[\"Required\"]\n+              }\n+            elsif f[\"odata.type\"] == \"SP.FieldDateTime\"\n+              {\n+                name: f[\"EntityPropertyName\"],\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                type: :date_time, optional: !f[\"Required\"]\n+              }\n+            elsif f[\"odata.type\"] == \"SP.FieldChoice\"\n+              {\n+                name: f[\"EntityPropertyName\"],\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                control_type: :select,\n+                optional: !f[\"Required\"],\n+                pick_list: f[\"Choices\"]&.map { |choice| [choice, choice] },\n+                toggle_hint: \"Select from list\",\n+                toggle_field: {\n+                  toggle_hint: \"Enter custom value\",\n+                  name: f[\"EntityPropertyName\"], type: \"string\",\n+                  control_type: \"text\",\n+                  label: \"#{f['Title']}(#{f['EntityPropertyName']})\",\n+                  optional: !f[\"Required\"]\n+                }\n+              }\n+            elsif f[\"odata.type\"] == \"SP.FieldUser\"\n+              {\n+                name: \"#{f['EntityPropertyName']}Id\",\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                type: :integer, optional: !f[\"Required\"]\n+              }\n+            elsif f[\"odata.type\"] == \"SP.FieldLookup\" &&\n+                f[\"IsDependentLookup\"] == false\n+              {\n+                name: \"#{f['EntityPropertyName']}Id\",\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                optional: !f[\"Required\"], type: :integer\n+              }\n+            elsif f[\"odata.type\"] == \"SP.FieldUrl\"\n+              {\n+                name: f[\"EntityPropertyName\"],\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                type: :object, properties: [\n+                  { name: \"Description\" },\n+                  { name: \"Url\" }\n+                ]\n+              }\n+            else\n+              {\n+                name: f[\"EntityPropertyName\"],\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                optional: !f[\"Required\"]\n+              }\n+            end\n+          end\n+      end\n+    },\n+\n+    list_output: {\n+      fields: lambda do |connection, config|\n+        get(call(\"url\", siteurl: connection[\"siteurl\"]) + \\\n+            \"lists(guid%27#{config['list_id']}%27)/Fields\").\n+          params(\"$select\": \"odata.type,Title,TypeAsString,\n+          EntityPropertyName,IsDependentLookup\")[\"value\"].\n+          map do |f|\n+            if f[\"odata.type\"] == \"SP.FieldNumber\" ||\n+              f[\"TypeAsString\"] == \"Counter\"\n+              {\n+                name: f[\"EntityPropertyName\"],\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                type: :integer\n+              }\n+            elsif f[\"odata.type\"] == \"SP.Field\"\n+              {\n+                name: f[\"EntityPropertyName\"],\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                type: :boolean\n+              }\n+            elsif f[\"odata.type\"] == \"SP.FieldDateTime\"\n+              {\n+                name: f[\"EntityPropertyName\"],\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                type: :date_time\n+              }\n+            elsif f[\"odata.type\"] == \"SP.FieldUser\"\n+              {\n+                name: \"#{f['EntityPropertyName']}Id\",\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                type: :integer\n+              }\n+            elsif f[\"odata.type\"] == \"SP.FieldLookup\" &&\n+              f[\"IsDependentLookup\"] == false\n+              {\n+                name: \"#{f['EntityPropertyName']}Id\",\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                type: :integer\n+              }\n+            elsif f[\"odata.type\"] == \"SP.FieldUrl\"\n+              {\n+                name: f[\"EntityPropertyName\"],\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                type: :object, properties: [\n+                  { name: \"Description\" },\n+                  { name: \"Url\" }\n+                ]\n+              }\n+            elsif f[\"odata.type\"] == \"SP.Taxonomy.TaxonomyField\"\n+              {\n+                name: \"#{f['EntityPropertyName']}Id\",\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                type: :object, properties: [\n+                  { name: \"Label\" },\n+                  { name: \"TermGuid\" },\n+                  { name: \"WssId\", type: :integer, label: \"Wss ID\" }\n+                ]\n+              }\n+            else\n+              {\n+                name: f[\"EntityPropertyName\"],\n+                label: \"#{f['Title']} (#{f['EntityPropertyName']})\"\n+              }\n+            end\n+          end\n+      end\n+    },\n+\n+    list_item: {\n+      fields: lambda do |connection, config|\n+        get(call(\"url\", siteurl: connection[\"siteurl\"]) + \\\n+            \"lists(guid%27#{config['list_id']}%27)/Fields\").\n+          params(\"$select\": \"odata.type,EntityPropertyName,Hidden,Required,\n+          ReadOnlyField,Title,TypeAsString,Choices,IsDependentLookup\")\n+          [\"value\"].\n+          select { |f| f[\"ReadOnlyField\"] == false &&\n+            f[\"Hidden\"] == false && f[\"TypeAsString\"] != \"Attachments\" &&\n+            f[\"EntityPropertyName\"] != \"ContentType\" }.\n+            map do |f|\n+              if f[\"odata.type\"] == \"SP.Field\"\n+                {\n+                  name: f[\"EntityPropertyName\"],\n+                  label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                  type: :boolean, optional: !f[\"Required\"]\n+                }\n+              elsif f[\"odata.type\"] == \"SP.FieldNumber\"\n+                {\n+                  name: f[\"EntityPropertyName\"],\n+                  label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                  type: :integer, optional: !f[\"Required\"]\n+                }\n+              elsif f[\"odata.type\"] == \"SP.FieldDateTime\"\n+                {\n+                  name: f[\"EntityPropertyName\"],\n+                  label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                  type: :date_time, optional: !f[\"Required\"]\n+                }\n+              elsif f[\"odata.type\"] == \"SP.FieldChoice\"\n+                {\n+                  name: f[\"EntityPropertyName\"],\n+                  label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                  control_type: :select,\n+                  optional: !f[\"Required\"],\n+                  pick_list: f[\"Choices\"]&.map { |choice| [choice, choice] },\n+                  toggle_hint: \"Select from list\",\n+                  toggle_field: {\n+                    toggle_hint: \"Enter custom value\",\n+                    name: f[\"EntityPropertyName\"], type: \"string\",\n+                    control_type: \"text\",\n+                    label: \"#{f['Title']}(#{f['EntityPropertyName']})\",\n+                    optional: !f[\"Required\"]\n+                  }\n+                }\n+              elsif f[\"odata.type\"] == \"SP.FieldUser\"\n+                {\n+                  name: \"#{f['EntityPropertyName']}Id\",\n+                  label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                  type: :integer, optional: !f[\"Required\"]\n+                }\n+              elsif f[\"odata.type\"] == \"SP.FieldLookup\" &&\n+              f[\"IsDependentLookup\"] == false\n+                {\n+                  name: \"#{f['EntityPropertyName']}Id\",\n+                  label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                  optional: !f[\"Required\"], type: :integer\n+                }\n+              elsif f[\"odata.type\"] == \"SP.FieldUrl\"\n+                {\n+                  name: f[\"EntityPropertyName\"],\n+                  label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                  type: :object, properties: [\n+                    { name: \"Description\" },\n+                    { name: \"Url\" }\n+                  ]\n+                }\n+              else\n+                {\n+                  name: f[\"EntityPropertyName\"],\n+                  label: \"#{f['Title']} (#{f['EntityPropertyName']})\",\n+                  optional: !f[\"Required\"]\n+                }\n+              end\n+            end\n+      end\n+    },\n+\n+    document: {\n+      fields: lambda do |_connection, _config|\n+        [\n+          { name: \"odata_metadata\",\n+            label: \"File Metadata\",\n+            control_type: \"url\" },\n+          { name: \"odata_type\",\n+            label: \"Entity type full name\" },\n+          { name: \"odata_id\",\n+            label: \"ID\" },\n+          { name: \"__metadata\",\n+            type: \"object\",\n+            properties: [\n+              { name: \"type\" },\n+              { name: \"id\" },\n+              { name: \"uri\" },\n+            ] },\n+          { name: \"odata_editLink\",\n+            label: \"Edit link\" },\n+          { name: \"CheckInComment\" },\n+          { name: \"CheckOutType\",\n+            type: \"integer\" },\n+          { name: \"ContentTag\" },\n+          { name: \"CustomizedPageStatus\",\n+            type: \"integer\" },\n+          { name: \"ETag\" },\n+          { name: \"Exists\",\n+            type: \"boolean\" },\n+          { name: \"Length\" },\n+          { name: \"Level\",\n+            type: \"integer\" },\n+          { name: \"MajorVersion\",\n+            type: \"integer\" },\n+          { name: \"MinorVersion\",\n+            type: \"integer\" },\n+          { name: \"Name\" },\n+          { name: \"LinkingUri\" },\n+          { name: \"LinkingUrl\" },\n+          { name: \"ServerRelativeUrl\" },\n+          { name: \"TimeCreated\",\n+            type: \"date_time\",\n+            control_type: \"date_time\" },\n+          { name: \"TimeLastModified\",\n+            type: \"date_time\",\n+            control_type: \"date_time\" },\n+          { name: \"Title\" },\n+          { name: \"UIVersion\",\n+            type: \"integer\" },\n+          { name: \"UIVersionLabel\" },\n+          { name: \"UniqueId\" }\n+        ]\n+      end\n+    },\n+\n+    file_item_fields: {\n+      fields: lambda do\n+        [\n+          { name: \"__metadata\", type: \"object\", properties: [\n+            { name: \"id\" },\n+            { name: \"uri\" },\n+            { name: \"etag\" },\n+            { name: \"type\" }\n+          ]},\n+          { name: \"FileSystemObjectType\" },\n+          { name: \"ID\", type: \"integer\" },\n+          { name: \"ContentTypeId\" },\n+          { name: \"Created\", type: \"date_time\", control_type: \"date_time\" },\n+          { name: \"AuthorId\", type: \"integer\" },\n+          { name: \"Modified\", type: \"date_time\", control_type: \"date_time\" },\n+          { name: \"EditorId\", type: \"integer\" },\n+          { name: \"OData__CopySource\" },\n+          { name: \"CheckoutUserId\" },\n+          { name: \"OData__UIVersionString\" },\n+          { name: \"GUID\" },\n+          { name: \"ComplianceAssetId\" },\n+          { name: \"Title\" }\n+        ]\n+      end\n+    },\n+\n+    file: {\n+      fields: lambda do\n+        [\n+          { name: \"CheckInComment\" },\n+          { name: \"CheckOutType\", type: \"integer\", control_type: \"number\" },\n+          { name: \"ContentTag\" },\n+          { name: \"CustomizedPageStatus\",\n+            type: \"integer\",\n+            control_type: \"number\" },\n+          { name: \"ETag\" },\n+          { name: \"Exists\", type: \"boolean\", control_type: \"checkbox\" },\n+          { name: \"Length\", type: \"integer\", control_type: \"number\" },\n+          { name: \"Level\", type: \"integer\", control_type: \"integer\" },\n+          { name: \"MajorVersion\", type: \"integer\", control_type: \"integer\" },\n+          { name: \"MinorVersion\", type: \"integer\", control_type: \"integer\" },\n+          { name: \"Name\" },\n+          { name: \"ServerRelativeUrl\" },\n+          { name: \"TimeCreated\",\n+            type: \"date_time\",\n+            control_type: \"date_time\" },\n+          { name: \"TimeLastModified\",\n+            type: \"date_time\",\n+            control_type: \"date_time\" },\n+          { name: \"Title\" },\n+          { name: \"UiVersion\" },\n+          { name: \"UiVersionLabel\" },\n+          { name: \"UniqueId\" }\n+        ]\n+      end\n+    },\n+\n+    search_result: {\n+      fields: lambda do\n+        [\n+          { name: \"ElapsedTime\", type: \"integer\" },\n+          { name: \"PrimaryQueryResult\", type: \"object\", properties: [\n+            { name: \"QueryId\" },\n+            { name: \"QueryRuleId\" },\n+            { name: \"RefinementResults\" },\n+            { name: \"RelevantResults\", type: \"object\", properties: [\n+              { name: \"GroupTemplateId\" },\n+              { name: \"ItemTemplateId\" },\n+              { name: \"Properties\", type: \"array\", of: \"object\", properties: [\n+                { name: \"Key\" },\n+                { name: \"Value\" },\n+                { name: \"ValueType\" }\n+              ] },\n+              { name: \"ResultTitle\" },\n+              { name: \"ResultTitleUrl\" },\n+              { name: \"RowCount\", type: \"integer\" },\n+              { name: \"TotalRows\", type: \"integer\" },\n+              { name: \"TotalRowsIncludingDuplicates\", type: \"integer\" },\n+              { name: \"Table\", type: \"object\", properties: [\n+                { name: \"Rows\", type: \"array\", of: \"object\", properties: [\n+                  { name: \"Row\", type: \"object\", properties: [\n+                    { name: \"Cells\", type: \"array\", of: \"object\", properties: [\n+                      { name: \"Key\" },\n+                      { name: \"Value\" },\n+                      { name: \"ValueType\" }\n+                    ] }\n+                  ] }\n+                ] }\n+              ] }\n+            ] }\n+          ] },\n+          { name: \"Properties\", type: \"array\", of: \"object\", properties: [\n+            { name: \"Property\", type: \"object\", properties: [\n+              { name: \"Key\" },\n+              { name: \"Value\" },\n+              { name: \"ValueType\" }\n+            ] }\n+          ] },\n+          { name: \"SpellingSuggestion\" },\n+          { name: \"SecondaryQueryResults\" },\n+          { name: \"TriggeredRules\" }\n+        ]\n+      end\n+    },\n+\n+    doc_result: {\n+      fields: lambda do\n+        [\n+          { name: \"rows\", type: \"array\", of: \"object\", properties: [\n+            { name: \"row\", type: \"object\", properties: [\n+              { name: \"Cells\", type: \"array\", of: \"object\", properties: [\n+                { name: \"Key\" },\n+                { name: \"Value\" },\n+                { name: \"ValueType\" }\n+              ] }\n+            ] }\n+          ] }\n+        ]\n+      end\n+    }\n+  },\n+\n+  methods: {\n+    digest: lambda do |var|\n+      post(\"/_api/contextinfo\")&.[](\"FormDigestValue\")\n+    end,\n+\n+    url: lambda do |input|\n+      if input[:siteurl].blank?\n+        \"/_api/web/\"\n+      else\n+        \"/\" + input[:siteurl] + \"/_api/web/\"\n+      end\n+    end\n+  },\n+\n+  actions: {\n+    add_row_in_sharepoint_list: {\n+      description: \"Add <span class='provider'>row</span> in \" \\\n+        \"<span class='provider'>Microsoft Sharepoint (Custom)</span> list\",\n+      help: \"Adds a row in the specified list.\",\n+\n+      config_fields: [\n+        {\n+          name: \"list_id\", control_type: :select,\n+          pick_list: :list, label: \"List\", optional: false\n+        }\n+      ],\n+\n+      input_fields: lambda do |object_definitions|\n+        object_definitions[\"list_create\"]\n+      end,\n+\n+      execute: lambda do |connection, input|\n+        list_id = input.delete(\"list_id\")\n+        post(call(\"url\", siteurl: connection[\"siteurl\"]) +\n+          \"lists(guid%27#{list_id}%27)/items\", input)\n+      end,\n+\n+      output_fields: lambda do |object_definitions|\n+        object_definitions[\"list_output\"]\n+      end,\n+\n+      sample_output: lambda do |connection, input|\n+        get(call(\"url\", siteurl: connection[\"siteurl\"]) + \"lists(guid%27\" \\\n+          \"#{input['list_id']}%27)/items?$top=1\")[\"value\"]&.first || {}\n+      end\n+    },\n+\n+    upload_attachment: {\n+      description: \"Upload <span class='provider'>attachment</span> in \" \\\n+        \"<span class='provider'>Microsoft Sharepoint (Custom)</span> list\",\n+      help: \"Uploads an attachment for a record in Microsoft Sharepoint list\",\n+\n+      config_fields: [\n+        {\n+          name: \"list_id\", control_type: :select,\n+          pick_list: :list, label: \"List\", optional: false\n+        }\n+      ],\n+\n+      input_fields: lambda do\n+        [\n+          { name: \"item_id\", optional: false, label: \"Record ID\" },\n+          { name: \"file_name\", optional: false, lable: \"File name\" },\n+          { name: \"content\", optional: false }\n+        ]\n+      end,\n+\n+      execute: lambda do |connection, input|\n+        file_name = input[\"file_name\"].gsub(/\\s/, \"%20\").to_param\n+        form_digest = post(\"https://#{connection['subdomain']}.sharepoint\" \\\n+          \".com/_api/contextinfo\")&.[](\"FormDigestValue\")\n+        post(call(\"url\", siteurl: connection[\"siteurl\"]) +\n+          \"lists(guid%27#{input['list_id']}%27)/items(#{input['item_id']})/\" +\n+          \"AttachmentFiles/add(FileName='\" + file_name + \"')\", input).\n+          headers(\"X-RequestDigest\": form_digest).\n+          request_body(input[\"content\"])\n+      end,\n+\n+      output_fields: lambda do\n+        [\n+          { name: \"FileName\", label: \"File name\" },\n+          { name: \"FileNameAsPath\", label: \"File name as path\",\n+            type: :object, properties: [\n+              { name: \"DecodedUrl\", label: \"Decoded url\" }\n+            ] },\n+          { name: \"ServerRelativePath\", label: \"Server relative path\",\n+            type: :object, properties: [\n+              { name: \"DecodedUrl\", label: \"Decoded url\" }\n+            ] },\n+          { name: \"ServerRelativeUrl\", label: \"Server relative url\" }\n+        ]\n+      end,\n+\n+      sample_output: lambda do |connection, input|\n+        get(call(\"url\", siteurl: connection[\"siteurl\"]) +\n+            \"lists(guid%27#{input['list_id']}%27)/items(#{input['item_id']})\" \\\n+            \"/AttachmentFiles('\" + input[\"file_name\"].gsub(/\\s/, \"%20\").\n+            to_param + \"')\") || {}\n+      end\n+    },\n+\n+    download_attachment: {\n+      description: \"Download <span class='provider'>attachment</span> from \" \\\n+        \"<span class='provider'>Microsoft Sharepoint (Custom)</span> list\",\n+      help: \"Downloads an attachment from a record in Microsoft \" \\\n+        \"Sharepoint list\",\n+\n+      config_fields: [\n+        {\n+          name: \"list_id\", control_type: :select,\n+          pick_list: :list, label: \"List\", optional: false\n+        }\n+      ],\n+\n+      input_fields: lambda do\n+        [\n+          { name: \"item_id\", optional: false, label: \"Record ID\" },\n+          { name: \"file_name\", optional: false, lable: \"File name\" }\n+        ]\n+      end,\n+\n+      execute: lambda do |connection, input|\n+        {\n+          \"content\": get(call(\"url\", siteurl: connection[\"siteurl\"]) +\n+            \"lists(guid%27#{input['list_id']}%27)/\" \\\n+            \"items(#{input['item_id']})/AttachmentFiles('\" +\n+            input[\"file_name\"].gsub(/\\s/, \"%20\").to_param + \"')/$value\").\n+            response_format_raw\n+        }\n+      end,\n+\n+      output_fields: lambda do\n+        [\n+          { name: \"content\" }\n+        ]\n+      end,\n+\n+      sample_output: lambda do\n+        { \"content\": \"test\" }\n+      end\n+    },\n+\n+    upload_file_in_library: {\n+      description: \"Upload <span class='provider'>file</span> into \" \\\n+        \"<span class='provider'>Microsoft Sharepoint (Custom)</span> library\",\n+      help: \"Uploads a file into Microsoft Sharepoint library\",\n+\n+      input_fields: lambda do\n+        [\n+          { name: \"serverRelativeUrl\", label: \"Parent folder\",\n+            control_type: \"tree\",\n+            hint: \"Select parent folder to create new file in\",\n+            tree_options: { selectable_folder: true },\n+            pick_list: :folders,\n+            optional: false,\n+            toggle_field: {\n+              name: \"serverRelativeUrl\",\n+              type: \"string\", control_type: \"text\",\n+              label: \"Server relative URL\",\n+              toggle_hint: \"Use folder relative path\",\n+              hint: \"Relative URL of the folder to upload file in\" },\n+            toggle_hint: \"Select folder\"},\n+          { name: \"file_name\", label: \"File name\", optional: false },\n+          { name: \"content\", optional: false }\n+        ]\n+      end,\n+\n+      execute: lambda do |connection, input|\n+        document = post(call(\"url\", siteurl: connection[\"siteurl\"]) +\n+          \"GetFolderByServerRelativeUrl('\" + input[\"serverRelativeUrl\"].\n+            gsub(/\\s/, \"%20\") + \"')/Files/Add(url='\" + input[\"file_name\"].\n+            gsub(/\\s/, \"%20\").to_param + \"',overwrite=true)\").\n+            headers(\"X-RequestDigest\": call(\"digest\",{}),\n+              \"Accept\": \"application/json;odata=verbose\",\n+              \"Content-Type\": \"application/json;odata=verbose\").\n+            request_body(input[\"content\"])[\"d\"]\n+      end,\n+\n+      output_fields: lambda do |object_definitions|\n+        object_definitions[\"document\"]\n+      end\n+    },\n+\n+    update_file_in_library: {\n+      description: \"Update <span class='provider'>file</span> in \" \\\n+        \"<span class='provider'>Microsoft Sharepoint (Custom)</span> library\",\n+      help: \"Updates a file in Microsoft Sharepoint library\",\n+\n+      input_fields: lambda do\n+        [\n+          { name: \"serverRelativeUrl\",\n+            label: \"Parent folder\",\n+            control_type: \"tree\",\n+            hint: \"Select parent folder to create new file in\",\n+            tree_options: { selectable_folder: true },\n+            pick_list: :folders,\n+            optional: false,\n+            toggle_field: {\n+              name: \"serverRelativeUrl\",\n+              type: \"string\", control_type: \"text\",\n+              label: \"Server relative URL\",\n+              toggle_hint: \"Use folder relative path\",\n+              hint: \"Relative URL of the folder to upload file in\" },\n+            toggle_hint: \"Select folder\"},\n+          { name: \"file_name\", label: \"File name\", optional: false },\n+          { name: \"content\", optional: false }\n+        ]\n+      end,\n+\n+      execute: lambda do |connection, input|\n+        document = post(call(\"url\", siteurl: connection[\"siteurl\"]) +\n+          \"GetFileByServerRelativeUrl('\" + input[\"serverRelativeUrl\"].\n+            gsub(/\\s/, \"%20\") + \"/\" + input[\"file_name\"].\n+            gsub(/\\s/, \"%20\").to_param + \"')/$value\").\n+            headers(\"X-RequestDigest\": call(\"digest\",{}),\n+              \"X-HTTP-Method\": \"PUT\",\n+              \"Accept\": \"application/json;odata=verbose\",\n+              \"Content-Type\": \"application/json;odata=verbose\").\n+            request_body(input[\"content\"])\n+      end,\n+\n+      output_fields: lambda do\n+        [\n+          { name: \"error\", type: \"object\", properties: [\n+            { name: \"code\" },\n+            { name: \"message\", type: \"object\", properties: [\n+              { name: \"lang\" },\n+              { name: \"value\" }\n+            ] }\n+          ] }\n+        ]\n+      end\n+    },\n+\n+    get_file_information: {\n+      description: \"Get <span class='provider'>file information</span> in \" \\\n+        \"<span class='provider'>Microsoft Sharepoint (Custom)</span> library\",\n+      help: \"Gets information about a file in Microsoft Sharepoint library\",\n+\n+      input_fields: lambda do\n+        [\n+          { name: \"serverRelativeUrl\",\n+            label: \"Parent folder\",\n+            control_type: \"tree\",\n+            hint: \"Select parent folder to get file from\",\n+            tree_options: { selectable_folder: true },\n+            pick_list: :folders,\n+            optional: false,\n+            toggle_field: {\n+              name: \"serverRelativeUrl\",\n+              type: \"string\", control_type: \"text\",\n+              label: \"Server relative URL\",\n+              toggle_hint: \"Use folder relative path\",\n+              hint: \"Relative URL of the folder to upload file in\" },\n+            toggle_hint: \"Select folder\" },\n+          { name: \"file_name\", optional: false }\n+        ]\n+      end,\n+\n+      execute: lambda do |connection, input|\n+        document = get(call(\"url\", siteurl: connection[\"siteurl\"]) +\n+          \"GetFolderByServerRelativeUrl('\" + input[\"serverRelativeUrl\"].\n+          gsub(/\\s/, \"%20\") + \"')/Files('\"+ input[\"file_name\"].\n+          gsub(/\\s/, \"%20\").to_param + \"')/ListItemAllFields\").\n+          headers(\"Content-Type\": \"application/json;odata=verbose\").\n+          map do |key, value|\n+            { \"#{key}\".gsub(\".\", \"_\") => \"#{value}\" }\n+          end.inject(:merge)\n+      end,\n+\n+      output_fields: lambda do |object_definitions|\n+        object_definitions[\"file_item_fields\"]\n+      end\n+    },\n+\n+    download_file_from_library: {\n+      description: \"Download <span class='provider'>file</span> from \" \\\n+        \"<span class='provider'>Microsoft Sharepoint (Custom)</span> library\",\n+      title_hint: \"Download file in Microsoft Sharepoint library\",\n+      help: \"Download file in Microsoft Sharepoint library\",\n+\n+      input_fields: lambda do\n+        [\n+          { name: \"serverRelativeUrl\", label: \"Parent folder\",\n+            control_type: \"tree\",\n+            hint: \"Select parent folder\",\n+            tree_options: { selectable_folder: true },\n+            pick_list: :folders,\n+            optional: false,\n+            toggle_field: { name: \"serverRelativeUrl\",\n+              type: \"string\", control_type: \"text\",\n+              label: \"Server relative URL\",\n+              toggle_hint: \"Use folder relative path\",\n+              hint: \"Relative URL of the folder\" },\n+            toggle_hint: \"Select folder\" },\n+          { name: \"file_name\", label: \"File name\", optional: false }\n+        ]\n+      end,\n+\n+      execute: lambda do |connection, input|\n+        {\n+          \"content\": get(call(\"url\", siteurl: connection[\"siteurl\"]) +\n+            \"GetFolderByServerRelativeUrl('\" + input[\"serverRelativeUrl\"].\n+            gsub(/\\s/, \"%20\") + \"')/\" + \"Files('\" + input[\"file_name\"].\n+            gsub(/\\s/, \"%20\").to_param + \"')/$value\").response_format_raw\n+        }\n+      end,\n+\n+      output_fields: lambda do |object_definitions|\n+        [\n+          { name: \"content\" }\n+        ]\n+      end,\n+\n+      sample_output: lambda do\n+        { \"content\": \"test\" }\n+      end\n+    },\n+\n+    update_list_item_metadata: {\n+      description: \"Update list <span class='provider'>item metadata</span> \" \\\n+        \"in <span class='provider'>Microsoft Sharepoint (Custom)</span> \" \\\n+        \"library\",\n+      help: \"Updates a list item's metadata in Microsoft Sharepoint library\",\n+\n+      config_fields: [\n+        {\n+          name: \"list_id\",\n+          control_type: :select,\n+          pick_list: :list,\n+          label: \"List\",\n+          optional: false\n+        },\n+        {\n+          name: \"item_id\", optional: false\n+        }\n+      ],\n+\n+      input_fields: lambda do |object_defintions|\n+        [\n+          {\n+            name: \"__metadata\",\n+            label: \"Item Type\",\n+            type: \"object\",\n+            optional: false,\n+            sticky: true,\n+            properties: [\n+              { name: \"type\", optional: false }\n+            ]\n+          },\n+          {\n+            name: \"Title\"\n+          }\n+        ]\n+      end,\n+\n+      execute: lambda do |connection, input|\n+        document = post(call(\"url\", siteurl: connection[\"siteurl\"]) +\n+            \"lists(guid%27\" + input.delete(\"list_id\").\n+            gsub(/\\s/, \"%20\") + \"%27)/\" + \"items(\" +\n+            input.delete(\"item_id\") + \")\" ).\n+          headers(\"X-RequestDigest\": call(\"digest\",{}),\n+            \"X-HTTP-Method\": \"MERGE\",\n+            \"IF-MATCH\": \"*\",\n+            \"Accept\": \"application/json;odata=verbose\",\n+            \"Content-Type\": \"application/json;odata=verbose\").\n+          payload(input)\n+      end,\n+\n+      output_fields: lambda do |object_definitions|\n+        [\n+          { name: \"error\", type: \"object\", properties: [\n+            { name: \"code\" },\n+            { name: \"message\", type: \"object\", properties: [\n+              { name: \"lang\" },\n+              { name: \"value\" }\n+            ] }\n+          ]}\n+        ]\n+      end\n+    },\n+\n+    get_users: {\n+      description: \"Gets <span class='provider'>users</span> in \" \\\n+        \"<span class='provider'>Microsoft Sharepoint (Custom)</span> library\",\n+      help: \"Gets information of users in Microsoft Sharepoint library\",\n+\n+      input_fields: lambda do\n+        [\n+          { name: \"usermail\",\n+            label: \"User email IDs\",\n+            type: :text,\n+            control_type: :text,\n+            optional: false,\n+            hint: \"Enter user's emails separated with commas\" }\n+        ]\n+      end,\n+\n+      execute: lambda do |connection, input|\n+        filter_string = \"\"\n+        emails = input[\"usermail\"].split(\",\")\n+        filter_mails = []\n+        emails.map do |email|\n+          filter_mails << (filter_string + \"Email eq '\" + email +\n+            \"'\") unless email.blank?\n+        end\n+        filter_string = filter_mails.smart_join(\" or \")\n+        {\n+          users: get(call(\"url\", siteurl: connection[\"siteurl\"]) +\n+            \"/siteusers?$filter=\" + filter_string ).\n+            headers(\"Content-Type\": \"application/json;odata=verbose\")[\"value\"]\n+        }\n+      end,\n+\n+      output_fields: lambda do\n+        [\n+          {\n+            name: \"users\", type: \"array\", of: \"object\",\n+            properties: [\n+              { name: \"Id\" },\n+              { name: \"Title\" },\n+              { name: \"Email\" },\n+              { name: \"UserId\", type: \"object\", properties: [\n+                { name: \"NameId\" },\n+                { name: \"NameIdIssuer\" }\n+              ]}\n+            ]\n+          }\n+        ]\n+      end\n+    },\n+\n+    get_folder_by_name: {\n+      description: \"Get <span class='provider'>folder</span> by name in \" \\\n+        \"<span class='provider'>Microsoft Sharepoint (Custom)</span> library\",\n+      help: \"Gets a folder's information in Microsoft Sharepoint library\",\n+\n+      input_fields: lambda do\n+        [\n+          { name: \"serverRelativeUrl\", label: \"Parent folder\",\n+            control_type: \"tree\",\n+            hint: \"Select parent folder to search in\",\n+            tree_options: { selectable_folder: true },\n+            pick_list: :folders,\n+            optional: false,\n+            toggle_field: { name: \"serverRelativeUrl\",\n+              type: \"string\", control_type: \"text\",\n+              label: \"Server relative URL\",\n+              toggle_hint: \"Use folder relative path\",\n+              hint: \"Relative URL of the folder to upload file in\" },\n+            toggle_hint: \"Select folder\" },\n+          { name: \"folder_name\",\n+            label: \"Folder name\",\n+            type: :text,\n+            control_type: :text,\n+            optional: false,\n+            hint: \"Search for folder with exact name. \" \\\n+              \"Note: folder name is case sensitive\" }\n+        ]\n+      end,\n+\n+      execute: lambda do |connection, input|\n+        filter_string = \"Name eq '\" + input[\"folder_name\"].\n+                          gsub(/\\s/, \"%20\") + \"'\"\n+        folders = get(call(\"url\", siteurl: connection[\"siteurl\"]) +\n+          \"GetFolderByServerRelativeUrl('\" + input[\"serverRelativeUrl\"].\n+          gsub(/\\s/, \"%20\") + \"')/\" + \"Folders?$expand=Folders,\" \\\n+          \"Folders/Folders,Folders/Folders/Folders&$filter=\" + filter_string).\n+          headers(\"Content-Type\": \"application/json;odata=verbose\")[\"value\"]\n+        {\n+          folders: folders\n+        }\n+      end,\n+\n+      output_fields: lambda do\n+        [\n+          { name: \"folders\", type: \"array\", of: \"object\", properties: [\n+              { name: \"ItemCount\", type: \"integer\" },\n+              { name: \"Name\" },\n+              { name: \"Title\" },\n+              { name: \"ServerRelativeUrl\" },\n+              { name: \"TimeCreated\", type: \"date_time\"},\n+              { name: \"TimeLastModified\", type: \"date_time\"},\n+              { name: \"UniqueId\" },\n+              { name: \"ProgID\" },\n+              { name: \"Exists\", type: \"boolean\" },\n+              { name: \"ETag\" }\n+          ]}\n+        ]\n+      end\n+    },\n+\n+    create_folder: {\n+      description: \"Create a <span class='provider'>folder</span> in \" \\\n+        \"<span class='provider'>Microsoft Sharepoint (Custom)</span> library\",\n+      help: \"Creates a folder in Microsoft Sharepoint library.\",\n+\n+      input_fields: lambda do\n+        [\n+          { name: \"serverRelativeUrl\", label: \"Parent folder\",\n+            control_type: \"tree\",\n+            hint: \"Select parent folder to create folder\",\n+            tree_options: { selectable_folder: true },\n+            pick_list: :folders,\n+            optional: false,\n+            toggle_field: { name: \"serverRelativeUrl\",\n+              type: \"string\", control_type: \"text\",\n+              label: \"Server relative URL\",\n+              toggle_hint: \"Use folder relative path\",\n+              hint: \"Relative URL of the folder to create folder\" },\n+            toggle_hint: \"Select folder\" },\n+          { name: \"folder_name\",\n+            label: \"Folder name\",\n+            type: :text,\n+            control_type: :text,\n+            optional: false,\n+            hint: \"Name of folder\" }\n+        ]\n+      end,\n+\n+      execute: lambda do |connection, input|\n+        filter_string = \"Name eq '\" + input[\"folder_name\"].\n+                          gsub(/\\s/, \"%20\") + \"'\"\n+        folders = post(call(\"url\", siteurl: connection[\"siteurl\"]) +\n+            \"GetFolderByServerRelativeUrl('\" + input[\"serverRelativeUrl\"].\n+            gsub(/\\s/, \"%20\") + \"')/\" + \"Folders\").\n+            payload(\"__metadata\": { \"type\": \"SP.Folder\" },\n+            ServerRelativeUrl: input[\"folder_name\"].gsub(/\\s/, \"%20\")).\n+            headers(\"Accept\": \"application/json;odata=verbose\",\n+            \"Content-Type\": \"application/json;odata=verbose\")[\"d\"]\n+      end,\n+\n+      output_fields: lambda do\n+        [\n+          { name: \"ItemCount\", type: \"integer\" },\n+          { name: \"Name\" },\n+          { name: \"Title\" },\n+          { name: \"ServerRelativeUrl\" },\n+          { name: \"TimeCreated\", type: \"date_time\"},\n+          { name: \"TimeLastModified\", type: \"date_time\"},\n+          { name: \"UniqueId\" },\n+          { name: \"ProgID\" },\n+          { name: \"Exists\", type: \"boolean\" },\n+          { name: \"ETag\" }\n+        ]\n+      end\n+    },\n+\n+    search_query_simple: {\n+      description: \"Search with <span class='provider'>query text</span>\" \\\n+        \" across site <span class='provider'>in Microsoft \" \\\n+        \"Sharepoint (Custom)</span>\",\n+      help: \"Search with query text across site in Microsoft Sharepoint\",\n+\n+      input_fields: lambda do\n+        [\n+          { name: \"querytext\", optional: false,\n+            label: \"Query text\",\n+            hint: \"Text to search for in Sharepoint site\" },\n+          { name: \"querytemplate\", sticky: true,\n+            hint: \"A string that contains the text that replaces the query \" \\\n+              \"text, as part of a query transform.\" },\n+          { name: \"enableinterleaving\", type: \"boolean\",\n+            control_type: \"checkbox\", sticky: true,\n+            hint: \"Set to Yes to mix the ResultTables. Default: Yes\" },\n+          { name: \"SourceId\", sticky: true },\n+          { name: \"selectproperties\", sticky: true,\n+            hint: \"Properties to return in the search results e.g. Title\" }\n+        ]\n+      end,\n+\n+      execute: lambda do |connection, input|\n+        result = get(call(\"url\", siteurl: connection[\"siteurl\"]).\n+                 gsub(\"/web\", \"\") + \"/search/query\").\n+          params(querytext: \"'\" + input[\"querytext\"] + \"'\",\n+            querytemplate: input[\"querytemplate\"].present? ? \"'\" +\n+              input[\"querytemplate\"] + \"'\" : nil,\n+            enableinterleaving: input[\"enableinterleaving\"].present? ?\n+              input[\"enableinterleaving\"] : true,\n+            SourceId: input[\"SourceId\"].present? ?\n+              \"'\" + input[\"SourceId\"] + \"'\" : nil,\n+            selectproperties: input[\"selectproperties\"].present? ?\n+              \"'\" + input[\"selectproperties\"] + \"'\" : nil ).\n+          headers(\"Content-Type\": \"application/json;odata=verbose\").\n+          dig(\"PrimaryQueryResult\", \"RelevantResults\", \"Table\", \"Rows\")","path":"oauth2/microsoft_sharepoint_connector.rb","position":1057,"original_position":1057,"commit_id":"2e0bc9fb2e367b3fbcb3c4e535af40c11b1abdb0","original_commit_id":"2e0bc9fb2e367b3fbcb3c4e535af40c11b1abdb0","user":{"login":"houndci-bot","id":6697940,"node_id":"MDQ6VXNlcjY2OTc5NDA=","avatar_url":"https://avatars0.githubusercontent.com/u/6697940?v=4","gravatar_id":"","url":"https://api.github.com/users/houndci-bot","html_url":"https://github.com/houndci-bot","followers_url":"https://api.github.com/users/houndci-bot/followers","following_url":"https://api.github.com/users/houndci-bot/following{/other_user}","gists_url":"https://api.github.com/users/houndci-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/houndci-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/houndci-bot/subscriptions","organizations_url":"https://api.github.com/users/houndci-bot/orgs","repos_url":"https://api.github.com/users/houndci-bot/repos","events_url":"https://api.github.com/users/houndci-bot/events{/privacy}","received_events_url":"https://api.github.com/users/houndci-bot/received_events","type":"User","site_admin":false},"body":"Layout/MultilineMethodCallIndentation: Align dig with get(call(\"url\", siteurl: connection[\"siteurl\"]). on line 1045.","created_at":"2018-07-26T14:57:33Z","updated_at":"2018-07-26T14:57:36Z","html_url":"https://github.com/workato/connector_sdk/pull/89#discussion_r205489971","pull_request_url":"https://api.github.com/repos/workato/connector_sdk/pulls/89","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/workato/connector_sdk/pulls/comments/205489971"},"html":{"href":"https://github.com/workato/connector_sdk/pull/89#discussion_r205489971"},"pull_request":{"href":"https://api.github.com/repos/workato/connector_sdk/pulls/89"}}},"pull_request":{"url":"https://api.github.com/repos/workato/connector_sdk/pulls/89","id":141538917,"node_id":"MDExOlB1bGxSZXF1ZXN0MTQxNTM4OTE3","html_url":"https://github.com/workato/connector_sdk/pull/89","diff_url":"https://github.com/workato/connector_sdk/pull/89.diff","patch_url":"https://github.com/workato/connector_sdk/pull/89.patch","issue_url":"https://api.github.com/repos/workato/connector_sdk/issues/89","number":89,"state":"open","locked":false,"title":"Microsoft sharepoint adapter","user":{"login":"svchandra","id":22195459,"node_id":"MDQ6VXNlcjIyMTk1NDU5","avatar_url":"https://avatars2.githubusercontent.com/u/22195459?v=4","gravatar_id":"","url":"https://api.github.com/users/svchandra","html_url":"https://github.com/svchandra","followers_url":"https://api.github.com/users/svchandra/followers","following_url":"https://api.github.com/users/svchandra/following{/other_user}","gists_url":"https://api.github.com/users/svchandra/gists{/gist_id}","starred_url":"https://api.github.com/users/svchandra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/svchandra/subscriptions","organizations_url":"https://api.github.com/users/svchandra/orgs","repos_url":"https://api.github.com/users/svchandra/repos","events_url":"https://api.github.com/users/svchandra/events{/privacy}","received_events_url":"https://api.github.com/users/svchandra/received_events","type":"User","site_admin":false},"body":"SharePoint Adapter for Review.","created_at":"2017-09-18T07:43:05Z","updated_at":"2018-07-26T14:57:36Z","closed_at":null,"merged_at":null,"merge_commit_sha":"38452f136e892e6a6500ffc6c43739395b02600f","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":699880815,"node_id":"MDU6TGFiZWw2OTk4ODA4MTU=","url":"https://api.github.com/repos/workato/connector_sdk/labels/S3-code%20review","name":"S3-code review","color":"e99695","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/workato/connector_sdk/pulls/89/commits","review_comments_url":"https://api.github.com/repos/workato/connector_sdk/pulls/89/comments","review_comment_url":"https://api.github.com/repos/workato/connector_sdk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/workato/connector_sdk/issues/89/comments","statuses_url":"https://api.github.com/repos/workato/connector_sdk/statuses/2e0bc9fb2e367b3fbcb3c4e535af40c11b1abdb0","head":{"label":"workato:svchandra-patch-1","ref":"svchandra-patch-1","sha":"2e0bc9fb2e367b3fbcb3c4e535af40c11b1abdb0","user":{"login":"workato","id":5629924,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU2Mjk5MjQ=","avatar_url":"https://avatars3.githubusercontent.com/u/5629924?v=4","gravatar_id":"","url":"https://api.github.com/users/workato","html_url":"https://github.com/workato","followers_url":"https://api.github.com/users/workato/followers","following_url":"https://api.github.com/users/workato/following{/other_user}","gists_url":"https://api.github.com/users/workato/gists{/gist_id}","starred_url":"https://api.github.com/users/workato/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/workato/subscriptions","organizations_url":"https://api.github.com/users/workato/orgs","repos_url":"https://api.github.com/users/workato/repos","events_url":"https://api.github.com/users/workato/events{/privacy}","received_events_url":"https://api.github.com/users/workato/received_events","type":"Organization","site_admin":false},"repo":{"id":54221993,"node_id":"MDEwOlJlcG9zaXRvcnk1NDIyMTk5Mw==","name":"connector_sdk","full_name":"workato/connector_sdk","owner":{"login":"workato","id":5629924,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU2Mjk5MjQ=","avatar_url":"https://avatars3.githubusercontent.com/u/5629924?v=4","gravatar_id":"","url":"https://api.github.com/users/workato","html_url":"https://github.com/workato","followers_url":"https://api.github.com/users/workato/followers","following_url":"https://api.github.com/users/workato/following{/other_user}","gists_url":"https://api.github.com/users/workato/gists{/gist_id}","starred_url":"https://api.github.com/users/workato/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/workato/subscriptions","organizations_url":"https://api.github.com/users/workato/orgs","repos_url":"https://api.github.com/users/workato/repos","events_url":"https://api.github.com/users/workato/events{/privacy}","received_events_url":"https://api.github.com/users/workato/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/workato/connector_sdk","description":"Connector SDK samples and documentation","fork":false,"url":"https://api.github.com/repos/workato/connector_sdk","forks_url":"https://api.github.com/repos/workato/connector_sdk/forks","keys_url":"https://api.github.com/repos/workato/connector_sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/workato/connector_sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/workato/connector_sdk/teams","hooks_url":"https://api.github.com/repos/workato/connector_sdk/hooks","issue_events_url":"https://api.github.com/repos/workato/connector_sdk/issues/events{/number}","events_url":"https://api.github.com/repos/workato/connector_sdk/events","assignees_url":"https://api.github.com/repos/workato/connector_sdk/assignees{/user}","branches_url":"https://api.github.com/repos/workato/connector_sdk/branches{/branch}","tags_url":"https://api.github.com/repos/workato/connector_sdk/tags","blobs_url":"https://api.github.com/repos/workato/connector_sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/workato/connector_sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/workato/connector_sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/workato/connector_sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/workato/connector_sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/workato/connector_sdk/languages","stargazers_url":"https://api.github.com/repos/workato/connector_sdk/stargazers","contributors_url":"https://api.github.com/repos/workato/connector_sdk/contributors","subscribers_url":"https://api.github.com/repos/workato/connector_sdk/subscribers","subscription_url":"https://api.github.com/repos/workato/connector_sdk/subscription","commits_url":"https://api.github.com/repos/workato/connector_sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/workato/connector_sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/workato/connector_sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/workato/connector_sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/workato/connector_sdk/contents/{+path}","compare_url":"https://api.github.com/repos/workato/connector_sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/workato/connector_sdk/merges","archive_url":"https://api.github.com/repos/workato/connector_sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/workato/connector_sdk/downloads","issues_url":"https://api.github.com/repos/workato/connector_sdk/issues{/number}","pulls_url":"https://api.github.com/repos/workato/connector_sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/workato/connector_sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/workato/connector_sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/workato/connector_sdk/labels{/name}","releases_url":"https://api.github.com/repos/workato/connector_sdk/releases{/id}","deployments_url":"https://api.github.com/repos/workato/connector_sdk/deployments","created_at":"2016-03-18T18:08:56Z","updated_at":"2018-07-26T08:26:51Z","pushed_at":"2018-07-26T14:57:19Z","git_url":"git://github.com/workato/connector_sdk.git","ssh_url":"git@github.com:workato/connector_sdk.git","clone_url":"https://github.com/workato/connector_sdk.git","svn_url":"https://github.com/workato/connector_sdk","homepage":"","size":2250,"stargazers_count":14,"watchers_count":14,"language":"Ruby","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":39,"mirror_url":null,"archived":false,"open_issues_count":52,"license":null,"forks":39,"open_issues":52,"watchers":14,"default_branch":"master"}},"base":{"label":"workato:master","ref":"master","sha":"29a5a847980ce357609e131b3581aeae3bcdf5ad","user":{"login":"workato","id":5629924,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU2Mjk5MjQ=","avatar_url":"https://avatars3.githubusercontent.com/u/5629924?v=4","gravatar_id":"","url":"https://api.github.com/users/workato","html_url":"https://github.com/workato","followers_url":"https://api.github.com/users/workato/followers","following_url":"https://api.github.com/users/workato/following{/other_user}","gists_url":"https://api.github.com/users/workato/gists{/gist_id}","starred_url":"https://api.github.com/users/workato/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/workato/subscriptions","organizations_url":"https://api.github.com/users/workato/orgs","repos_url":"https://api.github.com/users/workato/repos","events_url":"https://api.github.com/users/workato/events{/privacy}","received_events_url":"https://api.github.com/users/workato/received_events","type":"Organization","site_admin":false},"repo":{"id":54221993,"node_id":"MDEwOlJlcG9zaXRvcnk1NDIyMTk5Mw==","name":"connector_sdk","full_name":"workato/connector_sdk","owner":{"login":"workato","id":5629924,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU2Mjk5MjQ=","avatar_url":"https://avatars3.githubusercontent.com/u/5629924?v=4","gravatar_id":"","url":"https://api.github.com/users/workato","html_url":"https://github.com/workato","followers_url":"https://api.github.com/users/workato/followers","following_url":"https://api.github.com/users/workato/following{/other_user}","gists_url":"https://api.github.com/users/workato/gists{/gist_id}","starred_url":"https://api.github.com/users/workato/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/workato/subscriptions","organizations_url":"https://api.github.com/users/workato/orgs","repos_url":"https://api.github.com/users/workato/repos","events_url":"https://api.github.com/users/workato/events{/privacy}","received_events_url":"https://api.github.com/users/workato/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/workato/connector_sdk","description":"Connector SDK samples and documentation","fork":false,"url":"https://api.github.com/repos/workato/connector_sdk","forks_url":"https://api.github.com/repos/workato/connector_sdk/forks","keys_url":"https://api.github.com/repos/workato/connector_sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/workato/connector_sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/workato/connector_sdk/teams","hooks_url":"https://api.github.com/repos/workato/connector_sdk/hooks","issue_events_url":"https://api.github.com/repos/workato/connector_sdk/issues/events{/number}","events_url":"https://api.github.com/repos/workato/connector_sdk/events","assignees_url":"https://api.github.com/repos/workato/connector_sdk/assignees{/user}","branches_url":"https://api.github.com/repos/workato/connector_sdk/branches{/branch}","tags_url":"https://api.github.com/repos/workato/connector_sdk/tags","blobs_url":"https://api.github.com/repos/workato/connector_sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/workato/connector_sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/workato/connector_sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/workato/connector_sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/workato/connector_sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/workato/connector_sdk/languages","stargazers_url":"https://api.github.com/repos/workato/connector_sdk/stargazers","contributors_url":"https://api.github.com/repos/workato/connector_sdk/contributors","subscribers_url":"https://api.github.com/repos/workato/connector_sdk/subscribers","subscription_url":"https://api.github.com/repos/workato/connector_sdk/subscription","commits_url":"https://api.github.com/repos/workato/connector_sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/workato/connector_sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/workato/connector_sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/workato/connector_sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/workato/connector_sdk/contents/{+path}","compare_url":"https://api.github.com/repos/workato/connector_sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/workato/connector_sdk/merges","archive_url":"https://api.github.com/repos/workato/connector_sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/workato/connector_sdk/downloads","issues_url":"https://api.github.com/repos/workato/connector_sdk/issues{/number}","pulls_url":"https://api.github.com/repos/workato/connector_sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/workato/connector_sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/workato/connector_sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/workato/connector_sdk/labels{/name}","releases_url":"https://api.github.com/repos/workato/connector_sdk/releases{/id}","deployments_url":"https://api.github.com/repos/workato/connector_sdk/deployments","created_at":"2016-03-18T18:08:56Z","updated_at":"2018-07-26T08:26:51Z","pushed_at":"2018-07-26T14:57:19Z","git_url":"git://github.com/workato/connector_sdk.git","ssh_url":"git@github.com:workato/connector_sdk.git","clone_url":"https://github.com/workato/connector_sdk.git","svn_url":"https://github.com/workato/connector_sdk","homepage":"","size":2250,"stargazers_count":14,"watchers_count":14,"language":"Ruby","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":39,"mirror_url":null,"archived":false,"open_issues_count":52,"license":null,"forks":39,"open_issues":52,"watchers":14,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/workato/connector_sdk/pulls/89"},"html":{"href":"https://github.com/workato/connector_sdk/pull/89"},"issue":{"href":"https://api.github.com/repos/workato/connector_sdk/issues/89"},"comments":{"href":"https://api.github.com/repos/workato/connector_sdk/issues/89/comments"},"review_comments":{"href":"https://api.github.com/repos/workato/connector_sdk/pulls/89/comments"},"review_comment":{"href":"https://api.github.com/repos/workato/connector_sdk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/workato/connector_sdk/pulls/89/commits"},"statuses":{"href":"https://api.github.com/repos/workato/connector_sdk/statuses/2e0bc9fb2e367b3fbcb3c4e535af40c11b1abdb0"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"houndci-bot"}}