{"action":"created","comment":{"url":"https://api.github.com/repos/PrestaShop/docs/pulls/comments/216658003","pull_request_review_id":154188405,"id":216658003,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNjY1ODAwMw==","diff_hunk":"@@ -7,229 +7,404 @@ weight: 2\n # The Grid component\n {{< minver v=\"1.7.5\" title=\"true\" >}}\n \n-The Grid component specifies for a Grid (Table + action + bulk actions) the definition of columns, the query builder used to retrieve data and how the search filters must be used to retrieve the data displayed.\n+## Introduction\n \n-Not only this give a consistent representation of the data from a \"PHP/Back\" point of view, but the component also provide a minimalist Twig/Javascript layer for the rendering based on a typed View model.\n+Grid component provides tools which allows you to build, manage and display your data tables. The most important parts \n+of Grid component are:\n \n-Because every PrestaShop developer must be able to alter the grid we provide in the core, the following units can be changed:\n+* _Grid definition_ - defines structural information about grid.\n+* _Grid data_ - stores data for grid.\n+* _Search criteria_ - stores sorting, pagination and filters data for grid.\n \n-* The **Columns** (their position, add new ones or update/remove existing ones)\n-* The **Query Builder** (which is used to retrieve the data according to the Search criteria if any)\n+## Grid definition\n \n+This is the most fundamental part of Grid component. Grid definition stores structural information about your Grid\n+that defines:\n \n-Let's see what we need to do to migrate a CRUD-based page, in step-by-step tutorial:\n+* **Id** - unique id for Grid identification. It is used to dispatch hooks and identify Grid in other parts of the application.\n+* **Name** - human readable name, it is recommended to make it translatable.\n+* **Columns** - definition of columns that your Grid table has.\n+* **Filters** - definition of filters that are supported by Grid.\n+* **Grid actions** - actions that apply to a whole grid. It is common to have _\"Export\"_, _\"Import\"_, _\"Show SQL query\"_ and similar grid actions.\n+* **Bulk actions** - actions that can be applied to _multiple_ records in the Grid. It is common to have _\"Delete selected\"_, _\"Enable selected\"_ and similar bulk actions.\n \n-* The **Grid Definition**\n-* The **Grid Data Provider**\n-* The **Grid Query Builder**\n+### Creating Grid Definition\n \n-## Grid Definition\n+You don't have to create the Grid Definition by yourself but instead rely on a `PrestaShop\\PrestaShop\\Core\\Grid\\Definition\\Factory\\GridDefinitionFactoryInterface`.\n+PrestaShop already provides you with an abstract factory implementation `PrestaShop\\PrestaShop\\Core\\Grid\\Definition\\Factory\\AbstractGridDefinitionFactory`\n+that you can use to create Grid definitions.\n \n-The Grid Definition stores the structural information about your Grid:\n+{{% notice note %}}\n+When creating Grid definition it is _recommended_ to use `PrestaShop\\PrestaShop\\Core\\Grid\\Definition\\Factory\\AbstractGridDefinitionFactory`\n+as it allows you to define your structure, but takes care of definition creation.\n+{{% /notice %}}\n \n-* The *Grid name* is the human readable and translatable name;\n-* The *Grid id* is a unique identifier that you can use to select the right grid in case you have multiple ones in a page with the same name;\n-* The *Grid Columns* (`ColumnCollection`) describes the backbone of the grid;\n-* The *Grid actions* (`ActionCollection`) describes the actions at the *grid* level, for exemple the \"export\" or \"access to sql manager\" actions;\n-* The *Row actions* (`RowActionCollection`) describes the actions at the *row* level, like a selector button to edit/access/delete an entry;\n-* The *Bulk actions* (`BulkActionCollection`) describes the actions at the *grid* level, for a bunch of selectable entries: a bulk delete/bulk edition for instance.\n-\n-To create a Definition, you can rely on a Grid Definition Factory.\n-\n-This factory must implement the `DefinitionFactoryInterface` interface which has only one method: `getDefinition()`.\n-The component provides an abstract class (`AbstractGridDefinitionFactory`), with access to the translator and already implements re-usable functions for you:\n+To create new grid definition, we will use `AbstractGridDefinitionFactory`.\n \n ```php\n+namespace PrestaShop\\PrestaShop\\Core\\Grid\\Definition\\Factory;\n+\n use PrestaShop\\PrestaShop\\Core\\Grid\\Definition\\Factory\\AbstractGridDefinitionFactory;\n-use PrestaShop\\PrestaShop\\Core\\Grid\\Action\\GridActionCollection;\n use PrestaShop\\PrestaShop\\Core\\Grid\\Column\\ColumnCollection;\n-use Symfony\\Component\\Form\\Extension\\Core\\Type\\TextType;\n+use PrestaShop\\PrestaShop\\Core\\Grid\\Column\\Type\\DataColumn;\n \n-final class FooGridDefinitionFactory extends AbstractGridDefinitionFactory\n+final class ProductGridDefinitionFactory extends AbstractGridDefinitionFactory\n {\n-    // required\n     protected function getId()\n     {\n-        return 'foo';\n+        return 'products';\n     }\n \n     protected function getName()\n     {\n-        return $this->trans('Foo', [], 'Admin.Advparameters.Feature');\n+        return $this->trans('Products', [], 'Admin.Advparameters.Feature');\n     }\n \n-    // required, empty collection by default\n     protected function getColumns()\n     {\n         return (new ColumnCollection())\n-            ->add((new DataColumn('id_log'))\n-                ->setName($this->trans('Foo', [], 'Global.Actions'))\n+            ->add((new DataColumn('id_product'))\n+                ->setName($this->trans('ID', [], 'Admin.Global'))\n                 ->setOptions([\n-                    'field' => 'foo',\n+                    'field' => 'id_product',\n                 ])\n             )\n-            ...\n-        ;\n-    }\n-\n-    // required, empty collection by default\n-    protected function getFilters()\n-    {\n-        return (new FilterCollection())\n-            ->add((new Filter('foo', TextType::class))\n-                ->setTypeOptions([\n-                    'required' => false,\n+            ->add((new DataColumn('reference'))\n+                ->setName($this->trans('Reference', [], 'Admin.Advparameters.Feature'))\n+                ->setOptions([\n+                    'field' => 'reference',\n                 ])\n-                ->setAssociatedColumn('foo')\n             )\n-        ;\n-    }\n-\n-    // empty collection by default\n-    protected function getGridActions()\n-    {\n-        return (new GridActionCollection())\n-            ->add((new SimpleGridAction('bazAction'))\n-                ->setName($this->trans('Baz action', [], 'Admin.Advparameters.Feature'))\n-                ->setIcon('bar')\n+            ->add((new DataColumn('name'))\n+                ->setName($this->trans('Name', [], 'Admin.Advparameters.Feature'))\n+                ->setOptions([\n+                    'field' => 'name',\n+                ])\n             )\n         ;\n     }\n }\n ```\n \n-## Grid Data Factory\n+We have just created a basic Grid Definition factory in which we defined our Grid's id `products`, translatable\n+name `Products` and 3 data columns.\n+\n+{{% notice note %}}\n+It is _recommended_ to keep your name translatable. To make that easy\n+`AbstractGridDefinitionFactory` provides access to translator via `trans()` method.\n+{{% /notice %}}\n+\n+And finally register your Grid definition factory as a service.\n+\n+```yaml\n+prestashop.core.grid.definition.factory.product_grid_definition_factory:\n+    class: 'PrestaShop\\PrestaShop\\Core\\Grid\\Definition\\Factory\\ProductGridDefinitionFactory'\n+    parent: 'prestashop.core.grid.definition.factory.abstract_grid_definition'\n+    public: true\n+``` \n+\n+Most of the time you won't be creating Grid Definition by yourself but delegating this task to other services.\n+But in case you need to create Grid Definition by hand, here's how you can do that.\n+\n+```php\n+$productsGridDefinitionFactory = $container->get('prestashop.core.grid.definition.factory.product_grid_definition_factory');\n+$productsGridDefinition = $productsGridDefinitionFactory->getDefinition();\n \n-As you can imagine, the responsibility of the Grid Data Factory is to retrieve the Grid data, based on the Grid Definition and the Grid Query Builder.\n+// you can access all information thats was defined\n+$productsGridDefinition->getColumns(); // collection of defined columns\n+$productsGridDefinition->getName(); // \"Products\"\n+$productsGridDefinition->getId(); // \"products\"\n+``` \n \n-The only method available of `GridDataFactoryInterface` is `getData` which returns an instance of `GridData`.\n-A GridData is an **immutable object** used to store and retrieve the grid data, so if you want to alter this data, you must do it in Grid Data Factory *before* the GridData creation.\n+## Search Criteria\n \n-You can rely on the implementation provided in the component `GridDataFactory` or create your owns if you have specific needs. \n+In Grid component Search Criteria is used for Grid's data sorting, paginating & filtering. Search Criteria\n+can be loaded from database, URL query or anywhere else. \n \n-## Grid Query Builder\n+{{% notice info %}}\n+Grid component itself does not manage Search Criteria but instead it provides interface for it.\n+In PrestaShop [Filters component](#) is used to resolve Search Criteria for Grid.\n+{{% /notice %}}\n \n-The Grid Query Builder is responsible of building the right query to retrieve the data according to the Grid definition and Search filters that come from the User request.\n+{{% notice note %}}\n+Search Criteria is immutable. This means that once Search Criteria is created it cannot be changed.\n+{{% /notice %}}\n \n-This is the related interface:\n+### Creating Search Criteria\n+\n+Even though most of the time Search Criteria will be created using [Filters component](#), you can still\n+create it by yourself. Grid provides simple implementation for it.\n+\n+```php\n+use PrestaShop\\PrestaShop\\Core\\Grid\\Search\\SearchCriteria;","path":"src/content/1.7/development/components/grid-component.md","position":195,"original_position":195,"commit_id":"08376487d64957077fe76eb5408997792db5499b","original_commit_id":"08376487d64957077fe76eb5408997792db5499b","user":{"login":"jolelievre","id":13801017,"node_id":"MDQ6VXNlcjEzODAxMDE3","avatar_url":"https://avatars1.githubusercontent.com/u/13801017?v=4","gravatar_id":"","url":"https://api.github.com/users/jolelievre","html_url":"https://github.com/jolelievre","followers_url":"https://api.github.com/users/jolelievre/followers","following_url":"https://api.github.com/users/jolelievre/following{/other_user}","gists_url":"https://api.github.com/users/jolelievre/gists{/gist_id}","starred_url":"https://api.github.com/users/jolelievre/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jolelievre/subscriptions","organizations_url":"https://api.github.com/users/jolelievre/orgs","repos_url":"https://api.github.com/users/jolelievre/repos","events_url":"https://api.github.com/users/jolelievre/events{/privacy}","received_events_url":"https://api.github.com/users/jolelievre/received_events","type":"User","site_admin":false},"body":"ok I get the idea But then if Filters are only used by the Grid, which would appear so since they implement the `SearchCriteriaInterface ` shouldn't they be in the Grid namespace as well","created_at":"2018-09-11T12:57:19Z","updated_at":"2018-09-11T12:57:19Z","html_url":"https://github.com/PrestaShop/docs/pull/135#discussion_r216658003","pull_request_url":"https://api.github.com/repos/PrestaShop/docs/pulls/135","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/PrestaShop/docs/pulls/comments/216658003"},"html":{"href":"https://github.com/PrestaShop/docs/pull/135#discussion_r216658003"},"pull_request":{"href":"https://api.github.com/repos/PrestaShop/docs/pulls/135"}},"in_reply_to_id":216622605},"pull_request":{"url":"https://api.github.com/repos/PrestaShop/docs/pulls/135","id":214349818,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE0MzQ5ODE4","html_url":"https://github.com/PrestaShop/docs/pull/135","diff_url":"https://github.com/PrestaShop/docs/pull/135.diff","patch_url":"https://github.com/PrestaShop/docs/pull/135.patch","issue_url":"https://api.github.com/repos/PrestaShop/docs/issues/135","number":135,"state":"open","locked":false,"title":"Update to Grid docs","user":{"login":"sarjon","id":15143151,"node_id":"MDQ6VXNlcjE1MTQzMTUx","avatar_url":"https://avatars3.githubusercontent.com/u/15143151?v=4","gravatar_id":"","url":"https://api.github.com/users/sarjon","html_url":"https://github.com/sarjon","followers_url":"https://api.github.com/users/sarjon/followers","following_url":"https://api.github.com/users/sarjon/following{/other_user}","gists_url":"https://api.github.com/users/sarjon/gists{/gist_id}","starred_url":"https://api.github.com/users/sarjon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sarjon/subscriptions","organizations_url":"https://api.github.com/users/sarjon/orgs","repos_url":"https://api.github.com/users/sarjon/repos","events_url":"https://api.github.com/users/sarjon/events{/privacy}","received_events_url":"https://api.github.com/users/sarjon/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-09-10T15:14:25Z","updated_at":"2018-09-11T12:57:19Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0300bf8e4d7394178e9c9feb47ac5e46ae0645d3","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/PrestaShop/docs/pulls/135/commits","review_comments_url":"https://api.github.com/repos/PrestaShop/docs/pulls/135/comments","review_comment_url":"https://api.github.com/repos/PrestaShop/docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/PrestaShop/docs/issues/135/comments","statuses_url":"https://api.github.com/repos/PrestaShop/docs/statuses/08376487d64957077fe76eb5408997792db5499b","head":{"label":"sarjon:update-grid-docs","ref":"update-grid-docs","sha":"08376487d64957077fe76eb5408997792db5499b","user":{"login":"sarjon","id":15143151,"node_id":"MDQ6VXNlcjE1MTQzMTUx","avatar_url":"https://avatars3.githubusercontent.com/u/15143151?v=4","gravatar_id":"","url":"https://api.github.com/users/sarjon","html_url":"https://github.com/sarjon","followers_url":"https://api.github.com/users/sarjon/followers","following_url":"https://api.github.com/users/sarjon/following{/other_user}","gists_url":"https://api.github.com/users/sarjon/gists{/gist_id}","starred_url":"https://api.github.com/users/sarjon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sarjon/subscriptions","organizations_url":"https://api.github.com/users/sarjon/orgs","repos_url":"https://api.github.com/users/sarjon/repos","events_url":"https://api.github.com/users/sarjon/events{/privacy}","received_events_url":"https://api.github.com/users/sarjon/received_events","type":"User","site_admin":false},"repo":{"id":145091773,"node_id":"MDEwOlJlcG9zaXRvcnkxNDUwOTE3NzM=","name":"docs","full_name":"sarjon/docs","owner":{"login":"sarjon","id":15143151,"node_id":"MDQ6VXNlcjE1MTQzMTUx","avatar_url":"https://avatars3.githubusercontent.com/u/15143151?v=4","gravatar_id":"","url":"https://api.github.com/users/sarjon","html_url":"https://github.com/sarjon","followers_url":"https://api.github.com/users/sarjon/followers","following_url":"https://api.github.com/users/sarjon/following{/other_user}","gists_url":"https://api.github.com/users/sarjon/gists{/gist_id}","starred_url":"https://api.github.com/users/sarjon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sarjon/subscriptions","organizations_url":"https://api.github.com/users/sarjon/orgs","repos_url":"https://api.github.com/users/sarjon/repos","events_url":"https://api.github.com/users/sarjon/events{/privacy}","received_events_url":"https://api.github.com/users/sarjon/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/sarjon/docs","description":"PrestaShop technical documentation","fork":true,"url":"https://api.github.com/repos/sarjon/docs","forks_url":"https://api.github.com/repos/sarjon/docs/forks","keys_url":"https://api.github.com/repos/sarjon/docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sarjon/docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sarjon/docs/teams","hooks_url":"https://api.github.com/repos/sarjon/docs/hooks","issue_events_url":"https://api.github.com/repos/sarjon/docs/issues/events{/number}","events_url":"https://api.github.com/repos/sarjon/docs/events","assignees_url":"https://api.github.com/repos/sarjon/docs/assignees{/user}","branches_url":"https://api.github.com/repos/sarjon/docs/branches{/branch}","tags_url":"https://api.github.com/repos/sarjon/docs/tags","blobs_url":"https://api.github.com/repos/sarjon/docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sarjon/docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sarjon/docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/sarjon/docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sarjon/docs/statuses/{sha}","languages_url":"https://api.github.com/repos/sarjon/docs/languages","stargazers_url":"https://api.github.com/repos/sarjon/docs/stargazers","contributors_url":"https://api.github.com/repos/sarjon/docs/contributors","subscribers_url":"https://api.github.com/repos/sarjon/docs/subscribers","subscription_url":"https://api.github.com/repos/sarjon/docs/subscription","commits_url":"https://api.github.com/repos/sarjon/docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/sarjon/docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/sarjon/docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/sarjon/docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/sarjon/docs/contents/{+path}","compare_url":"https://api.github.com/repos/sarjon/docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sarjon/docs/merges","archive_url":"https://api.github.com/repos/sarjon/docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sarjon/docs/downloads","issues_url":"https://api.github.com/repos/sarjon/docs/issues{/number}","pulls_url":"https://api.github.com/repos/sarjon/docs/pulls{/number}","milestones_url":"https://api.github.com/repos/sarjon/docs/milestones{/number}","notifications_url":"https://api.github.com/repos/sarjon/docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sarjon/docs/labels{/name}","releases_url":"https://api.github.com/repos/sarjon/docs/releases{/id}","deployments_url":"https://api.github.com/repos/sarjon/docs/deployments","created_at":"2018-08-17T08:10:08Z","updated_at":"2018-08-26T15:00:48Z","pushed_at":"2018-09-11T06:47:00Z","git_url":"git://github.com/sarjon/docs.git","ssh_url":"git@github.com:sarjon/docs.git","clone_url":"https://github.com/sarjon/docs.git","svn_url":"https://github.com/sarjon/docs","homepage":"http://devdocs.prestashop.com","size":33856,"stargazers_count":0,"watchers_count":0,"language":"CSS","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"PrestaShop:master","ref":"master","sha":"15f3cb50282f7fe719dd7d720ceaa459b4217bfa","user":{"login":"PrestaShop","id":2815696,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4MTU2OTY=","avatar_url":"https://avatars3.githubusercontent.com/u/2815696?v=4","gravatar_id":"","url":"https://api.github.com/users/PrestaShop","html_url":"https://github.com/PrestaShop","followers_url":"https://api.github.com/users/PrestaShop/followers","following_url":"https://api.github.com/users/PrestaShop/following{/other_user}","gists_url":"https://api.github.com/users/PrestaShop/gists{/gist_id}","starred_url":"https://api.github.com/users/PrestaShop/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PrestaShop/subscriptions","organizations_url":"https://api.github.com/users/PrestaShop/orgs","repos_url":"https://api.github.com/users/PrestaShop/repos","events_url":"https://api.github.com/users/PrestaShop/events{/privacy}","received_events_url":"https://api.github.com/users/PrestaShop/received_events","type":"Organization","site_admin":false},"repo":{"id":55243300,"node_id":"MDEwOlJlcG9zaXRvcnk1NTI0MzMwMA==","name":"docs","full_name":"PrestaShop/docs","owner":{"login":"PrestaShop","id":2815696,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4MTU2OTY=","avatar_url":"https://avatars3.githubusercontent.com/u/2815696?v=4","gravatar_id":"","url":"https://api.github.com/users/PrestaShop","html_url":"https://github.com/PrestaShop","followers_url":"https://api.github.com/users/PrestaShop/followers","following_url":"https://api.github.com/users/PrestaShop/following{/other_user}","gists_url":"https://api.github.com/users/PrestaShop/gists{/gist_id}","starred_url":"https://api.github.com/users/PrestaShop/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PrestaShop/subscriptions","organizations_url":"https://api.github.com/users/PrestaShop/orgs","repos_url":"https://api.github.com/users/PrestaShop/repos","events_url":"https://api.github.com/users/PrestaShop/events{/privacy}","received_events_url":"https://api.github.com/users/PrestaShop/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/PrestaShop/docs","description":"PrestaShop technical documentation","fork":false,"url":"https://api.github.com/repos/PrestaShop/docs","forks_url":"https://api.github.com/repos/PrestaShop/docs/forks","keys_url":"https://api.github.com/repos/PrestaShop/docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PrestaShop/docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PrestaShop/docs/teams","hooks_url":"https://api.github.com/repos/PrestaShop/docs/hooks","issue_events_url":"https://api.github.com/repos/PrestaShop/docs/issues/events{/number}","events_url":"https://api.github.com/repos/PrestaShop/docs/events","assignees_url":"https://api.github.com/repos/PrestaShop/docs/assignees{/user}","branches_url":"https://api.github.com/repos/PrestaShop/docs/branches{/branch}","tags_url":"https://api.github.com/repos/PrestaShop/docs/tags","blobs_url":"https://api.github.com/repos/PrestaShop/docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PrestaShop/docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PrestaShop/docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/PrestaShop/docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PrestaShop/docs/statuses/{sha}","languages_url":"https://api.github.com/repos/PrestaShop/docs/languages","stargazers_url":"https://api.github.com/repos/PrestaShop/docs/stargazers","contributors_url":"https://api.github.com/repos/PrestaShop/docs/contributors","subscribers_url":"https://api.github.com/repos/PrestaShop/docs/subscribers","subscription_url":"https://api.github.com/repos/PrestaShop/docs/subscription","commits_url":"https://api.github.com/repos/PrestaShop/docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/PrestaShop/docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/PrestaShop/docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/PrestaShop/docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/PrestaShop/docs/contents/{+path}","compare_url":"https://api.github.com/repos/PrestaShop/docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PrestaShop/docs/merges","archive_url":"https://api.github.com/repos/PrestaShop/docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PrestaShop/docs/downloads","issues_url":"https://api.github.com/repos/PrestaShop/docs/issues{/number}","pulls_url":"https://api.github.com/repos/PrestaShop/docs/pulls{/number}","milestones_url":"https://api.github.com/repos/PrestaShop/docs/milestones{/number}","notifications_url":"https://api.github.com/repos/PrestaShop/docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PrestaShop/docs/labels{/name}","releases_url":"https://api.github.com/repos/PrestaShop/docs/releases{/id}","deployments_url":"https://api.github.com/repos/PrestaShop/docs/deployments","created_at":"2016-04-01T15:40:38Z","updated_at":"2018-09-03T08:43:48Z","pushed_at":"2018-09-11T12:47:33Z","git_url":"git://github.com/PrestaShop/docs.git","ssh_url":"git@github.com:PrestaShop/docs.git","clone_url":"https://github.com/PrestaShop/docs.git","svn_url":"https://github.com/PrestaShop/docs","homepage":"http://devdocs.prestashop.com","size":33846,"stargazers_count":42,"watchers_count":42,"language":"CSS","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":59,"mirror_url":null,"archived":false,"open_issues_count":22,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":59,"open_issues":22,"watchers":42,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/PrestaShop/docs/pulls/135"},"html":{"href":"https://github.com/PrestaShop/docs/pull/135"},"issue":{"href":"https://api.github.com/repos/PrestaShop/docs/issues/135"},"comments":{"href":"https://api.github.com/repos/PrestaShop/docs/issues/135/comments"},"review_comments":{"href":"https://api.github.com/repos/PrestaShop/docs/pulls/135/comments"},"review_comment":{"href":"https://api.github.com/repos/PrestaShop/docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/PrestaShop/docs/pulls/135/commits"},"statuses":{"href":"https://api.github.com/repos/PrestaShop/docs/statuses/08376487d64957077fe76eb5408997792db5499b"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"jolelievre"}}