{"action":"created","comment":{"url":"https://api.github.com/repos/minkphp/docs/pulls/comments/25121487","id":25121487,"diff_hunk":"@@ -1,164 +1,200 @@\n Traversing Pages\n ================\n \n-Now you know how to control the browser itself. But what about traversing\n-the current page content? Mink talks to its drivers with `XPath selectors`_,\n-but you also have access to `named selectors`_ and `css selectors`_. Mink\n-will transform such selectors into XPath queries internally for you.\n+Most usages of Mink will involve working with the page opened in your browser.\n+This is done thanks to the powerful Element API. This API allows to traverse\n+the page (similar to the DOM in Javascript) and to interact with it, which\n+will be covered in the :doc:`next chapter </guides/manipulating-pages>`.\n \n-The main class of Mink's selectors engine is ``Behat\\Mink\\Selector\\SelectorsHandler``.\n-It handles different selector types, which implements ``Behat\\Mink\\Selector\\SelectorInterface``:\n+DocumentElement and NodeElement\n+-------------------------------\n \n-.. code-block:: php\n+The Element API consists of 2 main classes. The ``DocumentElement`` instance\n+represents the page being displayed in the browser, while the ``NodeElement``\n+class is used to represent any element inside the page. Both class are sharing\n+a common set of methods to traverse the page (defined in ``TraversableElement``).\n \n-    $cssSelector = new \\Behat\\Mink\\Selector\\CssSelector();\n+The ``DocumentElement`` instance is accessible through the ``Session::getPage`` method:\n \n-    // generate XPath query out of CSS:\n-    echo $cssSelector->translateToXPath('h1 > a');\n+.. code-block:: php\n \n-    $handler = new \\Behat\\Mink\\Selector\\SelectorsHandler();\n-    $handler->registerSelector('css', $cssSelector);\n+    $page = $session->getPage();\n \n-    // generate XPath query out of CSS:\n-    echo $handler->selectorToXpath('css', 'h1 > a');\n+    // You can now manipulate the page.\n \n-When you initialize ``Selector\\SelectorsHandler`` it already has `XPath selectors`_,\n-`named selectors`_ and `css selectors`_ registered in it.\n+.. note::\n \n-You can provide a custom selectors handler as a second argument to your session\n-instances:\n+    The ``DocumentElement`` instance represents the ``<html>`` node in the\n+    DOM. It is equivalent to ``document.documentElement`` in the Javascript\n+    DOM API.\n \n-.. code-block:: php\n+Traversal Methods\n+-----------------\n \n-    $session = new \\Behat\\Mink\\Session($driver,\n-        new \\Behat\\Mink\\Selector\\SelectorsHandler()\n-    );\n+Elements have 2 main traversal methods: ``ElementInterface::findAll`` returns\n+an array of ``NodeElement`` instances matching the provided :ref:`selector <selectors>`\n+inside the current element while ``ElementInterface::find`` returns the first\n+match or ``null`` when there is none.\n \n-Mink will use this handler internally in `find* methods`_.\n+The ``TraversableElement`` class also provides a bunch of shortcut methods\n+on top of ``find()`` to make it easier to achieve many common use case:\n \n-Named Selectors\n-~~~~~~~~~~~~~~~\n+``ElementInterface::has``\n+    Checks whether a child element matches the given selector but without\n+    returning it.\n \n-Named selectors provide a way to get named XPath queries:\n+``TraversableElement::findById``\n+    Looks for a child element with the given id.\n \n-.. code-block:: php\n+``TraversableElement::findLink``\n+    Looks for a link with the given text, title, id or ``alt`` attribute\n+    (for images used inside links).\n \n-    $selector = new \\Behat\\Mink\\Selector\\NamedSelector();\n-    $handler  = new \\Behat\\Mink\\Selector\\SelectorsHandler(array(\n-        'named' => $selector\n-    ));\n-\n-    // XPath query to find the fieldset:\n-    $xpath1 = $selector->translateToXPath(\n-        array('fieldset', 'id|legend')\n-    );\n-    $xpath1 = $handler->selectorToXpath('named',\n-        array('fieldset', 'id|legend')\n-    );\n-\n-    // XPath query to find the field:\n-    $xpath2 = $selector->translateToXPath(\n-        array('field', 'id|name|value|label')\n-    );\n-    $xpath2 = $handler->selectorToXpath('named',\n-        array('field', 'id|name|value|label')\n-    );\n-\n-There's whole lot more named selectors for you to use:\n-\n-* ``link`` - for searching a link by its href, id, title, img alt or value\n-* ``button`` - for searching a button by its name, id, value, img alt or\n-  title\n-* ``link_or_button`` - for searching for both, links and buttons\n-* ``content`` - for searching a specific page content (text)\n-* ``select`` - for searching a select field by its id, name or label\n-* ``checkbox`` - for searching a checkbox by its id, name, or label\n-* ``radio`` - for searching a radio button by its id, name, or label\n-* ``file`` - for searching a file input by its id, name, or label\n-* ``optgroup`` - for searching optgroup by its label\n-* ``option`` - for searching an option by its content\n-* ``table`` - for searching a table by its id or caption\n-\n-CSS Selectors\n-~~~~~~~~~~~~~\n-\n-With ``Selector\\CssSelector``, you can use CSS expressions to search page\n-elements:\n+``TraversableElement::findButton``\n+    Looks for a button with the given text, title, id, ``name`` attribute\n+    or ``alt`` attribute (for images used inside links).\n \n-.. code-block:: php\n+``TraversableElement::findField``\n+    Looks for a field (``input``, ``textarea`` or ``select``) with the given\n+    label, placeholder, id or ``name`` attribute.\n \n-    $selector = new \\Behat\\Mink\\Selector\\CssSelector();\n-    $handler  = new \\Behat\\Mink\\Selector\\SelectorsHandler(array(\n-        'css' => $selector\n-    ));\n+.. note::\n \n-    // XPath query to find the link by ID:\n-    $xpath1 = $selector->translateToXPath('a#ID');\n-    $xpath1 = $handler->selectorToXpath('css', 'a#ID');\n+    These shortcuts are returning a single element. If you need to find all\n+    matches, you will need to use ``findAll`` with the :ref:`named selector <named-selector>`.\n \n-XPath Selectors\n-~~~~~~~~~~~~~~~\n+Nested Traversing\n+~~~~~~~~~~~~~~~~~\n \n-And of course, you can use clean XPath queries:\n+Every ``find*()`` method will return a ``Behat\\Mink\\Element\\NodeElement`` instance\n+and ``findAll()`` will return an array of such instances. The fun part is\n+you can make same old traversing on such elements too:\n \n .. code-block:: php\n \n-    $xpath = $handler->selectorToXpath('xpath', '//html');\n+    $registerForm = $page->find('css', 'form.register');\n \n-It's like a proxy method, which will return the same expression you give\n-to it. It's used internally in `find* methods`_.\n+    if (null === $registerForm) {\n+        throw new \\Exception('The element is not found');\n+    }\n \n-``find*`` Methods\n-~~~~~~~~~~~~~~~~~\n+    // find some field INSIDE form with class=\"register\"\n+    $field = $registerForm->findField('Email');\n+\n+.. _selectors:\n+\n+Selectors\n+---------\n \n-So, now we know how to generate XPath queries for specific elements search.\n-But how we actually make this search? The answer is ``find*`` methods,\n-available on ``DocumentElement`` object. You can get this object from session:\n+The ``ElementInterface::find`` and ``ElementInterface::findAll`` methods\n+support several kinds of selectors to find elements.\n+\n+CSS Selector\n+~~~~~~~~~~~~\n+\n+The ``css`` selector type lets you use CSS expressions to search elements\n+in the page:\n \n .. code-block:: php\n \n-    $page = $session->getPage();\n-    $page = $mink->getSession('sahi')->getPage();\n+    $title = $page->find('css', 'h1');\n \n-This object provides two very useful traversing methods:\n+XPath Selector\n+~~~~~~~~~~~~~~\n \n-* ``find()`` - evaluates specific selector on the page content and returns\n-  the last matched element or ``null``:\n+The ``xpath`` selector type lets you use XPath queries to search elements\n+in the page:\n \n-  .. code-block:: php\n+.. code-block:: php\n \n-      $fieldElement = $page->find('named',\n-          array('field', 'id|name|value|label')\n-      );\n-      $elementByCss = $page->find('css', 'h3 > a');\n+    $anchorsWithoutUrl = $page->findAll('xpath', '//a[not(@href)]');\n \n-* ``findAll()`` - evaluates specific selector on the page content and returns\n-  an array of matched elements:\n+.. caution::\n \n-  .. code-block:: php\n+    This selector searches an element inside the current node (which is ``<html>``\n+    for the page object). This means that trying to pass it the XPath of\n+    and element retrieved with ``ElementInterface::getXpath`` will not work\n+    (this query includes the query for the root node). To check whether an\n+    element object still exists in the browser page, use ``ElementInterface::isValid``\n+    instead.\n \n-      $fieldElements = $page->findAll('named',\n-          array('field', 'id|name|value|label')\n-      );\n-      $elementsByCss = $page->findAll('css', 'h3 > a');\n+.. _named-selector:\n \n-Also, there's a bunch of shortcut methods:\n+Named Selector\n+~~~~~~~~~~~~~~\n \n-* ``findById()`` - will search for an element by its ID\n-* ``findLink()`` - will search for a link with ``link`` named selector\n-* ``findButton()`` - will search for a button with ``button`` named selector\n-* ``findField()`` - will search for a field with ``field`` named selector\n+Named selectors provide a set of reusable queries for common needs. For conditions\n+based on the content of elements, the named selector will try to find an\n+exact match first. It will then fallback to partial matching in case there\n+is no result for the exact match. The ``named_exact`` selector type can be\n+used to force using only exact matching. The ``named_partial`` selector type\n+can be used to apply partial matching without preferring exact matches.\n \n-Nested Traversing\n-~~~~~~~~~~~~~~~~~\n+For the named selector type, the second argument of the ``find()`` method\n+is an array with 2 elements: the name of the query to use and the value to\n+search with this query:\n \n-Every ``find*()`` method will return ``Behat\\Mink\\Element\\NodeElement`` instance\n-and ``findAll()`` will return an array of such instances. The fun part is\n-you can make same old traversing on such elements too:\n+.. code-block:: php\n+\n+    $escapedValue = $session->getSelectorsHandler()->xpathLiteral('Go to top');\n+\n+    $topLink = $page->find('named', array('link', $escapedValue);\n+\n+.. caution::\n+\n+    The named selector requires escaping the value as XPath literal. Otherwise\n+    the generated XPath query will be invalid.\n+\n+The following queries are supported by the named selector:\n+\n+``id``","path":"guides/traversing-pages.rst","position":260,"original_position":264,"commit_id":"9882acb3e0676814e04ee05698cd361726ffcaac","original_commit_id":"d2704d5a65ca9f96c8d639536d91ea924fdddc69","user":{"login":"stof","id":439401,"avatar_url":"https://avatars.githubusercontent.com/u/439401?v=3","gravatar_id":"","url":"https://api.github.com/users/stof","html_url":"https://github.com/stof","followers_url":"https://api.github.com/users/stof/followers","following_url":"https://api.github.com/users/stof/following{/other_user}","gists_url":"https://api.github.com/users/stof/gists{/gist_id}","starred_url":"https://api.github.com/users/stof/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stof/subscriptions","organizations_url":"https://api.github.com/users/stof/orgs","repos_url":"https://api.github.com/users/stof/repos","events_url":"https://api.github.com/users/stof/events{/privacy}","received_events_url":"https://api.github.com/users/stof/received_events","type":"User","site_admin":false},"body":"Well, we have lots of changes between Mink 1.5 and 1.6 in the way function works (because they were not defined in a consistent way in Mink 1.5 because of the crappy driver tests). So making the doc highlight the changes from Mink 1.5 to 1.6 might make our job harder (and we are already missing lots of doc)","created_at":"2015-02-21T11:09:55Z","updated_at":"2015-02-21T11:09:55Z","html_url":"https://github.com/minkphp/docs/pull/50#discussion_r25121487","pull_request_url":"https://api.github.com/repos/minkphp/docs/pulls/50","_links":{"self":{"href":"https://api.github.com/repos/minkphp/docs/pulls/comments/25121487"},"html":{"href":"https://github.com/minkphp/docs/pull/50#discussion_r25121487"},"pull_request":{"href":"https://api.github.com/repos/minkphp/docs/pulls/50"}}},"pull_request":{"url":"https://api.github.com/repos/minkphp/docs/pulls/50","id":28650865,"html_url":"https://github.com/minkphp/docs/pull/50","diff_url":"https://github.com/minkphp/docs/pull/50.diff","patch_url":"https://github.com/minkphp/docs/pull/50.patch","issue_url":"https://api.github.com/repos/minkphp/docs/issues/50","number":50,"state":"open","locked":false,"title":"Rewrite the chapter about traversing pages","user":{"login":"stof","id":439401,"avatar_url":"https://avatars.githubusercontent.com/u/439401?v=3","gravatar_id":"","url":"https://api.github.com/users/stof","html_url":"https://github.com/stof","followers_url":"https://api.github.com/users/stof/followers","following_url":"https://api.github.com/users/stof/following{/other_user}","gists_url":"https://api.github.com/users/stof/gists{/gist_id}","starred_url":"https://api.github.com/users/stof/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stof/subscriptions","organizations_url":"https://api.github.com/users/stof/orgs","repos_url":"https://api.github.com/users/stof/repos","events_url":"https://api.github.com/users/stof/events{/privacy}","received_events_url":"https://api.github.com/users/stof/received_events","type":"User","site_admin":false},"body":"Closes #36","created_at":"2015-02-04T16:13:40Z","updated_at":"2015-02-21T11:09:55Z","closed_at":null,"merged_at":null,"merge_commit_sha":"613788b415d82f5ee596b1cbb4ecb325faa3c8e0","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/minkphp/docs/pulls/50/commits","review_comments_url":"https://api.github.com/repos/minkphp/docs/pulls/50/comments","review_comment_url":"https://api.github.com/repos/minkphp/docs/pulls/comments/{number}","comments_url":"https://api.github.com/repos/minkphp/docs/issues/50/comments","statuses_url":"https://api.github.com/repos/minkphp/docs/statuses/9882acb3e0676814e04ee05698cd361726ffcaac","head":{"label":"stof:pages","ref":"pages","sha":"9882acb3e0676814e04ee05698cd361726ffcaac","user":{"login":"stof","id":439401,"avatar_url":"https://avatars.githubusercontent.com/u/439401?v=3","gravatar_id":"","url":"https://api.github.com/users/stof","html_url":"https://github.com/stof","followers_url":"https://api.github.com/users/stof/followers","following_url":"https://api.github.com/users/stof/following{/other_user}","gists_url":"https://api.github.com/users/stof/gists{/gist_id}","starred_url":"https://api.github.com/users/stof/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stof/subscriptions","organizations_url":"https://api.github.com/users/stof/orgs","repos_url":"https://api.github.com/users/stof/repos","events_url":"https://api.github.com/users/stof/events{/privacy}","received_events_url":"https://api.github.com/users/stof/received_events","type":"User","site_admin":false},"repo":{"id":28839329,"name":"mink-docs","full_name":"stof/mink-docs","owner":{"login":"stof","id":439401,"avatar_url":"https://avatars.githubusercontent.com/u/439401?v=3","gravatar_id":"","url":"https://api.github.com/users/stof","html_url":"https://github.com/stof","followers_url":"https://api.github.com/users/stof/followers","following_url":"https://api.github.com/users/stof/following{/other_user}","gists_url":"https://api.github.com/users/stof/gists{/gist_id}","starred_url":"https://api.github.com/users/stof/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stof/subscriptions","organizations_url":"https://api.github.com/users/stof/orgs","repos_url":"https://api.github.com/users/stof/repos","events_url":"https://api.github.com/users/stof/events{/privacy}","received_events_url":"https://api.github.com/users/stof/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/stof/mink-docs","description":"Mink documentation","fork":true,"url":"https://api.github.com/repos/stof/mink-docs","forks_url":"https://api.github.com/repos/stof/mink-docs/forks","keys_url":"https://api.github.com/repos/stof/mink-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/stof/mink-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/stof/mink-docs/teams","hooks_url":"https://api.github.com/repos/stof/mink-docs/hooks","issue_events_url":"https://api.github.com/repos/stof/mink-docs/issues/events{/number}","events_url":"https://api.github.com/repos/stof/mink-docs/events","assignees_url":"https://api.github.com/repos/stof/mink-docs/assignees{/user}","branches_url":"https://api.github.com/repos/stof/mink-docs/branches{/branch}","tags_url":"https://api.github.com/repos/stof/mink-docs/tags","blobs_url":"https://api.github.com/repos/stof/mink-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/stof/mink-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/stof/mink-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/stof/mink-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/stof/mink-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/stof/mink-docs/languages","stargazers_url":"https://api.github.com/repos/stof/mink-docs/stargazers","contributors_url":"https://api.github.com/repos/stof/mink-docs/contributors","subscribers_url":"https://api.github.com/repos/stof/mink-docs/subscribers","subscription_url":"https://api.github.com/repos/stof/mink-docs/subscription","commits_url":"https://api.github.com/repos/stof/mink-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/stof/mink-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/stof/mink-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/stof/mink-docs/issues/comments/{number}","contents_url":"https://api.github.com/repos/stof/mink-docs/contents/{+path}","compare_url":"https://api.github.com/repos/stof/mink-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/stof/mink-docs/merges","archive_url":"https://api.github.com/repos/stof/mink-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/stof/mink-docs/downloads","issues_url":"https://api.github.com/repos/stof/mink-docs/issues{/number}","pulls_url":"https://api.github.com/repos/stof/mink-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/stof/mink-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/stof/mink-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/stof/mink-docs/labels{/name}","releases_url":"https://api.github.com/repos/stof/mink-docs/releases{/id}","created_at":"2015-01-06T00:42:28Z","updated_at":"2015-01-06T00:42:38Z","pushed_at":"2015-02-21T09:41:47Z","git_url":"git://github.com/stof/mink-docs.git","ssh_url":"git@github.com:stof/mink-docs.git","clone_url":"https://github.com/stof/mink-docs.git","svn_url":"https://github.com/stof/mink-docs","homepage":"http://mink.behat.org","size":310,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"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":"minkphp:master","ref":"master","sha":"51e8bd912449aeb9eb82382df6f716c21f71a813","user":{"login":"minkphp","id":10380339,"avatar_url":"https://avatars.githubusercontent.com/u/10380339?v=3","gravatar_id":"","url":"https://api.github.com/users/minkphp","html_url":"https://github.com/minkphp","followers_url":"https://api.github.com/users/minkphp/followers","following_url":"https://api.github.com/users/minkphp/following{/other_user}","gists_url":"https://api.github.com/users/minkphp/gists{/gist_id}","starred_url":"https://api.github.com/users/minkphp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/minkphp/subscriptions","organizations_url":"https://api.github.com/users/minkphp/orgs","repos_url":"https://api.github.com/users/minkphp/repos","events_url":"https://api.github.com/users/minkphp/events{/privacy}","received_events_url":"https://api.github.com/users/minkphp/received_events","type":"Organization","site_admin":false},"repo":{"id":2093133,"name":"docs","full_name":"minkphp/docs","owner":{"login":"minkphp","id":10380339,"avatar_url":"https://avatars.githubusercontent.com/u/10380339?v=3","gravatar_id":"","url":"https://api.github.com/users/minkphp","html_url":"https://github.com/minkphp","followers_url":"https://api.github.com/users/minkphp/followers","following_url":"https://api.github.com/users/minkphp/following{/other_user}","gists_url":"https://api.github.com/users/minkphp/gists{/gist_id}","starred_url":"https://api.github.com/users/minkphp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/minkphp/subscriptions","organizations_url":"https://api.github.com/users/minkphp/orgs","repos_url":"https://api.github.com/users/minkphp/repos","events_url":"https://api.github.com/users/minkphp/events{/privacy}","received_events_url":"https://api.github.com/users/minkphp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/minkphp/docs","description":"Mink documentation","fork":false,"url":"https://api.github.com/repos/minkphp/docs","forks_url":"https://api.github.com/repos/minkphp/docs/forks","keys_url":"https://api.github.com/repos/minkphp/docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/minkphp/docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/minkphp/docs/teams","hooks_url":"https://api.github.com/repos/minkphp/docs/hooks","issue_events_url":"https://api.github.com/repos/minkphp/docs/issues/events{/number}","events_url":"https://api.github.com/repos/minkphp/docs/events","assignees_url":"https://api.github.com/repos/minkphp/docs/assignees{/user}","branches_url":"https://api.github.com/repos/minkphp/docs/branches{/branch}","tags_url":"https://api.github.com/repos/minkphp/docs/tags","blobs_url":"https://api.github.com/repos/minkphp/docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/minkphp/docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/minkphp/docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/minkphp/docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/minkphp/docs/statuses/{sha}","languages_url":"https://api.github.com/repos/minkphp/docs/languages","stargazers_url":"https://api.github.com/repos/minkphp/docs/stargazers","contributors_url":"https://api.github.com/repos/minkphp/docs/contributors","subscribers_url":"https://api.github.com/repos/minkphp/docs/subscribers","subscription_url":"https://api.github.com/repos/minkphp/docs/subscription","commits_url":"https://api.github.com/repos/minkphp/docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/minkphp/docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/minkphp/docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/minkphp/docs/issues/comments/{number}","contents_url":"https://api.github.com/repos/minkphp/docs/contents/{+path}","compare_url":"https://api.github.com/repos/minkphp/docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/minkphp/docs/merges","archive_url":"https://api.github.com/repos/minkphp/docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/minkphp/docs/downloads","issues_url":"https://api.github.com/repos/minkphp/docs/issues{/number}","pulls_url":"https://api.github.com/repos/minkphp/docs/pulls{/number}","milestones_url":"https://api.github.com/repos/minkphp/docs/milestones{/number}","notifications_url":"https://api.github.com/repos/minkphp/docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/minkphp/docs/labels{/name}","releases_url":"https://api.github.com/repos/minkphp/docs/releases{/id}","created_at":"2011-07-23T13:25:15Z","updated_at":"2015-02-21T09:41:45Z","pushed_at":"2015-02-21T09:41:45Z","git_url":"git://github.com/minkphp/docs.git","ssh_url":"git@github.com:minkphp/docs.git","clone_url":"https://github.com/minkphp/docs.git","svn_url":"https://github.com/minkphp/docs","homepage":"http://mink.behat.org","size":464,"stargazers_count":58,"watchers_count":58,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":20,"mirror_url":null,"open_issues_count":13,"forks":20,"open_issues":13,"watchers":58,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/minkphp/docs/pulls/50"},"html":{"href":"https://github.com/minkphp/docs/pull/50"},"issue":{"href":"https://api.github.com/repos/minkphp/docs/issues/50"},"comments":{"href":"https://api.github.com/repos/minkphp/docs/issues/50/comments"},"review_comments":{"href":"https://api.github.com/repos/minkphp/docs/pulls/50/comments"},"review_comment":{"href":"https://api.github.com/repos/minkphp/docs/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/minkphp/docs/pulls/50/commits"},"statuses":{"href":"https://api.github.com/repos/minkphp/docs/statuses/9882acb3e0676814e04ee05698cd361726ffcaac"}}}}