├── .bowerrc
├── src
├── .bowerrc
├── img
│ └── avatar.png
├── templates
│ ├── spinner.html
│ ├── list.html
│ ├── create.html
│ ├── edit.html
│ ├── searchform.html
│ ├── card.html
│ └── form.html
├── app
│ ├── filters.js
│ ├── app.main.js
│ ├── directives.js
│ ├── app.routes.js
│ ├── controllers.js
│ └── services.js
├── css
│ ├── main.css
│ └── main.scss
└── index.html
├── .gitignore
├── .prettierrc
├── package.json
├── bower.json
├── README.md
└── data
└── orig-db.json
/.bowerrc:
--------------------------------------------------------------------------------
1 | {
2 | "directory": "src/libs"
3 | }
--------------------------------------------------------------------------------
/src/.bowerrc:
--------------------------------------------------------------------------------
1 | {
2 | "directory": "libs"
3 | }
--------------------------------------------------------------------------------
/src/img/avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jawache/angularjs-migration/HEAD/src/img/avatar.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | logs/*
2 | !.gitkeep
3 | node_modules/
4 | bower_components/
5 | tmp
6 | .DS_Store
7 | .idea
8 | src/libs
9 | data/db.json
--------------------------------------------------------------------------------
/src/templates/spinner.html:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
{{ message }}
6 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "printWidth": 80,
3 | "tabWidth": 2,
4 | "useTabs": false,
5 | "singleQuote": false,
6 | "bracketSpacing": false,
7 | "arrowParens": "avoid"
8 | }
9 |
10 |
--------------------------------------------------------------------------------
/src/app/filters.js:
--------------------------------------------------------------------------------
1 | angular.module("codecraft").filter("defaultImage", function() {
2 | return function(input, param) {
3 | if (!param) {
4 | param = "/img/avatar.png";
5 | }
6 | if (!input) {
7 | return param;
8 | }
9 | return input;
10 | };
11 | });
12 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angularjs-migrate",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "server": "cp ./data/orig-db.json ./data/db.json && json-server --watch ./data/db.json",
8 | "setup": "bower install",
9 | "start": "cd src && serve"
10 | },
11 | "author": "",
12 | "license": "ISC",
13 | "dependencies": {},
14 | "devDependencies": {
15 | "bower": "^1.8.0",
16 | "json-server": "^0.9.6",
17 | "serve": "^5.1.2"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/app/app.main.js:
--------------------------------------------------------------------------------
1 | angular
2 | .module("codecraft", [
3 | "ngResource",
4 | "infinite-scroll",
5 | "angularSpinner",
6 | "jcs-autoValidate",
7 | "angular-ladda",
8 | "mgcrea.ngStrap",
9 | "toaster",
10 | "ngAnimate",
11 | "ui.router"
12 | ])
13 | .config(function(
14 | $httpProvider,
15 | $resourceProvider,
16 | laddaProvider,
17 | $datepickerProvider
18 | ) {
19 | laddaProvider.setOption({
20 | style: "expand-right"
21 | });
22 | angular.extend($datepickerProvider.defaults, {
23 | dateFormat: "d/M/yyyy",
24 | autoclose: true
25 | });
26 | });
27 |
--------------------------------------------------------------------------------
/src/templates/list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
No results found for search term '{{ contacts.search }}'
17 |
18 |
19 |
20 |
22 |
--------------------------------------------------------------------------------
/src/templates/create.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/app/directives.js:
--------------------------------------------------------------------------------
1 | angular
2 | .module("codecraft")
3 | .directive("ccCard", function() {
4 | return {
5 | restrict: "AE",
6 | templateUrl: "templates/card.html",
7 | scope: {
8 | user: "="
9 | },
10 | controller: function($scope, ContactService) {
11 | $scope.isDeleting = false;
12 | $scope.deleteUser = function() {
13 | $scope.isDeleting = true;
14 | ContactService.removeContact($scope.user).then(function() {
15 | $scope.isDeleting = false;
16 | });
17 | };
18 | }
19 | };
20 | })
21 | .directive("ccSpinner", function() {
22 | return {
23 | restrict: "AE",
24 | templateUrl: "templates/spinner.html",
25 | scope: {
26 | isLoading: "=",
27 | message: "@"
28 | }
29 | };
30 | });
31 |
--------------------------------------------------------------------------------
/src/templates/edit.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ng1-migrate",
3 | "description": "",
4 | "main": "index.js",
5 | "authors": [
6 | "Asim Hussain "
7 | ],
8 | "license": "ISC",
9 | "homepage": "",
10 | "ignore": [
11 | "**/.*",
12 | "node_modules",
13 | "bower_components",
14 | "app/libs",
15 | "test",
16 | "tests"
17 | ],
18 | "dependencies": {
19 | "angular": "1.4.0",
20 | "angular-animate": "1.4.0",
21 | "angular-auto-validate": "^1.19.6",
22 | "angular-ladda": "^0.4.3",
23 | "angular-resource": "1.4.0",
24 | "angular-strap": "^2.3.12",
25 | "AngularJS-Toaster": "angularjs-toaster#^2.1.0",
26 | "bootstrap": "3.3.2",
27 | "bootstrap-additions": "0.3.1",
28 | "font-awesome": "4.3.0",
29 | "jquery": "2.1.3",
30 | "ngInfiniteScroll": "1.2.1",
31 | "angular-ui-router": "ui-router#^0.4.2",
32 | "angular-spinner": "^1.0.1"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AngularJS Migration Workshop
2 |
3 | This the sample project used in the workshop by [Asim Hussain](http://twitter.com/jawache) from [codecraft.tv](codecraft.tv) on _Migrating from AngularJS_
4 |
5 | ## Setup
6 |
7 | The project is bootstrapped using npm but at the same time since this is a use case of migrating an old AngularJS project created some time ago we use bower to install the dependencies since that was the norm until a few years ago.
8 |
9 | `npm run setup`
10 |
11 | ## Running
12 |
13 | We have a simple server side which we run using
14 |
15 | `npm run server` - this runs a json-server and refreshes the data bases on each run so the deleted contacts will appear again.
16 |
17 | To run the application we type
18 |
19 | `npm start` - this loads the application using a local webserver, check the console for the port number to use.
20 |
21 | The application is a simple contacts application where you can search, create or edit a contact.
--------------------------------------------------------------------------------
/src/templates/searchform.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/app/app.routes.js:
--------------------------------------------------------------------------------
1 | angular
2 | .module("codecraft")
3 | .config(function($stateProvider, $urlRouterProvider) {
4 | $stateProvider
5 | .state("list", {
6 | url: "/",
7 | views: {
8 | main: {
9 | templateUrl: "templates/list.html",
10 | controller: "PersonListController"
11 | },
12 | search: {
13 | templateUrl: "templates/searchform.html",
14 | controller: "SearchController"
15 | }
16 | }
17 | })
18 | .state("edit", {
19 | url: "/edit/:email",
20 | views: {
21 | main: {
22 | templateUrl: "templates/edit.html",
23 | controller: "PersonEditController"
24 | }
25 | }
26 | })
27 | .state("create", {
28 | url: "/create",
29 | views: {
30 | main: {
31 | templateUrl: "templates/create.html",
32 | controller: "PersonCreateController"
33 | }
34 | }
35 | });
36 |
37 | $urlRouterProvider.otherwise("/");
38 | });
39 |
--------------------------------------------------------------------------------
/src/templates/card.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
![]()
8 |
9 |
10 |
{{ user.name }}
11 |
13 |
14 |
{{ user.city }}, {{ user.country }}
15 |
16 |
17 |
18 |
19 | {{ user.email }}
20 |
21 |
22 | {{ user.birthdate | date:"longDate"}}
23 |
24 |
25 |
26 |
28 |
29 | Edit
30 |
31 |
32 |
35 |
36 | Delete
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/src/app/controllers.js:
--------------------------------------------------------------------------------
1 | angular
2 | .module("codecraft")
3 | .controller("PersonCreateController", function(
4 | $scope,
5 | $state,
6 | ContactService
7 | ) {
8 | $scope.contacts = ContactService;
9 | $scope.person = {};
10 |
11 | $scope.save = function() {
12 | console.log("createContact");
13 | $scope.contacts.createContact($scope.person).then(function() {
14 | $state.go("list");
15 | });
16 | };
17 | })
18 | .controller("PersonEditController", function(
19 | $scope,
20 | $stateParams,
21 | $state,
22 | ContactService
23 | ) {
24 | $scope.contacts = ContactService;
25 | $scope.person = $scope.contacts.getPerson($stateParams.email);
26 |
27 | $scope.save = function() {
28 | $scope.contacts.updateContact($scope.person).then(function() {
29 | $state.go("list");
30 | });
31 | };
32 |
33 | $scope.remove = function() {
34 | $scope.contacts.removeContact($scope.person).then(function() {
35 | $state.go("list");
36 | });
37 | };
38 | })
39 | .controller("PersonListController", function($scope, ContactService) {
40 | $scope.contacts = ContactService;
41 | })
42 | .controller("SearchController", function($scope, ContactService) {
43 | $scope.contacts = ContactService;
44 |
45 | $scope.loadMore = function() {
46 | $scope.contacts.loadMore();
47 | };
48 | });
49 |
--------------------------------------------------------------------------------
/src/css/main.css:
--------------------------------------------------------------------------------
1 | body {
2 | padding-top: 50px; }
3 |
4 | .main-content {
5 | padding: 40px 15px; }
6 |
7 | .spinner {
8 | position: relative;
9 | width: 50px;
10 | height: 50px;
11 | margin: 0 auto;
12 | padding: 40px 0; }
13 | .spinner p {
14 | margin-top: 20px; }
15 |
16 | .table .col-1 {
17 | width: 10%; }
18 | .table .col-2 {
19 | width: 30%; }
20 | .table .col-3 {
21 | width: 30%; }
22 | .table .col-4 {
23 | width: 30%; }
24 | .table tr td {
25 | vertical-align: middle; }
26 | .table tr td .profile-photo {
27 | width: 30px;
28 | height: 30px; }
29 |
30 | .modal-backdrop.am-fade {
31 | opacity: .5;
32 | transition: opacity .15s linear; }
33 | .modal-backdrop.am-fade.ng-enter {
34 | opacity: 0; }
35 | .modal-backdrop.am-fade.ng-enter.ng-enter-active {
36 | opacity: .5; }
37 | .modal-backdrop.am-fade.ng-leave {
38 | opacity: .5; }
39 | .modal-backdrop.am-fade.ng-leave.ng-leave-active {
40 | opacity: 0; }
41 |
42 | .sortables {
43 | display: inline-block;
44 | position: relative;
45 | width: 20px;
46 | height: 20px;
47 | vertical-align: middle; }
48 | .sortables span:first-child {
49 | position: absolute;
50 | top: 0; }
51 | .sortables span:last-child {
52 | position: absolute;
53 | bottom: 0; }
54 | .sortables span {
55 | color: lightgray;
56 | font-size: 18px; }
57 | .sortables span:hover {
58 | color: #002a80; }
59 |
--------------------------------------------------------------------------------
/src/css/main.scss:
--------------------------------------------------------------------------------
1 | body {
2 | padding-top: 50px;
3 | }
4 |
5 | .main-content {
6 | padding: 40px 15px;
7 | }
8 |
9 | .spinner {
10 | position: relative;
11 | width: 50px;
12 | height: 50px;
13 | margin: 0 auto;
14 | padding: 40px 0;
15 | p {
16 | margin-top: 20px;
17 | }
18 | }
19 |
20 | .table {
21 | .col-1 {
22 | width: 10%;
23 | }
24 | .col-2 {
25 | width: 30%;
26 | }
27 | .col-3 {
28 | width: 30%;
29 | }
30 | .col-4 {
31 | width: 30%;
32 | }
33 | tr {
34 | td {
35 | vertical-align: middle;
36 | .profile-photo {
37 | width: 30px;
38 | height: 30px;
39 | }
40 | }
41 | }
42 | }
43 |
44 | .modal-backdrop.am-fade {
45 | opacity: .5;
46 | transition: opacity .15s linear;
47 | &.ng-enter {
48 | opacity: 0;
49 | &.ng-enter-active {
50 | opacity: .5;
51 | }
52 | }
53 | &.ng-leave {
54 | opacity: .5;
55 | &.ng-leave-active {
56 | opacity: 0;
57 | }
58 | }
59 | }
60 |
61 | .sortables {
62 | display: inline-block;
63 | position: relative;
64 | width: 20px;
65 | height: 20px;
66 | vertical-align: middle;
67 | span:first-child {
68 | position: absolute;
69 | top: 0;
70 | }
71 | span:last-child {
72 | position: absolute;
73 | bottom: 0;
74 | }
75 | span {
76 | color: lightgray;
77 | font-size: 18px;
78 | }
79 | span:hover {
80 | color: #002a80;
81 | }
82 | }
--------------------------------------------------------------------------------
/src/templates/form.html:
--------------------------------------------------------------------------------
1 |
11 |
21 |
30 |
43 |
54 |
64 |
74 |
75 |
85 |
95 |
96 |
--------------------------------------------------------------------------------
/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Contacts
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
39 |
40 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/src/app/services.js:
--------------------------------------------------------------------------------
1 | angular
2 | .module("codecraft")
3 | .factory("Contact", function($resource) {
4 | return $resource(
5 | "http://localhost:3000/contacts/:id",
6 | {id: "@id"},
7 | {
8 | update: {
9 | method: "PUT"
10 | }
11 | }
12 | );
13 | })
14 | .factory("ContactService", function(Contact, $rootScope, $q, toaster) {
15 | var self = {
16 | getPerson: function(email) {
17 | console.log(email);
18 | for (var i = 0; i < self.persons.length; i++) {
19 | var obj = self.persons[i];
20 | if (obj.email == email) {
21 | return obj;
22 | }
23 | }
24 | },
25 | page: 1,
26 | hasMore: true,
27 | isLoading: false,
28 | isSaving: false,
29 | persons: [],
30 | search: null,
31 | sorting: "name",
32 | ordering: "ASC",
33 | doSearch: function() {
34 | self.hasMore = true;
35 | self.page = 1;
36 | self.persons = [];
37 | self.loadContacts();
38 | },
39 | doOrder: function() {
40 | self.hasMore = true;
41 | self.page = 1;
42 | self.persons = [];
43 | self.loadContacts();
44 | },
45 | loadContacts: function() {
46 | if (self.hasMore && !self.isLoading) {
47 | self.isLoading = true;
48 |
49 | var params = {
50 | _page: self.page,
51 | _sort: self.sorting,
52 | _order: self.ordering,
53 | q: self.search
54 | };
55 |
56 | Contact.query(params, function(data) {
57 | console.debug(data);
58 | angular.forEach(data, function(person) {
59 | self.persons.push(new Contact(person));
60 | });
61 |
62 | if (data.length === 0) {
63 | self.hasMore = false;
64 | }
65 | self.isLoading = false;
66 | });
67 | }
68 | },
69 | loadMore: function() {
70 | if (self.hasMore && !self.isLoading) {
71 | self.page += 1;
72 | self.loadContacts();
73 | }
74 | },
75 | updateContact: function(person) {
76 | var d = $q.defer();
77 | self.isSaving = true;
78 | person.$update().then(function() {
79 | self.isSaving = false;
80 | toaster.pop("success", "Updated " + person.name);
81 | d.resolve();
82 | });
83 | return d.promise;
84 | },
85 | removeContact: function(person) {
86 | var d = $q.defer();
87 | self.isDeleting = true;
88 | name = person.name;
89 | person.$remove().then(function() {
90 | self.isDeleting = false;
91 | var index = self.persons.indexOf(person);
92 | self.persons.splice(index, 1);
93 | toaster.pop("success", "Deleted " + name);
94 | d.resolve();
95 | });
96 | return d.promise;
97 | },
98 | createContact: function(person) {
99 | var d = $q.defer();
100 | self.isSaving = true;
101 | Contact.save(person).$promise.then(function() {
102 | self.isSaving = false;
103 | self.hasMore = true;
104 | self.page = 1;
105 | self.persons = [];
106 | self.loadContacts();
107 | toaster.pop("success", "Created " + person.name);
108 | d.resolve();
109 | });
110 | return d.promise;
111 | }
112 | };
113 |
114 | self.loadContacts();
115 |
116 | return self;
117 | });
118 |
--------------------------------------------------------------------------------
/data/orig-db.json:
--------------------------------------------------------------------------------
1 | {
2 | "contacts": [
3 | {
4 | "id": 697,
5 | "createdTs": "2016-12-19T19:43:25.036704Z",
6 | "updatedTs": "2016-12-19T19:43:25.036750Z",
7 | "name": "Ashly O'Hara",
8 | "email": "hilton_reichel@troy.net",
9 | "sex": "M",
10 | "birthdate": "1973-07-01T04:23:31.036240Z",
11 | "phonenumber": "1-8106-122-6925",
12 | "address": "1379 Zulauf Well",
13 | "city": "Walkerborough",
14 | "country": "Wales",
15 | "photo": "https://randomuser.me/api/portraits/men/40.jpg",
16 | "favorite": false
17 | },
18 | {
19 | "id": 695,
20 | "createdTs": "2016-12-19T19:43:25.031640Z",
21 | "updatedTs": "2016-12-19T19:43:25.031670Z",
22 | "name": "Bell Schaefer",
23 | "email": "jade@raphael.info",
24 | "sex": "M",
25 | "birthdate": "1981-02-11T08:35:53.031223Z",
26 | "phonenumber": "1-1009-265-3975 x0010",
27 | "address": "89579 Koepp Roads",
28 | "city": "D'Amoreland",
29 | "country": "England",
30 | "photo": "https://randomuser.me/api/portraits/men/38.jpg",
31 | "favorite": false
32 | },
33 | {
34 | "id": 705,
35 | "createdTs": "2016-12-19T19:43:25.050772Z",
36 | "updatedTs": "2016-12-19T19:43:25.050807Z",
37 | "name": "Benedict VonRueden",
38 | "email": "karina@margret.net",
39 | "sex": "F",
40 | "birthdate": "1978-07-12T21:44:44.050318Z",
41 | "phonenumber": "157-986-37107 x687",
42 | "address": "2910 Mortimer Hollow",
43 | "city": "Lake Tara",
44 | "country": "Scotland",
45 | "photo": "https://randomuser.me/api/portraits/women/48.jpg",
46 | "favorite": false
47 | },
48 | {
49 | "id": 680,
50 | "createdTs": "2016-12-19T19:43:25.004124Z",
51 | "updatedTs": "2016-12-19T19:43:25.004164Z",
52 | "name": "Christine Jacobs",
53 | "email": "reina_stehr@elsa.name",
54 | "sex": "F",
55 | "birthdate": "2000-07-03T01:57:13.003634Z",
56 | "phonenumber": "646.634.3900",
57 | "address": "2814 Howe Ways",
58 | "city": "East Katlynnhaven",
59 | "country": "Northern Ireland",
60 | "photo": "https://randomuser.me/api/portraits/women/23.jpg",
61 | "favorite": false
62 | },
63 | {
64 | "id": 691,
65 | "createdTs": "2016-12-19T19:43:25.024227Z",
66 | "updatedTs": "2016-12-19T19:43:25.024271Z",
67 | "name": "Clyde Nikolaus II",
68 | "email": "mckenzie@blaise.me",
69 | "sex": "F",
70 | "birthdate": "1974-09-25T22:05:54.023736Z",
71 | "phonenumber": "(51010)967-7197",
72 | "address": "129 Maverick Bridge",
73 | "city": "North Junius",
74 | "country": "England",
75 | "photo": "https://randomuser.me/api/portraits/women/34.jpg",
76 | "favorite": false
77 | },
78 | {
79 | "id": 664,
80 | "createdTs": "2016-12-19T19:43:24.972417Z",
81 | "updatedTs": "2016-12-19T19:43:24.972455Z",
82 | "name": "Dangelo Boehm",
83 | "email": "jerry.cole@ben.net",
84 | "sex": "F",
85 | "birthdate": "1979-07-13T10:24:37.971940Z",
86 | "phonenumber": "1-413-997-09310",
87 | "address": "82186 Macejkovic Corner",
88 | "city": "North Donatoberg",
89 | "country": "Wales",
90 | "photo": "https://randomuser.me/api/portraits/women/7.jpg",
91 | "favorite": false
92 | },
93 | {
94 | "id": 698,
95 | "createdTs": "2016-12-19T19:43:25.038462Z",
96 | "updatedTs": "2016-12-19T19:43:25.038499Z",
97 | "name": "Delfina Anderson",
98 | "email": "deanna_schmitt@zoey.tv",
99 | "sex": "M",
100 | "birthdate": "1985-02-01T06:30:41.037985Z",
101 | "phonenumber": "(239)926-26103",
102 | "address": "6319 Mariana Vista",
103 | "city": "Lake Breana",
104 | "country": "England",
105 | "photo": "https://randomuser.me/api/portraits/men/41.jpg",
106 | "favorite": false
107 | },
108 | {
109 | "id": 702,
110 | "createdTs": "2016-12-19T19:43:25.045023Z",
111 | "updatedTs": "2016-12-19T19:43:25.045058Z",
112 | "name": "Dock Gislason",
113 | "email": "annabelle@sofia.ca",
114 | "sex": "F",
115 | "birthdate": "1989-06-09T06:37:49.044568Z",
116 | "phonenumber": "1-408-128-1614 x238",
117 | "address": "943 Johnny Summit",
118 | "city": "Runolfsdottirside",
119 | "country": "Northern Ireland",
120 | "photo": "https://randomuser.me/api/portraits/women/45.jpg",
121 | "favorite": false
122 | },
123 | {
124 | "id": 658,
125 | "createdTs": "2016-12-19T19:43:24.960599Z",
126 | "updatedTs": "2016-12-19T19:43:24.960637Z",
127 | "name": "Domingo White",
128 | "email": "jaron.shields@angie.biz",
129 | "sex": "M",
130 | "birthdate": "1985-11-01T06:59:06.960092Z",
131 | "phonenumber": "(498)2105-4380",
132 | "address": "258 Hank Brooks",
133 | "city": "West Lilliana",
134 | "country": "England",
135 | "photo": "https://randomuser.me/api/portraits/men/1.jpg",
136 | "favorite": false
137 | },
138 | {
139 | "id": 700,
140 | "createdTs": "2016-12-19T19:43:25.041720Z",
141 | "updatedTs": "2016-12-19T19:43:25.041757Z",
142 | "name": "Drake Murray",
143 | "email": "lavinia_walsh@emanuel.us",
144 | "sex": "F",
145 | "birthdate": "1992-08-05T22:48:15.041268Z",
146 | "phonenumber": "(936)532-4061",
147 | "address": "38105 Weimann Cliffs",
148 | "city": "New Josiannetown",
149 | "country": "Northern Ireland",
150 | "photo": "https://randomuser.me/api/portraits/women/43.jpg",
151 | "favorite": false
152 | },
153 | {
154 | "id": 679,
155 | "createdTs": "2016-12-19T19:43:25.002355Z",
156 | "updatedTs": "2016-12-19T19:43:25.002398Z",
157 | "name": "Emilio Christiansen",
158 | "email": "kennedy@lorna.org",
159 | "sex": "F",
160 | "birthdate": "1990-10-02T22:36:01.001872Z",
161 | "phonenumber": "1-671-879-101003",
162 | "address": "721 Daugherty Corner",
163 | "city": "Russelmouth",
164 | "country": "Wales",
165 | "photo": "https://randomuser.me/api/portraits/women/22.jpg",
166 | "favorite": false
167 | },
168 | {
169 | "id": 685,
170 | "createdTs": "2016-12-19T19:43:25.012978Z",
171 | "updatedTs": "2016-12-19T19:43:25.013017Z",
172 | "name": "Emmie Sporer",
173 | "email": "nels.johns@verlie.com",
174 | "sex": "M",
175 | "birthdate": "1995-07-18T15:19:44.012503Z",
176 | "phonenumber": "(1001)159-76210",
177 | "address": "19729 Jamarcus Views",
178 | "city": "Aufderharberg",
179 | "country": "Scotland",
180 | "photo": "https://randomuser.me/api/portraits/men/28.jpg",
181 | "favorite": false
182 | },
183 | {
184 | "id": 706,
185 | "createdTs": "2016-12-19T19:43:25.053144Z",
186 | "updatedTs": "2016-12-19T19:43:25.053182Z",
187 | "name": "Enos Osinski",
188 | "email": "merle@emilio.biz",
189 | "sex": "M",
190 | "birthdate": "1977-07-15T05:03:12.052687Z",
191 | "phonenumber": "1-251-1022-104110 x47110",
192 | "address": "596 Hansen Motorway",
193 | "city": "McCluremouth",
194 | "country": "England",
195 | "photo": "https://randomuser.me/api/portraits/men/49.jpg",
196 | "favorite": false
197 | },
198 | {
199 | "id": 674,
200 | "createdTs": "2016-12-19T19:43:24.993090Z",
201 | "updatedTs": "2016-12-19T19:43:24.993123Z",
202 | "name": "Era Satterfield PhD",
203 | "email": "carmine@milton.biz",
204 | "sex": "M",
205 | "birthdate": "1987-06-23T19:46:12.992692Z",
206 | "phonenumber": "1-10510-1104-3789",
207 | "address": "352 Christiansen Plain",
208 | "city": "Heidenreichshire",
209 | "country": "Northern Ireland",
210 | "photo": "https://randomuser.me/api/portraits/men/17.jpg",
211 | "favorite": false
212 | },
213 | {
214 | "id": 663,
215 | "createdTs": "2016-12-19T19:43:24.970635Z",
216 | "updatedTs": "2016-12-19T19:43:24.970675Z",
217 | "name": "Everett Erdman",
218 | "email": "brandt@jalon.me",
219 | "sex": "M",
220 | "birthdate": "1977-12-10T09:33:00.970103Z",
221 | "phonenumber": "439.618.8041",
222 | "address": "825 Sylvester Junction",
223 | "city": "New Aricside",
224 | "country": "Northern Ireland",
225 | "photo": "https://randomuser.me/api/portraits/men/6.jpg",
226 | "favorite": false
227 | },
228 | {
229 | "id": 683,
230 | "createdTs": "2016-12-19T19:43:25.009528Z",
231 | "updatedTs": "2016-12-19T19:43:25.009566Z",
232 | "name": "Ewell Hegmann",
233 | "email": "marcia_kessler@suzanne.net",
234 | "sex": "M",
235 | "birthdate": "1992-07-19T00:16:07.009035Z",
236 | "phonenumber": "1-361-455-2962",
237 | "address": "494 Ward Light",
238 | "city": "Einoshire",
239 | "country": "Scotland",
240 | "photo": "https://randomuser.me/api/portraits/men/26.jpg",
241 | "favorite": false
242 | },
243 | {
244 | "id": 701,
245 | "createdTs": "2016-12-19T19:43:25.043351Z",
246 | "updatedTs": "2016-12-19T19:43:25.043381Z",
247 | "name": "Finn Shanahan",
248 | "email": "josephine@carlos.tv",
249 | "sex": "M",
250 | "birthdate": "1971-05-17T09:21:15.042903Z",
251 | "phonenumber": "1-354-3104-21029 x59324",
252 | "address": "071034 Humberto Pike",
253 | "city": "Curtbury",
254 | "country": "England",
255 | "photo": "https://randomuser.me/api/portraits/men/44.jpg",
256 | "favorite": false
257 | },
258 | {
259 | "id": 660,
260 | "createdTs": "2016-12-19T19:43:24.964352Z",
261 | "updatedTs": "2016-12-19T19:43:24.964388Z",
262 | "name": "German Blanda II",
263 | "email": "tyree.mayer@malika.ca",
264 | "sex": "M",
265 | "birthdate": "1981-06-14T00:34:30.963815Z",
266 | "phonenumber": "1081-863-5347 x02106",
267 | "address": "8102104 Kian Union",
268 | "city": "East Mattie",
269 | "country": "Scotland",
270 | "photo": "https://randomuser.me/api/portraits/men/3.jpg",
271 | "favorite": false
272 | },
273 | {
274 | "id": 687,
275 | "createdTs": "2016-12-19T19:43:25.016337Z",
276 | "updatedTs": "2016-12-19T19:43:25.016374Z",
277 | "name": "Hazle Beer",
278 | "email": "vaughn@eleonore.biz",
279 | "sex": "M",
280 | "birthdate": "1977-04-19T23:56:09.015878Z",
281 | "phonenumber": "934-491-8855",
282 | "address": "506 Parker Stream",
283 | "city": "Kihnhaven",
284 | "country": "Northern Ireland",
285 | "photo": "https://randomuser.me/api/portraits/men/30.jpg",
286 | "favorite": false
287 | },
288 | {
289 | "id": 659,
290 | "createdTs": "2016-12-19T19:43:24.962456Z",
291 | "updatedTs": "2016-12-19T19:43:24.962489Z",
292 | "name": "Jazmin Bode",
293 | "email": "oleta.hessel@mayra.biz",
294 | "sex": "M",
295 | "birthdate": "1998-08-27T18:35:12.962014Z",
296 | "phonenumber": "1-330-349-8362",
297 | "address": "056 VonRueden Throughway",
298 | "city": "Kutchtown",
299 | "country": "Wales",
300 | "photo": "https://randomuser.me/api/portraits/men/2.jpg",
301 | "favorite": false
302 | },
303 | {
304 | "id": 675,
305 | "createdTs": "2016-12-19T19:43:24.994790Z",
306 | "updatedTs": "2016-12-19T19:43:24.994821Z",
307 | "name": "Joan Daniel",
308 | "email": "beulah@neha.ca",
309 | "sex": "M",
310 | "birthdate": "1979-11-01T08:04:36.994353Z",
311 | "phonenumber": "049-1080-2551",
312 | "address": "4497 Vickie Spurs",
313 | "city": "Lake Jaidenton",
314 | "country": "England",
315 | "photo": "https://randomuser.me/api/portraits/men/18.jpg",
316 | "favorite": false
317 | },
318 | {
319 | "id": 670,
320 | "createdTs": "2016-12-19T19:43:24.983649Z",
321 | "updatedTs": "2016-12-19T19:43:24.983713Z",
322 | "name": "Kamron Jacobi I",
323 | "email": "missouri@arthur.org",
324 | "sex": "M",
325 | "birthdate": "1988-06-28T18:39:21.982791Z",
326 | "phonenumber": "412.343.2782 x759",
327 | "address": "490 Willms Cliffs",
328 | "city": "Minervaside",
329 | "country": "Scotland",
330 | "photo": "https://randomuser.me/api/portraits/men/13.jpg",
331 | "favorite": false
332 | },
333 | {
334 | "id": 665,
335 | "createdTs": "2016-12-19T19:43:24.974099Z",
336 | "updatedTs": "2016-12-19T19:43:24.974137Z",
337 | "name": "Kenna Bradtke",
338 | "email": "deshawn_nolan@rey.biz",
339 | "sex": "M",
340 | "birthdate": "1974-10-12T12:26:23.973618Z",
341 | "phonenumber": "1-399-797-3337 x39402",
342 | "address": "046910 Grant Lane",
343 | "city": "North Johnmouth",
344 | "country": "Scotland",
345 | "photo": "https://randomuser.me/api/portraits/men/8.jpg",
346 | "favorite": false
347 | },
348 | {
349 | "id": 694,
350 | "createdTs": "2016-12-19T19:43:25.030109Z",
351 | "updatedTs": "2016-12-19T19:43:25.030144Z",
352 | "name": "Laverne Gleichner",
353 | "email": "florencio.fisher@wendell.tv",
354 | "sex": "F",
355 | "birthdate": "1974-02-26T16:03:00.029695Z",
356 | "phonenumber": "(081)291-9173 x3567",
357 | "address": "760 Sammy Dale",
358 | "city": "Guªannbury",
359 | "country": "Northern Ireland",
360 | "photo": "https://randomuser.me/api/portraits/women/37.jpg",
361 | "favorite": false
362 | },
363 | {
364 | "id": 669,
365 | "createdTs": "2016-12-19T19:43:24.981183Z",
366 | "updatedTs": "2016-12-19T19:43:24.981223Z",
367 | "name": "Leda Dach",
368 | "email": "kirstin.gleichner@samir.org",
369 | "sex": "F",
370 | "birthdate": "1971-05-24T10:52:43.980640Z",
371 | "phonenumber": "186.558.8870",
372 | "address": "925 Dena Manors",
373 | "city": "South Jimmieburgh",
374 | "country": "Wales",
375 | "photo": "https://randomuser.me/api/portraits/women/12.jpg",
376 | "favorite": false
377 | },
378 | {
379 | "id": 657,
380 | "createdTs": "2016-12-19T19:43:24.956949Z",
381 | "updatedTs": "2016-12-19T19:43:24.956997Z",
382 | "name": "Lenora Waters",
383 | "email": "bernie@elwin.tv",
384 | "sex": "M",
385 | "birthdate": "1990-02-21T21:44:53.956367Z",
386 | "phonenumber": "516-492-10574 x410624",
387 | "address": "603 Gusikowski Lodge",
388 | "city": "East Liammouth",
389 | "country": "Scotland",
390 | "photo": "https://randomuser.me/api/portraits/men/0.jpg",
391 | "favorite": false
392 | },
393 | {
394 | "id": 678,
395 | "createdTs": "2016-12-19T19:43:25.000529Z",
396 | "updatedTs": "2016-12-19T19:43:25.000566Z",
397 | "name": "Levi Keebler",
398 | "email": "ewell@joseph.me",
399 | "sex": "M",
400 | "birthdate": "2001-11-26T15:47:26.999998Z",
401 | "phonenumber": "300-597-1976",
402 | "address": "049 Javon Squares",
403 | "city": "New Coleman",
404 | "country": "Northern Ireland",
405 | "photo": "https://randomuser.me/api/portraits/men/21.jpg",
406 | "favorite": false
407 | },
408 | {
409 | "id": 690,
410 | "createdTs": "2016-12-19T19:43:25.022492Z",
411 | "updatedTs": "2016-12-19T19:43:25.022535Z",
412 | "name": "Liza Hintz",
413 | "email": "isaac_gottlieb@erica.biz",
414 | "sex": "M",
415 | "birthdate": "1972-08-11T14:58:56.021982Z",
416 | "phonenumber": "(991)568-8515",
417 | "address": "21010 Barton Mountains",
418 | "city": "Russelfurt",
419 | "country": "Wales",
420 | "photo": "https://randomuser.me/api/portraits/men/33.jpg",
421 | "favorite": false
422 | },
423 | {
424 | "id": 684,
425 | "createdTs": "2016-12-19T19:43:25.011277Z",
426 | "updatedTs": "2016-12-19T19:43:25.011312Z",
427 | "name": "Maribel Blanda",
428 | "email": "lina@dan.us",
429 | "sex": "F",
430 | "birthdate": "1999-05-23T04:34:04.010825Z",
431 | "phonenumber": "319.416.70810",
432 | "address": "1007 Hirthe Camp",
433 | "city": "Lake Carmela",
434 | "country": "Wales",
435 | "photo": "https://randomuser.me/api/portraits/women/27.jpg",
436 | "favorite": false
437 | },
438 | {
439 | "id": 686,
440 | "createdTs": "2016-12-19T19:43:25.014683Z",
441 | "updatedTs": "2016-12-19T19:43:25.014719Z",
442 | "name": "Mekhi Heaney",
443 | "email": "camryn_stroman@jermain.us",
444 | "sex": "F",
445 | "birthdate": "1985-07-09T14:33:03.014219Z",
446 | "phonenumber": "1-2104-1108-5410 x410106",
447 | "address": "2734 Victor Mall",
448 | "city": "Gottliebmouth",
449 | "country": "Wales",
450 | "photo": "https://randomuser.me/api/portraits/women/29.jpg",
451 | "favorite": false
452 | },
453 | {
454 | "id": 689,
455 | "createdTs": "2016-12-19T19:43:25.020164Z",
456 | "updatedTs": "2016-12-19T19:43:25.020197Z",
457 | "name": "Michele Morissette",
458 | "email": "danyka_o.hara@naomi.tv",
459 | "sex": "F",
460 | "birthdate": "1994-10-17T08:55:23.019664Z",
461 | "phonenumber": "188.970.2616 x8877",
462 | "address": "1069 Abelardo Viaduct",
463 | "city": "Leannonhaven",
464 | "country": "Wales",
465 | "photo": "https://randomuser.me/api/portraits/women/32.jpg",
466 | "favorite": false
467 | },
468 | {
469 | "id": 661,
470 | "createdTs": "2016-12-19T19:43:24.966326Z",
471 | "updatedTs": "2016-12-19T19:43:24.966373Z",
472 | "name": "Miss America Mills",
473 | "email": "gabrielle@madelyn.biz",
474 | "sex": "M",
475 | "birthdate": "1978-11-09T20:44:32.965752Z",
476 | "phonenumber": "662-150-6104",
477 | "address": "280210 Veronica Loaf",
478 | "city": "McDermottville",
479 | "country": "Northern Ireland",
480 | "photo": "https://randomuser.me/api/portraits/men/4.jpg",
481 | "favorite": false
482 | },
483 | {
484 | "id": 704,
485 | "createdTs": "2016-12-19T19:43:25.049137Z",
486 | "updatedTs": "2016-12-19T19:43:25.049170Z",
487 | "name": "Miss Jayce Aufderhar",
488 | "email": "jannie@marisol.org",
489 | "sex": "F",
490 | "birthdate": "1984-02-06T03:01:17.048714Z",
491 | "phonenumber": "114.003.8146",
492 | "address": "831 Douglas Corner",
493 | "city": "Dovieville",
494 | "country": "Northern Ireland",
495 | "photo": "https://randomuser.me/api/portraits/women/47.jpg",
496 | "favorite": false
497 | },
498 | {
499 | "id": 696,
500 | "createdTs": "2016-12-19T19:43:25.034285Z",
501 | "updatedTs": "2016-12-19T19:43:25.034376Z",
502 | "name": "Mr. Dillan Kihn",
503 | "email": "shad.king@lauriane.us",
504 | "sex": "F",
505 | "birthdate": "1978-03-01T07:18:06.033383Z",
506 | "phonenumber": "305.949.0595 x3580",
507 | "address": "191 Bins Avenue",
508 | "city": "Lindbury",
509 | "country": "England",
510 | "photo": "https://randomuser.me/api/portraits/women/39.jpg",
511 | "favorite": false
512 | },
513 | {
514 | "id": 671,
515 | "createdTs": "2016-12-19T19:43:24.987426Z",
516 | "updatedTs": "2016-12-19T19:43:24.987472Z",
517 | "name": "Mrs. Grady Walker",
518 | "email": "ethelyn.borer@rogelio.ca",
519 | "sex": "F",
520 | "birthdate": "1968-07-24T03:54:40.986373Z",
521 | "phonenumber": "(669)949-10338 x027",
522 | "address": "567 Jerald Unions",
523 | "city": "Oberbrunnerport",
524 | "country": "Scotland",
525 | "photo": "https://randomuser.me/api/portraits/women/14.jpg",
526 | "favorite": false
527 | },
528 | {
529 | "id": 688,
530 | "createdTs": "2016-12-19T19:43:25.018310Z",
531 | "updatedTs": "2016-12-19T19:43:25.018352Z",
532 | "name": "Nannie Schinner",
533 | "email": "clifford_kunde@milan.info",
534 | "sex": "M",
535 | "birthdate": "1977-07-26T19:49:11.017704Z",
536 | "phonenumber": "(651)1108-2550 x870",
537 | "address": "483107 Darby Unions",
538 | "city": "Lake Rosario",
539 | "country": "England",
540 | "photo": "https://randomuser.me/api/portraits/men/31.jpg",
541 | "favorite": false
542 | },
543 | {
544 | "id": 667,
545 | "createdTs": "2016-12-19T19:43:24.977406Z",
546 | "updatedTs": "2016-12-19T19:43:24.977443Z",
547 | "name": "Nestor Reichel",
548 | "email": "tillman@allene.name",
549 | "sex": "M",
550 | "birthdate": "1980-11-06T09:16:40.976985Z",
551 | "phonenumber": "1-442-1610-73108",
552 | "address": "455 Auer Lock",
553 | "city": "Beermouth",
554 | "country": "Northern Ireland",
555 | "photo": "https://randomuser.me/api/portraits/men/10.jpg",
556 | "favorite": false
557 | },
558 | {
559 | "id": 693,
560 | "createdTs": "2016-12-19T19:43:25.028548Z",
561 | "updatedTs": "2016-12-19T19:43:25.028585Z",
562 | "name": "Robb Jacobson",
563 | "email": "kadin@mina.biz",
564 | "sex": "F",
565 | "birthdate": "1994-12-16T08:48:45.028110Z",
566 | "phonenumber": "1-873-185-66103 x27455",
567 | "address": "473 Heaney Lights",
568 | "city": "Douglasburgh",
569 | "country": "England",
570 | "photo": "https://randomuser.me/api/portraits/women/36.jpg",
571 | "favorite": false
572 | },
573 | {
574 | "id": 681,
575 | "createdTs": "2016-12-19T19:43:25.005860Z",
576 | "updatedTs": "2016-12-19T19:43:25.005897Z",
577 | "name": "Roosevelt Daniel",
578 | "email": "alia@sydni.com",
579 | "sex": "F",
580 | "birthdate": "2000-05-03T18:19:22.005378Z",
581 | "phonenumber": "1-388-571-9046",
582 | "address": "048 Jovan Squares",
583 | "city": "New Amarafort",
584 | "country": "England",
585 | "photo": "https://randomuser.me/api/portraits/women/24.jpg",
586 | "favorite": false
587 | },
588 | {
589 | "id": 673,
590 | "createdTs": "2016-12-19T19:43:24.991483Z",
591 | "updatedTs": "2016-12-19T19:43:24.991520Z",
592 | "name": "Rose Hessel IV",
593 | "email": "triston@guiseppe.net",
594 | "sex": "M",
595 | "birthdate": "1981-07-28T14:09:53.991008Z",
596 | "phonenumber": "1-207-153-8194",
597 | "address": "51040 Parisian Causeway",
598 | "city": "South Eliane",
599 | "country": "England",
600 | "photo": "https://randomuser.me/api/portraits/men/16.jpg",
601 | "favorite": false
602 | },
603 | {
604 | "id": 668,
605 | "createdTs": "2016-12-19T19:43:24.979182Z",
606 | "updatedTs": "2016-12-19T19:43:24.979219Z",
607 | "name": "Shanny Robel",
608 | "email": "pinkie_heaney@elva.biz",
609 | "sex": "F",
610 | "birthdate": "1967-02-19T09:57:21.978703Z",
611 | "phonenumber": "981-643-21062 x2510",
612 | "address": "88582 Gleichner Stravenue",
613 | "city": "New Heberhaven",
614 | "country": "Wales",
615 | "photo": "https://randomuser.me/api/portraits/women/11.jpg",
616 | "favorite": false
617 | },
618 | {
619 | "id": 672,
620 | "createdTs": "2016-12-19T19:43:24.989539Z",
621 | "updatedTs": "2016-12-19T19:43:24.989591Z",
622 | "name": "Sigurd Muller",
623 | "email": "jordan@malinda.us",
624 | "sex": "M",
625 | "birthdate": "1996-11-03T21:20:09.988977Z",
626 | "phonenumber": "1-081-699-31088 x762",
627 | "address": "614 Xzavier Fork",
628 | "city": "Port Annaliseburgh",
629 | "country": "Northern Ireland",
630 | "photo": "https://randomuser.me/api/portraits/men/15.jpg",
631 | "favorite": false
632 | },
633 | {
634 | "id": 699,
635 | "createdTs": "2016-12-19T19:43:25.040044Z",
636 | "updatedTs": "2016-12-19T19:43:25.040080Z",
637 | "name": "Sophia Ernser PhD",
638 | "email": "khalil@yesenia.biz",
639 | "sex": "M",
640 | "birthdate": "1992-11-20T18:19:42.039618Z",
641 | "phonenumber": "137.854.4195",
642 | "address": "064 Murazik Forks",
643 | "city": "Welchton",
644 | "country": "Scotland",
645 | "photo": "https://randomuser.me/api/portraits/men/42.jpg",
646 | "favorite": false
647 | },
648 | {
649 | "id": 682,
650 | "createdTs": "2016-12-19T19:43:25.007609Z",
651 | "updatedTs": "2016-12-19T19:43:25.007644Z",
652 | "name": "Terence Koepp",
653 | "email": "philip_greenfelder@ezekiel.co.uk",
654 | "sex": "M",
655 | "birthdate": "1986-07-31T11:44:48.007122Z",
656 | "phonenumber": "621-1103-18910 x6913",
657 | "address": "418 Ruth Meadow",
658 | "city": "Gorczanyhaven",
659 | "country": "England",
660 | "photo": "https://randomuser.me/api/portraits/men/25.jpg",
661 | "favorite": false
662 | },
663 | {
664 | "id": 677,
665 | "createdTs": "2016-12-19T19:43:24.998824Z",
666 | "updatedTs": "2016-12-19T19:43:24.998854Z",
667 | "name": "Tony Harris",
668 | "email": "calista.dach@gayle.co.uk",
669 | "sex": "M",
670 | "birthdate": "1977-08-16T15:17:11.998350Z",
671 | "phonenumber": "1-913-670-7023",
672 | "address": "1073 Kareem Road",
673 | "city": "South Anguston",
674 | "country": "Wales",
675 | "photo": "https://randomuser.me/api/portraits/men/20.jpg",
676 | "favorite": false
677 | },
678 | {
679 | "id": 703,
680 | "createdTs": "2016-12-19T19:43:25.047264Z",
681 | "updatedTs": "2016-12-19T19:43:25.047298Z",
682 | "name": "Unique Volkman",
683 | "email": "julianne@brielle.org",
684 | "sex": "M",
685 | "birthdate": "1982-08-11T21:00:09.046783Z",
686 | "phonenumber": "(005)286-9624 x5816",
687 | "address": "167 Abigayle Green",
688 | "city": "East Cliffordmouth",
689 | "country": "Scotland",
690 | "photo": "https://randomuser.me/api/portraits/men/46.jpg",
691 | "favorite": false
692 | },
693 | {
694 | "id": 666,
695 | "createdTs": "2016-12-19T19:43:24.975770Z",
696 | "updatedTs": "2016-12-19T19:43:24.975807Z",
697 | "name": "Vidal Spencer",
698 | "email": "dorian_kreiger@leopold.ca",
699 | "sex": "F",
700 | "birthdate": "1999-05-23T02:42:51.975328Z",
701 | "phonenumber": "1-537-584-103110 x484",
702 | "address": "7610 Nelda Drives",
703 | "city": "Zemlakburgh",
704 | "country": "Northern Ireland",
705 | "photo": "https://randomuser.me/api/portraits/women/9.jpg",
706 | "favorite": false
707 | },
708 | {
709 | "id": 692,
710 | "createdTs": "2016-12-19T19:43:25.026678Z",
711 | "updatedTs": "2016-12-19T19:43:25.026718Z",
712 | "name": "Vinnie Schmidt",
713 | "email": "friedrich@warren.us",
714 | "sex": "F",
715 | "birthdate": "2001-12-14T06:09:28.026112Z",
716 | "phonenumber": "1-914-368-8906 x9138",
717 | "address": "101536 Nannie Crest",
718 | "city": "North Kathleen",
719 | "country": "Northern Ireland",
720 | "photo": "https://randomuser.me/api/portraits/women/35.jpg",
721 | "favorite": false
722 | },
723 | {
724 | "id": 662,
725 | "createdTs": "2016-12-19T19:43:24.968668Z",
726 | "updatedTs": "2016-12-19T19:43:24.968710Z",
727 | "name": "Virgie Walsh",
728 | "email": "granville_howe@ressie.co.uk",
729 | "sex": "F",
730 | "birthdate": "1983-10-24T15:14:17.968143Z",
731 | "phonenumber": "(0410)1000-10571 x941010",
732 | "address": "8222 Rutherford Overpass",
733 | "city": "East Aurelia",
734 | "country": "Scotland",
735 | "photo": "https://randomuser.me/api/portraits/women/5.jpg",
736 | "favorite": false
737 | },
738 | {
739 | "id": 676,
740 | "createdTs": "2016-12-19T19:43:24.997096Z",
741 | "updatedTs": "2016-12-19T19:43:24.997134Z",
742 | "name": "Zakary Kertzmann",
743 | "email": "rogers_dietrich@monroe.org",
744 | "sex": "F",
745 | "birthdate": "1985-06-15T05:09:03.996605Z",
746 | "phonenumber": "1-687-600-1737",
747 | "address": "8605 Mertz Crest",
748 | "city": "Lake Terranceton",
749 | "country": "Wales",
750 | "photo": "https://randomuser.me/api/portraits/women/19.jpg",
751 | "favorite": false
752 | }
753 | ]
754 | }
--------------------------------------------------------------------------------