{"action":"created","comment":{"url":"https://api.github.com/repos/alphagov/govuk-content-schemas/pulls/comments/34874853","id":34874853,"diff_hunk":"@@ -0,0 +1,93 @@\n+#!/usr/bin/env ruby\n+\n+$LOAD_PATH << File.dirname(__FILE__) + \"/../lib\"\n+require 'govuk_content_schemas/finder_schema_converter'\n+require 'json'\n+\n+def usage\n+  $stderr.puts \"USAGE: #{File.basename(__FILE__)} <finder_schema_1.json ... finder_schema_n.json>\"\n+end\n+\n+if ARGV.empty?\n+  usage\n+  exit(1)\n+end\n+\n+# Unfortunately there are a few edge-cases with document type naming, so we can't\n+# just munge the filename of the finder schema files. The document type names are defined\n+# in the 'metadata' files, but it would be a hassle to load and parse them, so just\n+# hard code them here\n+class DocumentTypeMapper\n+  MAPPING = {\n+    \"aaib-reports.json\" => \"aaib_report\",\n+    \"cma-cases.json\" => \"cma_case\",\n+    \"countryside-stewardship-grants.json\" => \"countryside_stewardship_grant\",\n+    \"drug-safety-updates.json\" => \"drug_safety_update\",\n+    \"esi-funds.json\" => \"european_structural_investment_fund\",\n+    \"international-development-funds.json\" => \"international_development_fund\",\n+    \"maib-reports.json\" => \"maib_report\",\n+    \"medical-safety-alerts.json\" => \"medical_safety_alert\",\n+    \"raib-reports.json\" => \"raib_report\",\n+    \"vehicle-recalls-and-faults-alert.json\" => \"vehicle_recalls_and_faults_alert\"\n+  }\n+\n+  def call(filename)\n+    MAPPING.fetch(File.basename(filename))\n+  end\n+end\n+\n+# There is also no way to identify whether a finder facet allows single or\n+# multiple values in the document. The only place that this information is\n+# encoded is in the form templates of the specialist publisher admin\n+# interface. Again, rather than trying to do anything clever, we'll just hard\n+# code it here\n+class SelectFieldMultiplicityIdentifier\n+  MULTI_SELECTS_BY_DOCUMENT_TYPE = {\n+    \"aaib_report\" => [\n+      \"aircraft_category\"\n+    ],\n+    \"cma_case\" => [\n+      \"market_sector\"\n+    ],\n+    \"countryside_stewardship_grant\" => [\n+      \"land_use\",\n+      \"tiers_or_standalone_items\",\n+      \"funding_amount\"\n+    ],\n+    \"drug_safety_update\" => [\n+      \"therapeutic_area\"\n+    ],\n+    \"european_structural_investment_fund\" => [\n+      \"fund_type\",\n+      \"location\",\n+      \"funding_source\"\n+    ],\n+    \"international_development_fund\" => [\n+      \"location\",\n+      \"development_sector\",\n+      \"eligible_entities\",\n+      \"value_of_funding\"\n+    ],\n+    \"maib_report\" => [\n+      \"vessel_type\"\n+    ],\n+    \"medical_safety_alert\" => [\n+      \"medical_specialism\"\n+    ],\n+    \"raib_report\" => [\n+      \"railway_type\"\n+    ]\n+  }\n+\n+  def call(document_type, facet_name)\n+    MULTI_SELECTS_BY_DOCUMENT_TYPE.fetch(document_type, []).include?(facet_name)\n+  end\n+end\n+\n+converter = GovukContentSchemas::FinderSchemaConverter.new(\n+  document_type_mapper: DocumentTypeMapper.new,\n+  select_field_multiplicity_identifier: SelectFieldMultiplicityIdentifier.new\n+)\n+converted = converter.call(*ARGV)\n+\n+puts JSON.pretty_generate(converted)","path":"bin/convert_finder_schemas","position":93,"original_position":93,"commit_id":"1e2ef60a306187376c45b65b5ea9006b72f893a6","original_commit_id":"3ed8b169e57e0ffd3ff2d2baad53d525aab7e269","user":{"login":"heathd","id":61065,"avatar_url":"https://avatars.githubusercontent.com/u/61065?v=3","gravatar_id":"","url":"https://api.github.com/users/heathd","html_url":"https://github.com/heathd","followers_url":"https://api.github.com/users/heathd/followers","following_url":"https://api.github.com/users/heathd/following{/other_user}","gists_url":"https://api.github.com/users/heathd/gists{/gist_id}","starred_url":"https://api.github.com/users/heathd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/heathd/subscriptions","organizations_url":"https://api.github.com/users/heathd/orgs","repos_url":"https://api.github.com/users/heathd/repos","events_url":"https://api.github.com/users/heathd/events{/privacy}","received_events_url":"https://api.github.com/users/heathd/received_events","type":"User","site_admin":false},"body":"done","created_at":"2015-07-17T09:28:45Z","updated_at":"2015-07-17T09:28:45Z","html_url":"https://github.com/alphagov/govuk-content-schemas/pull/95#discussion_r34874853","pull_request_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/pulls/95","_links":{"self":{"href":"https://api.github.com/repos/alphagov/govuk-content-schemas/pulls/comments/34874853"},"html":{"href":"https://github.com/alphagov/govuk-content-schemas/pull/95#discussion_r34874853"},"pull_request":{"href":"https://api.github.com/repos/alphagov/govuk-content-schemas/pulls/95"}}},"pull_request":{"url":"https://api.github.com/repos/alphagov/govuk-content-schemas/pulls/95","id":40123431,"html_url":"https://github.com/alphagov/govuk-content-schemas/pull/95","diff_url":"https://github.com/alphagov/govuk-content-schemas/pull/95.diff","patch_url":"https://github.com/alphagov/govuk-content-schemas/pull/95.patch","issue_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/issues/95","number":95,"state":"open","locked":false,"title":"Specialist document schema","user":{"login":"heathd","id":61065,"avatar_url":"https://avatars.githubusercontent.com/u/61065?v=3","gravatar_id":"","url":"https://api.github.com/users/heathd","html_url":"https://github.com/heathd","followers_url":"https://api.github.com/users/heathd/followers","following_url":"https://api.github.com/users/heathd/following{/other_user}","gists_url":"https://api.github.com/users/heathd/gists{/gist_id}","starred_url":"https://api.github.com/users/heathd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/heathd/subscriptions","organizations_url":"https://api.github.com/users/heathd/orgs","repos_url":"https://api.github.com/users/heathd/repos","events_url":"https://api.github.com/users/heathd/events{/privacy}","received_events_url":"https://api.github.com/users/heathd/received_events","type":"User","site_admin":false},"body":"A first pass at specialist document schemas ([trello ticket](https://trello.com/c/x7TPNRfG/262-initial-version-of-specialist-document-schemas))\r\n\r\nI did the following:\r\n\r\n1. dumped out examples from the `rendered_specialist_document` mongo collection\r\n2. made a first pass at a schema by converting the [finder schemas](https://github.com/alphagov/specialist-publisher/tree/master/finders/schemas) from specialist-publisher into json-schema format using a script\r\n3. massaged the examples and schemas be semantically clear and consistent\r\n\r\nSome detail on steps 2 and 3:\r\n\r\n## 2. Converting finder schemas to json-schema\r\n\r\nThe [finder schemas](https://github.com/alphagov/specialist-publisher/tree/master/finders/schemas) already describe all of the metadata fields of each specialist document type. It seemed error prone to convert these manually, so I wrote a script to do this.\r\n\r\nA typical usage might be:\r\n```\r\n$ ./bin/convert_finder_schemas ../specialist-publisher/finders/schemas/*.json > formats/specialist_document/publisher/facets.json\r\n```\r\n\r\nthis will write a set of `definitions` into the facets.json file.\r\n\r\n```json\r\n{\r\n  \"definitions\": {\r\n    \"aaib_report_metadata\": {\r\n      \"type\": \"object\",\r\n      \"additionalProperties\": false,\r\n      \"properties\": {\r\n        \"document_type\": {\r\n          \"type\": \"string\",\r\n          \"enum\": [\r\n            \"aaib_report\"\r\n          ]\r\n        }\r\n\r\n        ...\r\n\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\nthese can then be incorporated into the `definitions` section of the `details.json` file.\r\n\r\nthey can then be used to define the metadata element using a [`oneOf` rule](http://json-schema.org/latest/json-schema-validation.html#anchor88):\r\n\r\n```json\r\n  \"definitions\": {\r\n    \"any_metadata\": {\r\n      \"type\": \"object\",\r\n      \"oneOf\": [\r\n        { \"$ref\": \"#/definitions/aaib_report_metadata\" },\r\n        { \"$ref\": \"#/definitions/cma_case_metadata\" },\r\n        { \"$ref\": \"#/definitions/countryside_stewardship_grant_metadata\" },\r\n        { \"$ref\": \"#/definitions/drug_safety_update_metadata\" },\r\n        { \"$ref\": \"#/definitions/european_structural_investment_fund_metadata\" },\r\n        { \"$ref\": \"#/definitions/international_development_fund_metadata\" },\r\n        { \"$ref\": \"#/definitions/maib_report_metadata\" },\r\n        { \"$ref\": \"#/definitions/medical_safety_alert_metadata\" },\r\n        { \"$ref\": \"#/definitions/raib_report_metadata\" },\r\n        { \"$ref\": \"#/definitions/vehicle_recalls_and_faults_alert_metadata\" }\r\n      ]\r\n    }\r\n  }\r\n```\r\nThis also has the advantage that it should be fairly easy to update\r\nthese definitions if the finder schemas change.\r\n\r\nThe converter has two sets of hard-coded information which are not possible to determine automatically:\r\n\r\n1. the mapping from the filename of the finder schema to the `document_type`\r\n2. identifying whether a field allows only a single value (ie. single-select) or a list of values (ie. multi-select)\r\n\r\n## 3. Changes to the data structures\r\n\r\n### Metadata labels\r\n\r\nThe `rendered_specialist_document` included both a machine-readable and human-readable version of each metadata field, e.g.\r\n\r\n```\r\n\"report_type\" : \"investigation-report\",\r\n\"report_type_label\" : \"Investigation report\",\r\n```\r\n\r\nhowever, the `_label` values are not actually used by the specialist-frontend. Instead, when rendering a specialist-document it fetches both the [finder object and the specialist document object](https://github.com/alphagov/specialist-frontend/blob/master/app/controllers/specialist_documents_controller.rb#L10) from the content store and uses the finder object to determine the human readable labels.\r\n\r\nTherefore I've removed all of the `_label` fields and do not allow them in a specialist document content item.\r\n\r\n### Metadata sub-element\r\n\r\nI've moved all 'metadata' fields from the top-level of the `details` hash to their own `metadata` sub-element. This feels semantically cleaner and also makes it easier to validate them against the automatically converted definitions.\r\n\r\n### Interaction with rummager\r\n\r\nI discussed with @rboulton whether there were any considerations to ensure we could index the content-item. Richard confirmed that there will be presenter objects which convert the content item into a data structure appropriate for rummager, and therefore there was no need to retain any form of backward compatibility with the pre-existing data structure.\r\n\r\n### Removed fields\r\n\r\nthe following metadata fields do not appear to be needed/used by specialist-frontend and were removed:\r\n\r\n- version_number\r\n- created_at\r\n- updated_at\r\n- minor_update\r\n- bulk_published\r\n\r\n### Description vs summary\r\n\r\nThe rendered_specialist_document had a `summary` field. In the examples I have used the `description` field instead, assuming that they serve the same purpose semantically.\r\n\r\n### published_at\r\n\r\nspecialist-frontend appears to rely upon the `published_at` field, but this seems to have the same content/semantics as `public_updated_at`. I'm retaining `public_updated_at` because this is a standard top-level field. \r\n\r\n### Optional vs blank fields\r\n\r\nSome fields, eg. `closed_date` contained empty string `\"\"` in the `rendered_specialist_document`. I opted to disallow empty string for these fields. The field itself should be absent if the value is not set, rather than representing it as an empty string.\r\n\r\n## Other considerations\r\n\r\nI have not made any of the metadata fields required. This seems ok for now, but we may want to tighten things up by making the appropriate metadata fields required in the future.\r\n\r\n","created_at":"2015-07-16T12:26:40Z","updated_at":"2015-07-17T09:28:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"16a5cc48c8acddf0a5537ff312e294d00d71d2d9","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/pulls/95/commits","review_comments_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/pulls/95/comments","review_comment_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/pulls/comments{/number}","comments_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/issues/95/comments","statuses_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/statuses/1e2ef60a306187376c45b65b5ea9006b72f893a6","head":{"label":"alphagov:add-specialist-document-schema","ref":"add-specialist-document-schema","sha":"1e2ef60a306187376c45b65b5ea9006b72f893a6","user":{"login":"alphagov","id":596977,"avatar_url":"https://avatars.githubusercontent.com/u/596977?v=3","gravatar_id":"","url":"https://api.github.com/users/alphagov","html_url":"https://github.com/alphagov","followers_url":"https://api.github.com/users/alphagov/followers","following_url":"https://api.github.com/users/alphagov/following{/other_user}","gists_url":"https://api.github.com/users/alphagov/gists{/gist_id}","starred_url":"https://api.github.com/users/alphagov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alphagov/subscriptions","organizations_url":"https://api.github.com/users/alphagov/orgs","repos_url":"https://api.github.com/users/alphagov/repos","events_url":"https://api.github.com/users/alphagov/events{/privacy}","received_events_url":"https://api.github.com/users/alphagov/received_events","type":"Organization","site_admin":false},"repo":{"id":27441121,"name":"govuk-content-schemas","full_name":"alphagov/govuk-content-schemas","owner":{"login":"alphagov","id":596977,"avatar_url":"https://avatars.githubusercontent.com/u/596977?v=3","gravatar_id":"","url":"https://api.github.com/users/alphagov","html_url":"https://github.com/alphagov","followers_url":"https://api.github.com/users/alphagov/followers","following_url":"https://api.github.com/users/alphagov/following{/other_user}","gists_url":"https://api.github.com/users/alphagov/gists{/gist_id}","starred_url":"https://api.github.com/users/alphagov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alphagov/subscriptions","organizations_url":"https://api.github.com/users/alphagov/orgs","repos_url":"https://api.github.com/users/alphagov/repos","events_url":"https://api.github.com/users/alphagov/events{/privacy}","received_events_url":"https://api.github.com/users/alphagov/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/alphagov/govuk-content-schemas","description":"Definitions of the data formats used to represent content on GOV.UK","fork":false,"url":"https://api.github.com/repos/alphagov/govuk-content-schemas","forks_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/forks","keys_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/teams","hooks_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/hooks","issue_events_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/issues/events{/number}","events_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/events","assignees_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/assignees{/user}","branches_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/branches{/branch}","tags_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/tags","blobs_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/git/refs{/sha}","trees_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/statuses/{sha}","languages_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/languages","stargazers_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/stargazers","contributors_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/contributors","subscribers_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/subscribers","subscription_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/subscription","commits_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/commits{/sha}","git_commits_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/git/commits{/sha}","comments_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/comments{/number}","issue_comment_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/issues/comments{/number}","contents_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/contents/{+path}","compare_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/merges","archive_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/downloads","issues_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/issues{/number}","pulls_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/pulls{/number}","milestones_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/milestones{/number}","notifications_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/labels{/name}","releases_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/releases{/id}","created_at":"2014-12-02T16:20:33Z","updated_at":"2015-05-06T17:12:45Z","pushed_at":"2015-07-17T09:28:27Z","git_url":"git://github.com/alphagov/govuk-content-schemas.git","ssh_url":"git@github.com:alphagov/govuk-content-schemas.git","clone_url":"https://github.com/alphagov/govuk-content-schemas.git","svn_url":"https://github.com/alphagov/govuk-content-schemas","homepage":null,"size":1594,"stargazers_count":2,"watchers_count":2,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":1,"forks":3,"open_issues":1,"watchers":2,"default_branch":"master"}},"base":{"label":"alphagov:master","ref":"master","sha":"8d0aa679ea169ff3dcb42e978d8417e30ed3c45c","user":{"login":"alphagov","id":596977,"avatar_url":"https://avatars.githubusercontent.com/u/596977?v=3","gravatar_id":"","url":"https://api.github.com/users/alphagov","html_url":"https://github.com/alphagov","followers_url":"https://api.github.com/users/alphagov/followers","following_url":"https://api.github.com/users/alphagov/following{/other_user}","gists_url":"https://api.github.com/users/alphagov/gists{/gist_id}","starred_url":"https://api.github.com/users/alphagov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alphagov/subscriptions","organizations_url":"https://api.github.com/users/alphagov/orgs","repos_url":"https://api.github.com/users/alphagov/repos","events_url":"https://api.github.com/users/alphagov/events{/privacy}","received_events_url":"https://api.github.com/users/alphagov/received_events","type":"Organization","site_admin":false},"repo":{"id":27441121,"name":"govuk-content-schemas","full_name":"alphagov/govuk-content-schemas","owner":{"login":"alphagov","id":596977,"avatar_url":"https://avatars.githubusercontent.com/u/596977?v=3","gravatar_id":"","url":"https://api.github.com/users/alphagov","html_url":"https://github.com/alphagov","followers_url":"https://api.github.com/users/alphagov/followers","following_url":"https://api.github.com/users/alphagov/following{/other_user}","gists_url":"https://api.github.com/users/alphagov/gists{/gist_id}","starred_url":"https://api.github.com/users/alphagov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alphagov/subscriptions","organizations_url":"https://api.github.com/users/alphagov/orgs","repos_url":"https://api.github.com/users/alphagov/repos","events_url":"https://api.github.com/users/alphagov/events{/privacy}","received_events_url":"https://api.github.com/users/alphagov/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/alphagov/govuk-content-schemas","description":"Definitions of the data formats used to represent content on GOV.UK","fork":false,"url":"https://api.github.com/repos/alphagov/govuk-content-schemas","forks_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/forks","keys_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/teams","hooks_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/hooks","issue_events_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/issues/events{/number}","events_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/events","assignees_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/assignees{/user}","branches_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/branches{/branch}","tags_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/tags","blobs_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/git/refs{/sha}","trees_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/statuses/{sha}","languages_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/languages","stargazers_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/stargazers","contributors_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/contributors","subscribers_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/subscribers","subscription_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/subscription","commits_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/commits{/sha}","git_commits_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/git/commits{/sha}","comments_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/comments{/number}","issue_comment_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/issues/comments{/number}","contents_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/contents/{+path}","compare_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/merges","archive_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/downloads","issues_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/issues{/number}","pulls_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/pulls{/number}","milestones_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/milestones{/number}","notifications_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/labels{/name}","releases_url":"https://api.github.com/repos/alphagov/govuk-content-schemas/releases{/id}","created_at":"2014-12-02T16:20:33Z","updated_at":"2015-05-06T17:12:45Z","pushed_at":"2015-07-17T09:28:27Z","git_url":"git://github.com/alphagov/govuk-content-schemas.git","ssh_url":"git@github.com:alphagov/govuk-content-schemas.git","clone_url":"https://github.com/alphagov/govuk-content-schemas.git","svn_url":"https://github.com/alphagov/govuk-content-schemas","homepage":null,"size":1594,"stargazers_count":2,"watchers_count":2,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":1,"forks":3,"open_issues":1,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/alphagov/govuk-content-schemas/pulls/95"},"html":{"href":"https://github.com/alphagov/govuk-content-schemas/pull/95"},"issue":{"href":"https://api.github.com/repos/alphagov/govuk-content-schemas/issues/95"},"comments":{"href":"https://api.github.com/repos/alphagov/govuk-content-schemas/issues/95/comments"},"review_comments":{"href":"https://api.github.com/repos/alphagov/govuk-content-schemas/pulls/95/comments"},"review_comment":{"href":"https://api.github.com/repos/alphagov/govuk-content-schemas/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/alphagov/govuk-content-schemas/pulls/95/commits"},"statuses":{"href":"https://api.github.com/repos/alphagov/govuk-content-schemas/statuses/1e2ef60a306187376c45b65b5ea9006b72f893a6"}}}}