{"action":"created","comment":{"url":"https://api.github.com/repos/symfony/symfony-docs/pulls/comments/25037155","id":25037155,"diff_hunk":"@@ -0,0 +1,288 @@\n+.. index::\n+   single: Asset\n+   single: Components; Asset\n+\n+The Asset Component\n+===================\n+\n+   The Asset component manages URL generation and versioning of web assets such\n+   as CSS stylesheets, JavaScript files and image files.\n+\n+In the past, it was common for web applications to hardcode the URLs of the web\n+assets. For example:\n+\n+.. code-block:: html\n+\n+    <link rel=\"stylesheet\" type=\"text/css\" href=\"/css/main.css\">\n+\n+    <!-- ... -->\n+\n+    <a href=\"/\"><img src=\"/images/logo.png\"></a>\n+\n+This practice is no longer recommended unless the web application is extremely\n+simple. The main problems of hardcoding asset URLs are the following:\n+\n+* **Templates get verbose** because you have to write the full path for each\n+  asset. When using the Asset component, you can group assets in packages to\n+  avoid repeating the common part of their path.\n+* **Versioning is difficult** because it has to be custom managed for each\n+  application. Adding a version to the asset URLs is essential for some applications\n+  because it allows to control how the assets are cached. The Asset component\n+  allows to define different versioning strategies for each package.\n+* **Moving assets location** is cumbersome and error-prone, because it requires\n+  you to carefully update the URLs of all assets included in all templates.\n+  The Asset component allows to move assets effortlessly just by changing the\n+  base path value associated with the package of assets.\n+* **Impossible to use multiple CDNs** because it requires to change the URL of\n+  the asset randomly for each request. The Asset component provides out-of-the-box\n+  support for any number of multiple CDNs, both regular (``http://``) and\n+  secure (``https://``).\n+\n+Installation\n+------------\n+\n+You can install the component in two different ways:\n+\n+* :doc:`Install it via Composer </components/using_components>` (``symfony/asset`` on `Packagist`_);\n+* Use the official Git repository (https://github.com/symfony/Asset).\n+\n+Usage\n+-----\n+\n+Asset Packages\n+~~~~~~~~~~~~~~\n+\n+The Asset component manages assets through packages. A package groups all the\n+assets which share the same properties: versioning strategy, base path, CDN hosts,\n+etc. In the following basic example, a package is created to manage assets without\n+any versioning::\n+\n+    use Symfony\\Component\\Asset\\Package;\n+    use Symfony\\Component\\Asset\\VersionStrategy\\EmptyVersionStrategy;\n+\n+    $package = new Package(new EmptyVersionStrategy());\n+\n+    echo $package->getUrl('/image.png');\n+    // result: /image.png\n+\n+Packages implement the :class:`Symfony\\\\Component\\\\Asset\\\\PackageInterface`,\n+which defines the following two methods:\n+\n+:method:`Symfony\\\\Component\\\\Asset\\\\PackageInterface::getVersion`\n+    Returns the asset version for an asset.\n+\n+:method:`Symfony\\\\Component\\\\Asset\\\\PackageInterface::getUrl`\n+    Returns an absolute or root-relative public path.\n+\n+Versioned Assets\n+~~~~~~~~~~~~~~~~\n+\n+One of the main features of the Asset component is to manage the versioning of\n+the application's assets. Asset versions are commonly used to control how these\n+assets are cached.\n+\n+Instead of relying on a simple version mechanism, the Asset component allows to\n+define advanced versioning strategies via PHP classes. The two built-in strategies\n+provided by the component are :class:`Symfony\\\\Component\\\\Asset\\\\VersionStrategy\\\\EmptyVersionStrategy`,\n+which doesn't add any version to the asset and :class:`Symfony\\\\Component\\\\Asset\\\\VersionStrategy\\\\StaticVersionStrategy`,\n+which allows to set the version with a format string.\n+\n+In this example, the ``StaticVersionStrategy`` is used to append the ``v1``\n+suffix to any asset path::\n+\n+    use Symfony\\Component\\Asset\\Package;\n+    use Symfony\\Component\\Asset\\VersionStrategy\\StaticVersionStrategy;\n+\n+    $package = new Package(new StaticVersionStrategy('v1'));\n+\n+    echo $package->getUrl('/image.png');\n+    // result: /image.png?v1\n+\n+In case you want to modify the version format, pass a sprintf-compatible format\n+string as the second argument of the ``StaticVersionStrategy`` constructor::\n+\n+    // put the 'version' word before the version value\n+    $package = new Package(new StaticVersionStrategy('v1', '%s?version=%s'));\n+\n+    echo $package->getUrl('/image.png');\n+    // result: /image.png?version=v1\n+\n+    // put the asset version before its path\n+    $package = new Package(new StaticVersionStrategy('v1', '%2$s/%1$s'));\n+\n+    echo $package->getUrl('/image.png');\n+    // result: /v1/image.png\n+\n+Custom Version Strategies\n+.........................\n+\n+Use the :class:`Symfony\\\\Component\\\\Asset\\\\VersionStrategy\\\\VersionStrategyInterface`\n+to define your own version strategy. For example, you could define a versioning\n+where the current date is appended to bust the cache every day::\n+\n+    use Symfony\\Component\\Asset\\VersionStrategy\\VersionStrategyInterface;\n+\n+    class DateVersionStrategy implements VersionStrategyInterface\n+    {\n+        private $version;\n+\n+        public function __construct()\n+        {\n+            $this->version = date('Ymd');\n+        }\n+\n+        public function getVersion($path)\n+        {\n+            return $this->version;\n+        }\n+\n+        public function applyVersion($path)\n+        {\n+            return sprintf('%s?v=%s', $path, $this->getVersion($path));\n+        }\n+    }\n+\n+Grouped Assets\n+~~~~~~~~~~~~~~\n+\n+It's common for applications to store their assets in a common path. If that's\n+your case, replace the default :class:`Symfony\\\\Component\\\\Asset\\\\Package` class\n+by :class:`Symfony\\\\Component\\\\Asset\\\\PathPackage` to avoid repeating the same\n+path time and again::\n+\n+    use Symfony\\Component\\Asset\\PathPackage;\n+    // ...\n+\n+    $package = new PathPackage('/static/images', new StaticVersionStrategy('v1'));\n+\n+    echo $package->getUrl('/logo.png');\n+    // result: /static/images/logo.png?v1\n+\n+Request Context Aware Assets\n+............................\n+\n+If you are also using the HttpFoundation component in your project, for example\n+in a Symfony application, the ``PathPackage`` class can take into account the\n+context of the current request::\n+\n+    use Symfony\\Component\\Asset\\PathPackage;\n+    use Symfony\\Component\\Asset\\Context\\RequestStackContext;\n+    // ...\n+\n+    $package = new PathPackage(\n+        '/static/images',\n+        new StaticVersionStrategy('v1'),\n+        new RequestStackContext($requestStack)\n+    );\n+\n+    echo $package->getUrl('/logo.png');\n+    // result: /somewhere/static/images/logo.png?v1\n+\n+When the request context is set (via the third optional argument), in addition\n+to the configured base path, ``PathPackage`` also prepends the current request\n+base URL (``/somewhere/`` in this example) to assets. This allows your website\n+to be hosted anywhere under the web server root directory.\n+\n+Absolute Assets and CDNs\n+~~~~~~~~~~~~~~~~~~~~~~~~\n+\n+Applications that host their assets on different domains and CDNs (*Content\n+Delivery Networks*) should use the :class:`Symfony\\\\Component\\\\Asset\\\\UrlPackage`\n+class to generate absolute URLs for their assets::\n+\n+    use Symfony\\Component\\Asset\\UrlPackage;\n+    // ...\n+\n+    $package = new UrlPackage(\n+        'http://static.example.com/images/',\n+        new StaticVersionStrategy('v1')\n+    );\n+\n+    echo $package->getUrl('/logo.png');\n+    // result: http://static.example.com/images/logo.png?v1\n+\n+In case you serve assets from more than one domain to improve application\n+performance, pass an array of URLs as the first argument of ``UrlPackage``\n+constructor::\n+\n+    use Symfony\\Component\\Asset\\UrlPackage;\n+    // ...\n+\n+    $urls = array(\n+        'http://static1.example.com/images/',\n+        'http://static2.example.com/images/',\n+    );\n+    $package = new UrlPackage($urls, new StaticVersionStrategy('v1'));\n+\n+    echo $package->getUrl('/logo.png');\n+    // result: http://static1.example.com/images/logo.png?v1\n+\n+The selection of the domain which will serve the asset is deterministic, meaning\n+that each asset will be always served by the same domain. This behavior simplifies\n+the management of HTTP cache.\n+\n+Request Context Aware Assets\n+............................\n+\n+Similarly to application-relative assets, absolute assets can also take into\n+account the context of the current request. In this case, only the request\n+scheme is considered, in order to select the appropriate base URL (HTTPs or\n+protocol-relative URLs for HTTPs requests, any base URL for HTTP requests)::\n+\n+    use Symfony\\Component\\Asset\\UrlPackage;\n+    use Symfony\\Component\\Asset\\Context\\RequestStackContext;\n+    // ...\n+\n+    $package = new UrlPackage(\n+        array('http://example.com/', 'https://example.com/'),\n+        new StaticVersionStrategy('v1'),\n+        new RequestStackContext($requestStack)\n+    );\n+\n+    echo $package->getUrl('/logo.png');\n+    // result: https://example.com/logo.png?v1\n+\n+Named Packages\n+~~~~~~~~~~~~~~\n+\n+Applications that manage lots of different assets may need to group them in\n+packages with the same versioning strategy and base path. The Asset component\n+includes a :class:`Symfony\\\\Component\\\\Asset\\\\Packages` class to simplify the","path":"components/asset/introduction.rst","position":250,"original_position":250,"commit_id":"6f7a63ed3b3c51ec5df422329651bdb7b61b8a95","original_commit_id":"6f7a63ed3b3c51ec5df422329651bdb7b61b8a95","user":{"login":"cordoval","id":328359,"avatar_url":"https://avatars.githubusercontent.com/u/328359?v=3","gravatar_id":"","url":"https://api.github.com/users/cordoval","html_url":"https://github.com/cordoval","followers_url":"https://api.github.com/users/cordoval/followers","following_url":"https://api.github.com/users/cordoval/following{/other_user}","gists_url":"https://api.github.com/users/cordoval/gists{/gist_id}","starred_url":"https://api.github.com/users/cordoval/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cordoval/subscriptions","organizations_url":"https://api.github.com/users/cordoval/orgs","repos_url":"https://api.github.com/users/cordoval/repos","events_url":"https://api.github.com/users/cordoval/events{/privacy}","received_events_url":"https://api.github.com/users/cordoval/received_events","type":"User","site_admin":false},"body":"remove `the`?","created_at":"2015-02-19T23:29:45Z","updated_at":"2015-02-19T23:29:45Z","html_url":"https://github.com/symfony/symfony-docs/pull/4987#discussion_r25037155","pull_request_url":"https://api.github.com/repos/symfony/symfony-docs/pulls/4987","_links":{"self":{"href":"https://api.github.com/repos/symfony/symfony-docs/pulls/comments/25037155"},"html":{"href":"https://github.com/symfony/symfony-docs/pull/4987#discussion_r25037155"},"pull_request":{"href":"https://api.github.com/repos/symfony/symfony-docs/pulls/4987"}}},"pull_request":{"url":"https://api.github.com/repos/symfony/symfony-docs/pulls/4987","id":29085375,"html_url":"https://github.com/symfony/symfony-docs/pull/4987","diff_url":"https://github.com/symfony/symfony-docs/pull/4987.diff","patch_url":"https://github.com/symfony/symfony-docs/pull/4987.patch","issue_url":"https://api.github.com/repos/symfony/symfony-docs/issues/4987","number":4987,"state":"open","locked":false,"title":"Added the documentation for the new Asset component","user":{"login":"javiereguiluz","id":73419,"avatar_url":"https://avatars.githubusercontent.com/u/73419?v=3","gravatar_id":"","url":"https://api.github.com/users/javiereguiluz","html_url":"https://github.com/javiereguiluz","followers_url":"https://api.github.com/users/javiereguiluz/followers","following_url":"https://api.github.com/users/javiereguiluz/following{/other_user}","gists_url":"https://api.github.com/users/javiereguiluz/gists{/gist_id}","starred_url":"https://api.github.com/users/javiereguiluz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/javiereguiluz/subscriptions","organizations_url":"https://api.github.com/users/javiereguiluz/orgs","repos_url":"https://api.github.com/users/javiereguiluz/repos","events_url":"https://api.github.com/users/javiereguiluz/events{/privacy}","received_events_url":"https://api.github.com/users/javiereguiluz/received_events","type":"User","site_admin":false},"body":"| Q             | A\r\n| ------------- | ---\r\n| Doc fix?      | no\r\n| New docs?     | yes\r\n| Applies to    | 2.7+\r\n| Fixed tickets | #4982\r\n\r\nThis PR only adds the \"Symfony-agnostic\" documentation. After this doc is merged, we have to update the rest of the Symfony documentation with the following changes:\r\n\r\n-----\r\n\r\n**1. Changes in configuration**\r\n\r\n```yaml\r\n# OLD configuration\r\nframework:\r\n    templating:\r\n        assets_version: 'v5'\r\n        assets_version_format: '%%s?version=%%s'\r\n        assets_base_urls:\r\n            http: ['http://cdn.example.com']\r\n            ssl:  ['https://secure.example.com']\r\n        packages:\r\n            # ...\r\n\r\n# NEW configuration\r\nframework:\r\n    assets:\r\n        version: 'v5'\r\n        version_format: '%%s?version=%%s'\r\n        base_path: ~\r\n        base_urls: ['http://cdn.example.com', 'https://secure.example.com']\r\n        packages:\r\n            # ...\r\n```\r\n\r\n**2. Changes in Twig templates**\r\n\r\n`{{ asset() }}` function is the same as before, but now it only allows to set two arguments:\r\n\r\n```twig\r\n{# Common case: no package name #}\r\n{{ asset('logo.png') }}\r\n\r\n{# When using packages #}\r\n{{ asset('logo.png', 'images') }}\r\n```\r\n\r\nThis means that `absolute` and `version` arguments are no longer available:\r\n\r\n```twig\r\n{# BEFORE #}\r\n{{ asset('logo.png', absolute = true) }}\r\n\r\n{# AFTER #}\r\n{{ absolute_url(asset('logo.png')) }}\r\n\r\n\r\n{# BEFORE #}\r\n{{ asset('logo.png', version = 'v5') }}\r\n\r\n{# AFTER #}\r\n{# relative URLs - do nothing (version is automatically appended) #}\r\n{{ asset('logo.png') }}\r\n\r\n{# absolute URLs - get the version with asset_version() and append it manually #}\r\n{{ absolute_url(asset('logo.png')) ~ '?' ~ asset_version('logo.png') }}\r\n```\r\n\r\n**3. Other changes**\r\n\r\n  * The `asset*()` functions are now defined in the Twig Bridge instead of the Twig Bundle.\r\n  * ...\r\n\r\n-----\r\n\r\nLastly, I have a question when using Asset component in a Symfony application: How can I use a custom version strategy in a Symfony application?\r\n","created_at":"2015-02-11T11:57:11Z","updated_at":"2015-02-19T23:29:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c86b96bba69d217d82fe11591cd39d9231a487a3","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/symfony/symfony-docs/pulls/4987/commits","review_comments_url":"https://api.github.com/repos/symfony/symfony-docs/pulls/4987/comments","review_comment_url":"https://api.github.com/repos/symfony/symfony-docs/pulls/comments/{number}","comments_url":"https://api.github.com/repos/symfony/symfony-docs/issues/4987/comments","statuses_url":"https://api.github.com/repos/symfony/symfony-docs/statuses/6f7a63ed3b3c51ec5df422329651bdb7b61b8a95","head":{"label":"javiereguiluz:add_asset_doc","ref":"add_asset_doc","sha":"6f7a63ed3b3c51ec5df422329651bdb7b61b8a95","user":{"login":"javiereguiluz","id":73419,"avatar_url":"https://avatars.githubusercontent.com/u/73419?v=3","gravatar_id":"","url":"https://api.github.com/users/javiereguiluz","html_url":"https://github.com/javiereguiluz","followers_url":"https://api.github.com/users/javiereguiluz/followers","following_url":"https://api.github.com/users/javiereguiluz/following{/other_user}","gists_url":"https://api.github.com/users/javiereguiluz/gists{/gist_id}","starred_url":"https://api.github.com/users/javiereguiluz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/javiereguiluz/subscriptions","organizations_url":"https://api.github.com/users/javiereguiluz/orgs","repos_url":"https://api.github.com/users/javiereguiluz/repos","events_url":"https://api.github.com/users/javiereguiluz/events{/privacy}","received_events_url":"https://api.github.com/users/javiereguiluz/received_events","type":"User","site_admin":false},"repo":{"id":26866700,"name":"symfony-docs","full_name":"javiereguiluz/symfony-docs","owner":{"login":"javiereguiluz","id":73419,"avatar_url":"https://avatars.githubusercontent.com/u/73419?v=3","gravatar_id":"","url":"https://api.github.com/users/javiereguiluz","html_url":"https://github.com/javiereguiluz","followers_url":"https://api.github.com/users/javiereguiluz/followers","following_url":"https://api.github.com/users/javiereguiluz/following{/other_user}","gists_url":"https://api.github.com/users/javiereguiluz/gists{/gist_id}","starred_url":"https://api.github.com/users/javiereguiluz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/javiereguiluz/subscriptions","organizations_url":"https://api.github.com/users/javiereguiluz/orgs","repos_url":"https://api.github.com/users/javiereguiluz/repos","events_url":"https://api.github.com/users/javiereguiluz/events{/privacy}","received_events_url":"https://api.github.com/users/javiereguiluz/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/javiereguiluz/symfony-docs","description":"The Symfony2 documentation","fork":true,"url":"https://api.github.com/repos/javiereguiluz/symfony-docs","forks_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/forks","keys_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/teams","hooks_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/hooks","issue_events_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/issues/events{/number}","events_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/events","assignees_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/assignees{/user}","branches_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/branches{/branch}","tags_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/tags","blobs_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/languages","stargazers_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/stargazers","contributors_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/contributors","subscribers_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/subscribers","subscription_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/subscription","commits_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/issues/comments/{number}","contents_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/contents/{+path}","compare_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/merges","archive_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/downloads","issues_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/issues{/number}","pulls_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/labels{/name}","releases_url":"https://api.github.com/repos/javiereguiluz/symfony-docs/releases{/id}","created_at":"2014-11-19T15:08:31Z","updated_at":"2015-02-02T17:06:05Z","pushed_at":"2015-02-19T19:20:50Z","git_url":"git://github.com/javiereguiluz/symfony-docs.git","ssh_url":"git@github.com:javiereguiluz/symfony-docs.git","clone_url":"https://github.com/javiereguiluz/symfony-docs.git","svn_url":"https://github.com/javiereguiluz/symfony-docs","homepage":"http://symfony.com/doc/current/","size":25841,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":false,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"symfony:master","ref":"master","sha":"81e8c1300a0e48f6b11e0470471ee2030dc24321","user":{"login":"symfony","id":143937,"avatar_url":"https://avatars.githubusercontent.com/u/143937?v=3","gravatar_id":"","url":"https://api.github.com/users/symfony","html_url":"https://github.com/symfony","followers_url":"https://api.github.com/users/symfony/followers","following_url":"https://api.github.com/users/symfony/following{/other_user}","gists_url":"https://api.github.com/users/symfony/gists{/gist_id}","starred_url":"https://api.github.com/users/symfony/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/symfony/subscriptions","organizations_url":"https://api.github.com/users/symfony/orgs","repos_url":"https://api.github.com/users/symfony/repos","events_url":"https://api.github.com/users/symfony/events{/privacy}","received_events_url":"https://api.github.com/users/symfony/received_events","type":"Organization","site_admin":false},"repo":{"id":521583,"name":"symfony-docs","full_name":"symfony/symfony-docs","owner":{"login":"symfony","id":143937,"avatar_url":"https://avatars.githubusercontent.com/u/143937?v=3","gravatar_id":"","url":"https://api.github.com/users/symfony","html_url":"https://github.com/symfony","followers_url":"https://api.github.com/users/symfony/followers","following_url":"https://api.github.com/users/symfony/following{/other_user}","gists_url":"https://api.github.com/users/symfony/gists{/gist_id}","starred_url":"https://api.github.com/users/symfony/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/symfony/subscriptions","organizations_url":"https://api.github.com/users/symfony/orgs","repos_url":"https://api.github.com/users/symfony/repos","events_url":"https://api.github.com/users/symfony/events{/privacy}","received_events_url":"https://api.github.com/users/symfony/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/symfony/symfony-docs","description":"The Symfony2 documentation","fork":false,"url":"https://api.github.com/repos/symfony/symfony-docs","forks_url":"https://api.github.com/repos/symfony/symfony-docs/forks","keys_url":"https://api.github.com/repos/symfony/symfony-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/symfony/symfony-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/symfony/symfony-docs/teams","hooks_url":"https://api.github.com/repos/symfony/symfony-docs/hooks","issue_events_url":"https://api.github.com/repos/symfony/symfony-docs/issues/events{/number}","events_url":"https://api.github.com/repos/symfony/symfony-docs/events","assignees_url":"https://api.github.com/repos/symfony/symfony-docs/assignees{/user}","branches_url":"https://api.github.com/repos/symfony/symfony-docs/branches{/branch}","tags_url":"https://api.github.com/repos/symfony/symfony-docs/tags","blobs_url":"https://api.github.com/repos/symfony/symfony-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/symfony/symfony-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/symfony/symfony-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/symfony/symfony-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/symfony/symfony-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/symfony/symfony-docs/languages","stargazers_url":"https://api.github.com/repos/symfony/symfony-docs/stargazers","contributors_url":"https://api.github.com/repos/symfony/symfony-docs/contributors","subscribers_url":"https://api.github.com/repos/symfony/symfony-docs/subscribers","subscription_url":"https://api.github.com/repos/symfony/symfony-docs/subscription","commits_url":"https://api.github.com/repos/symfony/symfony-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/symfony/symfony-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/symfony/symfony-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/symfony/symfony-docs/issues/comments/{number}","contents_url":"https://api.github.com/repos/symfony/symfony-docs/contents/{+path}","compare_url":"https://api.github.com/repos/symfony/symfony-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/symfony/symfony-docs/merges","archive_url":"https://api.github.com/repos/symfony/symfony-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/symfony/symfony-docs/downloads","issues_url":"https://api.github.com/repos/symfony/symfony-docs/issues{/number}","pulls_url":"https://api.github.com/repos/symfony/symfony-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/symfony/symfony-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/symfony/symfony-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/symfony/symfony-docs/labels{/name}","releases_url":"https://api.github.com/repos/symfony/symfony-docs/releases{/id}","created_at":"2010-02-17T08:43:51Z","updated_at":"2015-02-18T21:04:35Z","pushed_at":"2015-02-17T11:23:19Z","git_url":"git://github.com/symfony/symfony-docs.git","ssh_url":"git@github.com:symfony/symfony-docs.git","clone_url":"https://github.com/symfony/symfony-docs.git","svn_url":"https://github.com/symfony/symfony-docs","homepage":"http://symfony.com/doc/current/","size":54454,"stargazers_count":955,"watchers_count":955,"language":"Python","has_issues":true,"has_downloads":false,"has_wiki":false,"has_pages":false,"forks_count":1720,"mirror_url":null,"open_issues_count":312,"forks":1720,"open_issues":312,"watchers":955,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/symfony/symfony-docs/pulls/4987"},"html":{"href":"https://github.com/symfony/symfony-docs/pull/4987"},"issue":{"href":"https://api.github.com/repos/symfony/symfony-docs/issues/4987"},"comments":{"href":"https://api.github.com/repos/symfony/symfony-docs/issues/4987/comments"},"review_comments":{"href":"https://api.github.com/repos/symfony/symfony-docs/pulls/4987/comments"},"review_comment":{"href":"https://api.github.com/repos/symfony/symfony-docs/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/symfony/symfony-docs/pulls/4987/commits"},"statuses":{"href":"https://api.github.com/repos/symfony/symfony-docs/statuses/6f7a63ed3b3c51ec5df422329651bdb7b61b8a95"}}}}