{"action":"created","comment":{"url":"https://api.github.com/repos/skydive-project/skydive.network/pulls/comments/307278703","pull_request_review_id":266602874,"id":307278703,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMwNzI3ODcwMw==","diff_hunk":"@@ -0,0 +1,290 @@\n+---\n+title: How to use Security Advisor with Skydive\n+layout: blog-post\n+author: Kalman Meth\n+date: 31/07/2019\n+---\n+\n+\n+The Security Advisor filters the flow data obtained from Skydive, performs a data transformation, and saves the information to an object store in compressed JSON format.\n+This data may then be used to perform various kinds of analyses for security, accounting, or other purposes.\n+\n+Instructions to developers to deploy and run the Secruity Advisor can be found at https://github.com/skydive-project/skydive/tree/master/contrib/pipelines/secadvisor.\n+We present here extended instructions for users to deploy Skydive and the Security Advisor.\n+\n+We use the term \"pipeline\" to describe the sequence of operations performed on the data: classify, filter, encode, store.\n+In the future, we plan to have additional pipelines performing different kinds of operations.\n+\n+## Deploy Skydive\n+\n+You can either download a statically linked version of Skydive or you can build it on your own.\n+\n+To download a pre-compiled statically linked version of Skydive, run the following command.\n+\n+```\n+curl -Lo skydive https://github.com/skydive-project/skydive-binaries/raw/jenkins-builds/skydive-latest && chmod +x skydive && sudo mv skydive /usr/local/skydive/\n+```\n+\n+To build your own version of Skydive, follow the instructions on http://skydive.network/documentation/build to install prerequisites and prepare your machine to build the Skydive code.\n+Enter the Skydive root directory and build the code.\n+\n+```\n+cd $GOPATH/src/github.com/skydive-project/skydive\n+make\n+cp etc/skydive.yml.default /etc/skydive/skydive.yml\n+// adjust settings in skydive.yml, if desired\n+```\n+\n+The skydive binary is created in $GOPATH/bin/skydive.\n+\n+### All-in-one version\n+\n+```\n+sudo skydive allineone -c /etc/skydive/skydive.yml\n+```\n+\n+### Multi-node Deployment\n+\n+Alternatively, run a Skydive analyzer on one host and a Skydive agent on each of your hosts.\n+\n+On one machine:\n+\n+```\n+sudo skydive analyzer -c /etc/skydive/skydive.yml\n+```\n+On each machine:\n+\n+```\n+sudo skydive agent -c /etc/skydive/skydive.yml\n+```\n+\n+Be sure to set the field \"analyzers\" in the skydive.yml to point to the analyzer.\n+\n+\n+## Create Security Advisor (Pipeline) Configuration File\n+\n+Start from the secadvisor.yml.default in the secadvisor directory.\n+\n+\n+```\n+cp secadvisor.yml.default /etc/skydive/secadvisor.yml\n+```\n+\n+The secadvisor.yml is used as a parameter when running secadvisor from the command line.\n+\n+The default secadvisor.yml has the following fields:\n+\n+```\n+host_id: \"\"\n+analyzers:\n+  127.0.0.1:8082\n+pipeline:\n+  analyzer:\n+    subscriber_url: ws://127.0.0.1:8082/ws/subscriber/flow\n+    subscriber_username:\n+    subscriber_password:\n+  classify:\n+    # cluster_net_masks:\n+      # - 10.0.0.0/8\n+      # - 172.16.0.0/12\n+      # - 192.168.0.0/16\n+  filter:\n+    # excluded_tags:\n+      # - internal\n+      # - other\n+      # - ingress\n+      # - egress\n+  transform:\n+    sa:\n+      # exclude_started_flows: true\n+  store:\n+    type: s3\n+    s3:\n+      # -- client parames --\n+      endpoint: http://127.0.0.1:9000\n+      region: local\n+      bucket: bucket\n+      access_key: user\n+      secret_key: password\n+      # api_key: key\n+      # iam_endpoint: https://iam.cloud.ibm.com/identity/token\n+      object_prefix: logs\n+      # -- bulk store params --\n+      max_flows_per_object: 6000\n+      max_seconds_per_object: 60\n+      max_seconds_per_stream: 86400\n+      max_flow_array_size: 100000\n+```\n+\n+### Description of fields in secadvisor.yml file\n+\n+Entries that begin with '#' are comments and are ignored. Be sure to include/exclude the appropriate configuration parameters.\n+\n+Each instance of secadvisor should use a distinct host_id or should use \"\" (the empty host id).\n+If a host_id (other than \"\") is in use by one instance of the Security Advisor (pipeline), that host_id may not be used by another instance of the Security Advisor (pipeline).\n+\n+Set \"endpoint\" to the object store endpoint URL, e.g. https://s3.us.cloud-object-storage.appdomain.cloud.\n+Set the credentials used for authenticating to the object store service.\n+You can either use AWS-style HMAC keys by setting \"access_key\" and \"secret_key\", or use IBM IAM OAuth by setting \"api_key\".\n+When using IBM IAM Oauth (when setting \"api_key\"), the default IBM IAM authentication endpoint will be used: https://iam.ng.bluemix.net/oidc/token, if none is specified.\n+You can customize this endpoint by setting a different \"iam_endpoint\" to an alternative URL string.\n+\n+Set \"bucket\" to the name of the destination bucket where flows will be dumped.\n+If your object store service requires a region specification, set \"region\" appropriately. This setting is not necessary when using IBM COS.\n+\n+The subnets specified in cluster_net_masks are used to determine whether a flow is internal, ingress, or egress.\n+Enter in the list all of the subnets that you consider to be inside your domain of security.\n+\n+The types of \"excluded_tags\" that are recognized are: internal, ingress, egress, other.\n+The \"internal\" flag refers to flows that begin and end inside your domain (as defined by \"cluster_net_masks\").\n+The \"ingress\" flag refers to flows whose source is ouside your domain and whose target is inside your domain.\n+The \"egress\" flag refers to flows whose source is inside your domain and whose target is outside your domain.\n+The \"other\" flag refers to flows whose source and target are both outside your domain.\n+For example, if you want to capture only those flows that go between your domain and outside your domain (ingress and egress), then specify \"excluded_tags\" to include \"internal\" and \"other\".\n+\n+Be sure to set the parameters max_flow_array_size, etc, to reasonable values.\n+\n+The max_flow_array_size specifies the maximum number of flows that will be stored in each iteration.\n+If max_flow_array_size is set to 0 (or not set at all), then the number of flows that can be stored is 0, and hence no useful information will be saved in the object store.\n+This will result in an error.\n+\n+The max_flows_per_object parameter specifies the number of flows that may stored in a single object. If there are more flows found in a single iteration, then several objects will be created, each with up to max_flows_per_object flows in them. In order to have all the flows stored in a single object, be sure that this parameter is set sufficiently large.\n+If max_flows_per_object is set to 0 (or not set at all), then each object will be able to hold 0 flows; i.e. no flows will be able to be stored in any object.\n+This will result in an error.\n+\n+The flow information is collected in groups of objects (called streams) determined by the max_seconds_per_stream parameter.\n+All the objects generated within the number of seconds specified in the max_seconds_per_stream parameter are collected under the same heading (stream) in the object url path.\n+If max_seconds_per_stream is set to a very large number, then all of the flows captured in the current run of the Security Advisor will be included in the same collection (stream)\n+Furthermore, a single object may contain multiple statistics of the flows - all those collected within max_seconds_per_object seconds. Thus if max_seconds_per_object is set to 200 and the flows statistics  are captured once a minute, then each object will contain 3 or 4 sets of statistics - whatever was collected within 200 seconds. \n+\n+## Setup Object Store\n+\n+The Security Advisor saves data to an S3-type object store.\n+The parameters to access the object store must be provided in the secadvisor.yml configuration file.\n+In case the user does not already have an object store, we show below how to create an object store for testing purposes.\n+\n+You can either use AWS-style HMAC keys by setting \"access_key\" and \"secret_key\", or use IBM IAM OAuth by setting \"api_key\".\n+\n+### Setup IBM COS\n+\n+In IBM Cloud, Create an Object Store resource. The Lite plan gives limited resources for free.\n+In the Object Store, create a bucket to hold the Skydive flow information. For simple testing, you can choose Single Site resiliency.\n+Look under Bucket Configuration to see the Public endpoint (url) where the bucket is accessed. This endpoint information needs to go into the secadvisor.yml \"endpoint\" field.\n+Go to the \"Service Credentials\" panel and create a new credential. Click on \"View Credential\" to get the details of the credential. The apikey needs to go into the secadvisor.yml \"api_key\" field.\n+In the secadvisor.yml file, uncomment the iam_endpoint field and set it to https://iam.cloud.ibm.com/identity/token.\n+\n+### Setup Minio","path":"blog/secadvisor.md","position":176,"original_position":176,"commit_id":"cb8fd7abb7cf301165ba5f09860e7801f22be1d0","original_commit_id":"cb8fd7abb7cf301165ba5f09860e7801f22be1d0","user":{"login":"hunchback","id":2760739,"node_id":"MDQ6VXNlcjI3NjA3Mzk=","avatar_url":"https://avatars0.githubusercontent.com/u/2760739?v=4","gravatar_id":"","url":"https://api.github.com/users/hunchback","html_url":"https://github.com/hunchback","followers_url":"https://api.github.com/users/hunchback/followers","following_url":"https://api.github.com/users/hunchback/following{/other_user}","gists_url":"https://api.github.com/users/hunchback/gists{/gist_id}","starred_url":"https://api.github.com/users/hunchback/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hunchback/subscriptions","organizations_url":"https://api.github.com/users/hunchback/orgs","repos_url":"https://api.github.com/users/hunchback/repos","events_url":"https://api.github.com/users/hunchback/events{/privacy}","received_events_url":"https://api.github.com/users/hunchback/received_events","type":"User","site_admin":false},"body":"the content here is incorrect - please see the content of my README","created_at":"2019-07-25T12:51:37Z","updated_at":"2019-07-25T12:51:37Z","html_url":"https://github.com/skydive-project/skydive.network/pull/62#discussion_r307278703","pull_request_url":"https://api.github.com/repos/skydive-project/skydive.network/pulls/62","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/skydive-project/skydive.network/pulls/comments/307278703"},"html":{"href":"https://github.com/skydive-project/skydive.network/pull/62#discussion_r307278703"},"pull_request":{"href":"https://api.github.com/repos/skydive-project/skydive.network/pulls/62"}}},"pull_request":{"url":"https://api.github.com/repos/skydive-project/skydive.network/pulls/62","id":301091495,"node_id":"MDExOlB1bGxSZXF1ZXN0MzAxMDkxNDk1","html_url":"https://github.com/skydive-project/skydive.network/pull/62","diff_url":"https://github.com/skydive-project/skydive.network/pull/62.diff","patch_url":"https://github.com/skydive-project/skydive.network/pull/62.patch","issue_url":"https://api.github.com/repos/skydive-project/skydive.network/issues/62","number":62,"state":"open","locked":false,"title":"Secadvisor documentation","user":{"login":"KalmanMeth","id":6197758,"node_id":"MDQ6VXNlcjYxOTc3NTg=","avatar_url":"https://avatars0.githubusercontent.com/u/6197758?v=4","gravatar_id":"","url":"https://api.github.com/users/KalmanMeth","html_url":"https://github.com/KalmanMeth","followers_url":"https://api.github.com/users/KalmanMeth/followers","following_url":"https://api.github.com/users/KalmanMeth/following{/other_user}","gists_url":"https://api.github.com/users/KalmanMeth/gists{/gist_id}","starred_url":"https://api.github.com/users/KalmanMeth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KalmanMeth/subscriptions","organizations_url":"https://api.github.com/users/KalmanMeth/orgs","repos_url":"https://api.github.com/users/KalmanMeth/repos","events_url":"https://api.github.com/users/KalmanMeth/events{/privacy}","received_events_url":"https://api.github.com/users/KalmanMeth/received_events","type":"User","site_admin":false},"body":"We provide expanded instructions for a user to use the Security Advisor add-on to Skydive.","created_at":"2019-07-25T11:00:42Z","updated_at":"2019-07-25T12:51:37Z","closed_at":null,"merged_at":null,"merge_commit_sha":"660732869b1f4df5f0e977962db65dfb8bfcb3b7","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/skydive-project/skydive.network/pulls/62/commits","review_comments_url":"https://api.github.com/repos/skydive-project/skydive.network/pulls/62/comments","review_comment_url":"https://api.github.com/repos/skydive-project/skydive.network/pulls/comments{/number}","comments_url":"https://api.github.com/repos/skydive-project/skydive.network/issues/62/comments","statuses_url":"https://api.github.com/repos/skydive-project/skydive.network/statuses/cb8fd7abb7cf301165ba5f09860e7801f22be1d0","head":{"label":"KalmanMeth:secadvisor-documentation","ref":"secadvisor-documentation","sha":"cb8fd7abb7cf301165ba5f09860e7801f22be1d0","user":{"login":"KalmanMeth","id":6197758,"node_id":"MDQ6VXNlcjYxOTc3NTg=","avatar_url":"https://avatars0.githubusercontent.com/u/6197758?v=4","gravatar_id":"","url":"https://api.github.com/users/KalmanMeth","html_url":"https://github.com/KalmanMeth","followers_url":"https://api.github.com/users/KalmanMeth/followers","following_url":"https://api.github.com/users/KalmanMeth/following{/other_user}","gists_url":"https://api.github.com/users/KalmanMeth/gists{/gist_id}","starred_url":"https://api.github.com/users/KalmanMeth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KalmanMeth/subscriptions","organizations_url":"https://api.github.com/users/KalmanMeth/orgs","repos_url":"https://api.github.com/users/KalmanMeth/repos","events_url":"https://api.github.com/users/KalmanMeth/events{/privacy}","received_events_url":"https://api.github.com/users/KalmanMeth/received_events","type":"User","site_admin":false},"repo":{"id":164433630,"node_id":"MDEwOlJlcG9zaXRvcnkxNjQ0MzM2MzA=","name":"skydive.network","full_name":"KalmanMeth/skydive.network","private":false,"owner":{"login":"KalmanMeth","id":6197758,"node_id":"MDQ6VXNlcjYxOTc3NTg=","avatar_url":"https://avatars0.githubusercontent.com/u/6197758?v=4","gravatar_id":"","url":"https://api.github.com/users/KalmanMeth","html_url":"https://github.com/KalmanMeth","followers_url":"https://api.github.com/users/KalmanMeth/followers","following_url":"https://api.github.com/users/KalmanMeth/following{/other_user}","gists_url":"https://api.github.com/users/KalmanMeth/gists{/gist_id}","starred_url":"https://api.github.com/users/KalmanMeth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KalmanMeth/subscriptions","organizations_url":"https://api.github.com/users/KalmanMeth/orgs","repos_url":"https://api.github.com/users/KalmanMeth/repos","events_url":"https://api.github.com/users/KalmanMeth/events{/privacy}","received_events_url":"https://api.github.com/users/KalmanMeth/received_events","type":"User","site_admin":false},"html_url":"https://github.com/KalmanMeth/skydive.network","description":null,"fork":true,"url":"https://api.github.com/repos/KalmanMeth/skydive.network","forks_url":"https://api.github.com/repos/KalmanMeth/skydive.network/forks","keys_url":"https://api.github.com/repos/KalmanMeth/skydive.network/keys{/key_id}","collaborators_url":"https://api.github.com/repos/KalmanMeth/skydive.network/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/KalmanMeth/skydive.network/teams","hooks_url":"https://api.github.com/repos/KalmanMeth/skydive.network/hooks","issue_events_url":"https://api.github.com/repos/KalmanMeth/skydive.network/issues/events{/number}","events_url":"https://api.github.com/repos/KalmanMeth/skydive.network/events","assignees_url":"https://api.github.com/repos/KalmanMeth/skydive.network/assignees{/user}","branches_url":"https://api.github.com/repos/KalmanMeth/skydive.network/branches{/branch}","tags_url":"https://api.github.com/repos/KalmanMeth/skydive.network/tags","blobs_url":"https://api.github.com/repos/KalmanMeth/skydive.network/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/KalmanMeth/skydive.network/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/KalmanMeth/skydive.network/git/refs{/sha}","trees_url":"https://api.github.com/repos/KalmanMeth/skydive.network/git/trees{/sha}","statuses_url":"https://api.github.com/repos/KalmanMeth/skydive.network/statuses/{sha}","languages_url":"https://api.github.com/repos/KalmanMeth/skydive.network/languages","stargazers_url":"https://api.github.com/repos/KalmanMeth/skydive.network/stargazers","contributors_url":"https://api.github.com/repos/KalmanMeth/skydive.network/contributors","subscribers_url":"https://api.github.com/repos/KalmanMeth/skydive.network/subscribers","subscription_url":"https://api.github.com/repos/KalmanMeth/skydive.network/subscription","commits_url":"https://api.github.com/repos/KalmanMeth/skydive.network/commits{/sha}","git_commits_url":"https://api.github.com/repos/KalmanMeth/skydive.network/git/commits{/sha}","comments_url":"https://api.github.com/repos/KalmanMeth/skydive.network/comments{/number}","issue_comment_url":"https://api.github.com/repos/KalmanMeth/skydive.network/issues/comments{/number}","contents_url":"https://api.github.com/repos/KalmanMeth/skydive.network/contents/{+path}","compare_url":"https://api.github.com/repos/KalmanMeth/skydive.network/compare/{base}...{head}","merges_url":"https://api.github.com/repos/KalmanMeth/skydive.network/merges","archive_url":"https://api.github.com/repos/KalmanMeth/skydive.network/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/KalmanMeth/skydive.network/downloads","issues_url":"https://api.github.com/repos/KalmanMeth/skydive.network/issues{/number}","pulls_url":"https://api.github.com/repos/KalmanMeth/skydive.network/pulls{/number}","milestones_url":"https://api.github.com/repos/KalmanMeth/skydive.network/milestones{/number}","notifications_url":"https://api.github.com/repos/KalmanMeth/skydive.network/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/KalmanMeth/skydive.network/labels{/name}","releases_url":"https://api.github.com/repos/KalmanMeth/skydive.network/releases{/id}","deployments_url":"https://api.github.com/repos/KalmanMeth/skydive.network/deployments","created_at":"2019-01-07T13:03:25Z","updated_at":"2019-01-07T13:03:28Z","pushed_at":"2019-07-25T10:58:19Z","git_url":"git://github.com/KalmanMeth/skydive.network.git","ssh_url":"git@github.com:KalmanMeth/skydive.network.git","clone_url":"https://github.com/KalmanMeth/skydive.network.git","svn_url":"https://github.com/KalmanMeth/skydive.network","homepage":null,"size":93926,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"skydive-project:master","ref":"master","sha":"c09ee84d55d8b7b16c19e5a4c3d3aa60cbd3fa7b","user":{"login":"skydive-project","id":19912486,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE5OTEyNDg2","avatar_url":"https://avatars0.githubusercontent.com/u/19912486?v=4","gravatar_id":"","url":"https://api.github.com/users/skydive-project","html_url":"https://github.com/skydive-project","followers_url":"https://api.github.com/users/skydive-project/followers","following_url":"https://api.github.com/users/skydive-project/following{/other_user}","gists_url":"https://api.github.com/users/skydive-project/gists{/gist_id}","starred_url":"https://api.github.com/users/skydive-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/skydive-project/subscriptions","organizations_url":"https://api.github.com/users/skydive-project/orgs","repos_url":"https://api.github.com/users/skydive-project/repos","events_url":"https://api.github.com/users/skydive-project/events{/privacy}","received_events_url":"https://api.github.com/users/skydive-project/received_events","type":"Organization","site_admin":false},"repo":{"id":84061834,"node_id":"MDEwOlJlcG9zaXRvcnk4NDA2MTgzNA==","name":"skydive.network","full_name":"skydive-project/skydive.network","private":false,"owner":{"login":"skydive-project","id":19912486,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE5OTEyNDg2","avatar_url":"https://avatars0.githubusercontent.com/u/19912486?v=4","gravatar_id":"","url":"https://api.github.com/users/skydive-project","html_url":"https://github.com/skydive-project","followers_url":"https://api.github.com/users/skydive-project/followers","following_url":"https://api.github.com/users/skydive-project/following{/other_user}","gists_url":"https://api.github.com/users/skydive-project/gists{/gist_id}","starred_url":"https://api.github.com/users/skydive-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/skydive-project/subscriptions","organizations_url":"https://api.github.com/users/skydive-project/orgs","repos_url":"https://api.github.com/users/skydive-project/repos","events_url":"https://api.github.com/users/skydive-project/events{/privacy}","received_events_url":"https://api.github.com/users/skydive-project/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/skydive-project/skydive.network","description":null,"fork":false,"url":"https://api.github.com/repos/skydive-project/skydive.network","forks_url":"https://api.github.com/repos/skydive-project/skydive.network/forks","keys_url":"https://api.github.com/repos/skydive-project/skydive.network/keys{/key_id}","collaborators_url":"https://api.github.com/repos/skydive-project/skydive.network/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/skydive-project/skydive.network/teams","hooks_url":"https://api.github.com/repos/skydive-project/skydive.network/hooks","issue_events_url":"https://api.github.com/repos/skydive-project/skydive.network/issues/events{/number}","events_url":"https://api.github.com/repos/skydive-project/skydive.network/events","assignees_url":"https://api.github.com/repos/skydive-project/skydive.network/assignees{/user}","branches_url":"https://api.github.com/repos/skydive-project/skydive.network/branches{/branch}","tags_url":"https://api.github.com/repos/skydive-project/skydive.network/tags","blobs_url":"https://api.github.com/repos/skydive-project/skydive.network/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/skydive-project/skydive.network/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/skydive-project/skydive.network/git/refs{/sha}","trees_url":"https://api.github.com/repos/skydive-project/skydive.network/git/trees{/sha}","statuses_url":"https://api.github.com/repos/skydive-project/skydive.network/statuses/{sha}","languages_url":"https://api.github.com/repos/skydive-project/skydive.network/languages","stargazers_url":"https://api.github.com/repos/skydive-project/skydive.network/stargazers","contributors_url":"https://api.github.com/repos/skydive-project/skydive.network/contributors","subscribers_url":"https://api.github.com/repos/skydive-project/skydive.network/subscribers","subscription_url":"https://api.github.com/repos/skydive-project/skydive.network/subscription","commits_url":"https://api.github.com/repos/skydive-project/skydive.network/commits{/sha}","git_commits_url":"https://api.github.com/repos/skydive-project/skydive.network/git/commits{/sha}","comments_url":"https://api.github.com/repos/skydive-project/skydive.network/comments{/number}","issue_comment_url":"https://api.github.com/repos/skydive-project/skydive.network/issues/comments{/number}","contents_url":"https://api.github.com/repos/skydive-project/skydive.network/contents/{+path}","compare_url":"https://api.github.com/repos/skydive-project/skydive.network/compare/{base}...{head}","merges_url":"https://api.github.com/repos/skydive-project/skydive.network/merges","archive_url":"https://api.github.com/repos/skydive-project/skydive.network/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/skydive-project/skydive.network/downloads","issues_url":"https://api.github.com/repos/skydive-project/skydive.network/issues{/number}","pulls_url":"https://api.github.com/repos/skydive-project/skydive.network/pulls{/number}","milestones_url":"https://api.github.com/repos/skydive-project/skydive.network/milestones{/number}","notifications_url":"https://api.github.com/repos/skydive-project/skydive.network/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/skydive-project/skydive.network/labels{/name}","releases_url":"https://api.github.com/repos/skydive-project/skydive.network/releases{/id}","deployments_url":"https://api.github.com/repos/skydive-project/skydive.network/deployments","created_at":"2017-03-06T10:46:10Z","updated_at":"2019-07-25T08:37:45Z","pushed_at":"2019-07-25T11:18:28Z","git_url":"git://github.com/skydive-project/skydive.network.git","ssh_url":"git@github.com:skydive-project/skydive.network.git","clone_url":"https://github.com/skydive-project/skydive.network.git","svn_url":"https://github.com/skydive-project/skydive.network","homepage":null,"size":93921,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":14,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":3,"license":null,"forks":14,"open_issues":3,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/skydive-project/skydive.network/pulls/62"},"html":{"href":"https://github.com/skydive-project/skydive.network/pull/62"},"issue":{"href":"https://api.github.com/repos/skydive-project/skydive.network/issues/62"},"comments":{"href":"https://api.github.com/repos/skydive-project/skydive.network/issues/62/comments"},"review_comments":{"href":"https://api.github.com/repos/skydive-project/skydive.network/pulls/62/comments"},"review_comment":{"href":"https://api.github.com/repos/skydive-project/skydive.network/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/skydive-project/skydive.network/pulls/62/commits"},"statuses":{"href":"https://api.github.com/repos/skydive-project/skydive.network/statuses/cb8fd7abb7cf301165ba5f09860e7801f22be1d0"}},"author_association":"NONE"}}
{"actor":{"display_login":"hunchback"}}