Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(193)

Side by Side Diff: generated/googleapis/lib/cloudresourcemanager/v1.dart

Issue 2973303002: Api-Roll 51: 2017-07-10 (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // This is a generated file (see the discoveryapis_generator project). 1 // This is a generated file (see the discoveryapis_generator project).
2 2
3 library googleapis.cloudresourcemanager.v1; 3 library googleapis.cloudresourcemanager.v1;
4 4
5 import 'dart:core' as core; 5 import 'dart:core' as core;
6 import 'dart:async' as async; 6 import 'dart:async' as async;
7 import 'dart:convert' as convert; 7 import 'dart:convert' as convert;
8 8
9 import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons; 9 import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
10 import 'package:http/http.dart' as http; 10 import 'package:http/http.dart' as http;
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 427
428 /** 428 /**
429 * List all Liens applied to the `parent` resource. 429 * List all Liens applied to the `parent` resource.
430 * 430 *
431 * Callers of this method will require permission on the `parent` resource. 431 * Callers of this method will require permission on the `parent` resource.
432 * For example, a Lien with a `parent` of `projects/1234` requires permission 432 * For example, a Lien with a `parent` of `projects/1234` requires permission
433 * `resourcemanager.projects.get`. 433 * `resourcemanager.projects.get`.
434 * 434 *
435 * Request parameters: 435 * Request parameters:
436 * 436 *
437 * [pageToken] - The `next_page_token` value returned from a previous List
438 * request, if any.
439 *
440 * [pageSize] - The maximum number of items to return. This is a suggestion 437 * [pageSize] - The maximum number of items to return. This is a suggestion
441 * for the server. 438 * for the server.
442 * 439 *
443 * [parent] - The name of the resource to list all attached Liens. 440 * [parent] - The name of the resource to list all attached Liens.
444 * For example, `projects/1234`. 441 * For example, `projects/1234`.
445 * 442 *
443 * [pageToken] - The `next_page_token` value returned from a previous List
444 * request, if any.
445 *
446 * Completes with a [ListLiensResponse]. 446 * Completes with a [ListLiensResponse].
447 * 447 *
448 * Completes with a [commons.ApiRequestError] if the API endpoint returned an 448 * Completes with a [commons.ApiRequestError] if the API endpoint returned an
449 * error. 449 * error.
450 * 450 *
451 * If the used [http.Client] completes with an error when making a REST call, 451 * If the used [http.Client] completes with an error when making a REST call,
452 * this method will complete with the same error. 452 * this method will complete with the same error.
453 */ 453 */
454 async.Future<ListLiensResponse> list({core.String pageToken, core.int pageSize , core.String parent}) { 454 async.Future<ListLiensResponse> list({core.int pageSize, core.String parent, c ore.String pageToken}) {
455 var _url = null; 455 var _url = null;
456 var _queryParams = new core.Map(); 456 var _queryParams = new core.Map();
457 var _uploadMedia = null; 457 var _uploadMedia = null;
458 var _uploadOptions = null; 458 var _uploadOptions = null;
459 var _downloadOptions = commons.DownloadOptions.Metadata; 459 var _downloadOptions = commons.DownloadOptions.Metadata;
460 var _body = null; 460 var _body = null;
461 461
462 if (pageToken != null) {
463 _queryParams["pageToken"] = [pageToken];
464 }
465 if (pageSize != null) { 462 if (pageSize != null) {
466 _queryParams["pageSize"] = ["${pageSize}"]; 463 _queryParams["pageSize"] = ["${pageSize}"];
467 } 464 }
468 if (parent != null) { 465 if (parent != null) {
469 _queryParams["parent"] = [parent]; 466 _queryParams["parent"] = [parent];
470 } 467 }
468 if (pageToken != null) {
469 _queryParams["pageToken"] = [pageToken];
470 }
471 471
472 _url = 'v1/liens'; 472 _url = 'v1/liens';
473 473
474 var _response = _requester.request(_url, 474 var _response = _requester.request(_url,
475 "GET", 475 "GET",
476 body: _body, 476 body: _body,
477 queryParams: _queryParams, 477 queryParams: _queryParams,
478 uploadOptions: _uploadOptions, 478 uploadOptions: _uploadOptions,
479 uploadMedia: _uploadMedia, 479 uploadMedia: _uploadMedia,
480 downloadOptions: _downloadOptions); 480 downloadOptions: _downloadOptions);
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 uploadMedia: _uploadMedia, 673 uploadMedia: _uploadMedia,
674 downloadOptions: _downloadOptions); 674 downloadOptions: _downloadOptions);
675 return _response.then((data) => new OrgPolicy.fromJson(data)); 675 return _response.then((data) => new OrgPolicy.fromJson(data));
676 } 676 }
677 677
678 /** 678 /**
679 * Gets the access control policy for an Organization resource. May be empty 679 * Gets the access control policy for an Organization resource. May be empty
680 * if no such policy or resource exists. The `resource` field should be the 680 * if no such policy or resource exists. The `resource` field should be the
681 * organization's resource name, e.g. "organizations/123". 681 * organization's resource name, e.g. "organizations/123".
682 * 682 *
683 * Authorization requires the Google IAM permission
684 * `resourcemanager.organizations.getIamPolicy` on the specified organization
685 *
683 * [request] - The metadata request object. 686 * [request] - The metadata request object.
684 * 687 *
685 * Request parameters: 688 * Request parameters:
686 * 689 *
687 * [resource] - REQUIRED: The resource for which the policy is being 690 * [resource] - REQUIRED: The resource for which the policy is being
688 * requested. 691 * requested.
689 * See the operation documentation for the appropriate value for this field. 692 * See the operation documentation for the appropriate value for this field.
690 * Value must have pattern "^organizations/[^/]+$". 693 * Value must have pattern "^organizations/[^/]+$".
691 * 694 *
692 * Completes with a [Policy]. 695 * Completes with a [Policy].
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 downloadOptions: _downloadOptions); 866 downloadOptions: _downloadOptions);
864 return _response.then((data) => new ListOrgPoliciesResponse.fromJson(data)); 867 return _response.then((data) => new ListOrgPoliciesResponse.fromJson(data));
865 } 868 }
866 869
867 /** 870 /**
868 * Searches Organization resources that are visible to the user and satisfy 871 * Searches Organization resources that are visible to the user and satisfy
869 * the specified filter. This method returns Organizations in an unspecified 872 * the specified filter. This method returns Organizations in an unspecified
870 * order. New Organizations do not necessarily appear at the end of the 873 * order. New Organizations do not necessarily appear at the end of the
871 * results. 874 * results.
872 * 875 *
876 * Search will only return organizations on which the user has the permission
877 * `resourcemanager.organizations.get`
878 *
873 * [request] - The metadata request object. 879 * [request] - The metadata request object.
874 * 880 *
875 * Request parameters: 881 * Request parameters:
876 * 882 *
877 * Completes with a [SearchOrganizationsResponse]. 883 * Completes with a [SearchOrganizationsResponse].
878 * 884 *
879 * Completes with a [commons.ApiRequestError] if the API endpoint returned an 885 * Completes with a [commons.ApiRequestError] if the API endpoint returned an
880 * error. 886 * error.
881 * 887 *
882 * If the used [http.Client] completes with an error when making a REST call, 888 * If the used [http.Client] completes with an error when making a REST call,
(...skipping 21 matching lines...) Expand all
904 uploadMedia: _uploadMedia, 910 uploadMedia: _uploadMedia,
905 downloadOptions: _downloadOptions); 911 downloadOptions: _downloadOptions);
906 return _response.then((data) => new SearchOrganizationsResponse.fromJson(dat a)); 912 return _response.then((data) => new SearchOrganizationsResponse.fromJson(dat a));
907 } 913 }
908 914
909 /** 915 /**
910 * Sets the access control policy on an Organization resource. Replaces any 916 * Sets the access control policy on an Organization resource. Replaces any
911 * existing policy. The `resource` field should be the organization's resource 917 * existing policy. The `resource` field should be the organization's resource
912 * name, e.g. "organizations/123". 918 * name, e.g. "organizations/123".
913 * 919 *
920 * Authorization requires the Google IAM permission
921 * `resourcemanager.organizations.setIamPolicy` on the specified organization
922 *
914 * [request] - The metadata request object. 923 * [request] - The metadata request object.
915 * 924 *
916 * Request parameters: 925 * Request parameters:
917 * 926 *
918 * [resource] - REQUIRED: The resource for which the policy is being 927 * [resource] - REQUIRED: The resource for which the policy is being
919 * specified. 928 * specified.
920 * See the operation documentation for the appropriate value for this field. 929 * See the operation documentation for the appropriate value for this field.
921 * Value must have pattern "^organizations/[^/]+$". 930 * Value must have pattern "^organizations/[^/]+$".
922 * 931 *
923 * Completes with a [Policy]. 932 * Completes with a [Policy].
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 uploadMedia: _uploadMedia, 1011 uploadMedia: _uploadMedia,
1003 downloadOptions: _downloadOptions); 1012 downloadOptions: _downloadOptions);
1004 return _response.then((data) => new OrgPolicy.fromJson(data)); 1013 return _response.then((data) => new OrgPolicy.fromJson(data));
1005 } 1014 }
1006 1015
1007 /** 1016 /**
1008 * Returns permissions that a caller has on the specified Organization. 1017 * Returns permissions that a caller has on the specified Organization.
1009 * The `resource` field should be the organization's resource name, 1018 * The `resource` field should be the organization's resource name,
1010 * e.g. "organizations/123". 1019 * e.g. "organizations/123".
1011 * 1020 *
1021 * There are no permissions required for making this API call.
1022 *
1012 * [request] - The metadata request object. 1023 * [request] - The metadata request object.
1013 * 1024 *
1014 * Request parameters: 1025 * Request parameters:
1015 * 1026 *
1016 * [resource] - REQUIRED: The resource for which the policy detail is being 1027 * [resource] - REQUIRED: The resource for which the policy detail is being
1017 * requested. 1028 * requested.
1018 * See the operation documentation for the appropriate value for this field. 1029 * See the operation documentation for the appropriate value for this field.
1019 * Value must have pattern "^organizations/[^/]+$". 1030 * Value must have pattern "^organizations/[^/]+$".
1020 * 1031 *
1021 * Completes with a [TestIamPermissionsResponse]. 1032 * Completes with a [TestIamPermissionsResponse].
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
1110 /** 1121 /**
1111 * Request that a new Project be created. The result is an Operation which 1122 * Request that a new Project be created. The result is an Operation which
1112 * can be used to track the creation process. It is automatically deleted 1123 * can be used to track the creation process. It is automatically deleted
1113 * after a few hours, so there is no need to call DeleteOperation. 1124 * after a few hours, so there is no need to call DeleteOperation.
1114 * 1125 *
1115 * Our SLO permits Project creation to take up to 30 seconds at the 90th 1126 * Our SLO permits Project creation to take up to 30 seconds at the 90th
1116 * percentile. As of 2016-08-29, we are observing 6 seconds 50th percentile 1127 * percentile. As of 2016-08-29, we are observing 6 seconds 50th percentile
1117 * latency. 95th percentile latency is around 11 seconds. We recommend 1128 * latency. 95th percentile latency is around 11 seconds. We recommend
1118 * polling at the 5th second with an exponential backoff. 1129 * polling at the 5th second with an exponential backoff.
1119 * 1130 *
1131 * Authorization requires the Google IAM permission
1132 * `resourcemanager.projects.create` on the specified parent for the new
1133 * project.
1134 *
1120 * [request] - The metadata request object. 1135 * [request] - The metadata request object.
1121 * 1136 *
1122 * Request parameters: 1137 * Request parameters:
1123 * 1138 *
1124 * Completes with a [Operation]. 1139 * Completes with a [Operation].
1125 * 1140 *
1126 * Completes with a [commons.ApiRequestError] if the API endpoint returned an 1141 * Completes with a [commons.ApiRequestError] if the API endpoint returned an
1127 * error. 1142 * error.
1128 * 1143 *
1129 * If the used [http.Client] completes with an error when making a REST call, 1144 * If the used [http.Client] completes with an error when making a REST call,
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
1355 uploadOptions: _uploadOptions, 1370 uploadOptions: _uploadOptions,
1356 uploadMedia: _uploadMedia, 1371 uploadMedia: _uploadMedia,
1357 downloadOptions: _downloadOptions); 1372 downloadOptions: _downloadOptions);
1358 return _response.then((data) => new OrgPolicy.fromJson(data)); 1373 return _response.then((data) => new OrgPolicy.fromJson(data));
1359 } 1374 }
1360 1375
1361 /** 1376 /**
1362 * Returns the IAM access control policy for the specified Project. 1377 * Returns the IAM access control policy for the specified Project.
1363 * Permission is denied if the policy or the resource does not exist. 1378 * Permission is denied if the policy or the resource does not exist.
1364 * 1379 *
1380 * Authorization requires the Google IAM permission
1381 * `resourcemanager.projects.getIamPolicy` on the project
1382 *
1365 * [request] - The metadata request object. 1383 * [request] - The metadata request object.
1366 * 1384 *
1367 * Request parameters: 1385 * Request parameters:
1368 * 1386 *
1369 * [resource] - REQUIRED: The resource for which the policy is being 1387 * [resource] - REQUIRED: The resource for which the policy is being
1370 * requested. 1388 * requested.
1371 * See the operation documentation for the appropriate value for this field. 1389 * See the operation documentation for the appropriate value for this field.
1372 * 1390 *
1373 * Completes with a [Policy]. 1391 * Completes with a [Policy].
1374 * 1392 *
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1455 return _response.then((data) => new OrgPolicy.fromJson(data)); 1473 return _response.then((data) => new OrgPolicy.fromJson(data));
1456 } 1474 }
1457 1475
1458 /** 1476 /**
1459 * Lists Projects that are visible to the user and satisfy the 1477 * Lists Projects that are visible to the user and satisfy the
1460 * specified filter. This method returns Projects in an unspecified order. 1478 * specified filter. This method returns Projects in an unspecified order.
1461 * New Projects do not necessarily appear at the end of the list. 1479 * New Projects do not necessarily appear at the end of the list.
1462 * 1480 *
1463 * Request parameters: 1481 * Request parameters:
1464 * 1482 *
1465 * [pageToken] - A pagination token returned from a previous call to
1466 * ListProjects
1467 * that indicates from where listing should continue.
1468 *
1469 * Optional.
1470 *
1471 * [pageSize] - The maximum number of Projects to return in the response. 1483 * [pageSize] - The maximum number of Projects to return in the response.
1472 * The server can return fewer Projects than requested. 1484 * The server can return fewer Projects than requested.
1473 * If unspecified, server picks an appropriate default. 1485 * If unspecified, server picks an appropriate default.
1474 * 1486 *
1475 * Optional. 1487 * Optional.
1476 * 1488 *
1477 * [filter] - An expression for filtering the results of the request. Filter 1489 * [filter] - An expression for filtering the results of the request. Filter
1478 * rules are 1490 * rules are
1479 * case insensitive. The fields eligible for filtering are: 1491 * case insensitive. The fields eligible for filtering are:
1480 * 1492 *
1481 * + `name` 1493 * + `name`
1482 * + `id` 1494 * + `id`
1483 * + <code>labels.<em>key</em></code> where *key* is the name of a label 1495 * + <code>labels.<em>key</em></code> where *key* is the name of a label
1484 * 1496 *
1485 * Some examples of using labels as filters: 1497 * Some examples of using labels as filters:
1486 * 1498 *
1487 * |Filter|Description| 1499 * |Filter|Description|
1488 * |------|-----------| 1500 * |------|-----------|
1489 * |name:how*|The project's name starts with "how".| 1501 * |name:how*|The project's name starts with "how".|
1490 * |name:Howl|The project's name is `Howl` or `howl`.| 1502 * |name:Howl|The project's name is `Howl` or `howl`.|
1491 * |name:HOWL|Equivalent to above.| 1503 * |name:HOWL|Equivalent to above.|
1492 * |NAME:howl|Equivalent to above.| 1504 * |NAME:howl|Equivalent to above.|
1493 * |labels.color:*|The project has the label `color`.| 1505 * |labels.color:*|The project has the label `color`.|
1494 * |labels.color:red|The project's label `color` has the value `red`.| 1506 * |labels.color:red|The project's label `color` has the value `red`.|
1495 * |labels.color:red&nbsp;labels.size:big|The project's label `color` has the 1507 * |labels.color:red&nbsp;labels.size:big|The project's label `color` has the
1496 * value `red` and its label `size` has the value `big`. 1508 * value `red` and its label `size` has the value `big`.
1497 * 1509 *
1510 * If you specify a filter that has both `parent.type` and `parent.id`, then
1511 * the `resourcemanager.projects.list` permission is checked on the parent.
1512 * If the user has this permission, all projects under the parent will be
1513 * returned after remaining filters have been applied. If the user lacks this
1514 * permission, then all projects for which the user has the
1515 * `resourcemanager.projects.get` permission will be returned after remaining
1516 * filters have been applied. If no filter is specified, the call will return
1517 * projects for which the user has `resourcemanager.projects.get` permissions.
1518 *
1519 * Optional.
1520 *
1521 * [pageToken] - A pagination token returned from a previous call to
1522 * ListProjects
1523 * that indicates from where listing should continue.
1524 *
1498 * Optional. 1525 * Optional.
1499 * 1526 *
1500 * Completes with a [ListProjectsResponse]. 1527 * Completes with a [ListProjectsResponse].
1501 * 1528 *
1502 * Completes with a [commons.ApiRequestError] if the API endpoint returned an 1529 * Completes with a [commons.ApiRequestError] if the API endpoint returned an
1503 * error. 1530 * error.
1504 * 1531 *
1505 * If the used [http.Client] completes with an error when making a REST call, 1532 * If the used [http.Client] completes with an error when making a REST call,
1506 * this method will complete with the same error. 1533 * this method will complete with the same error.
1507 */ 1534 */
1508 async.Future<ListProjectsResponse> list({core.String pageToken, core.int pageS ize, core.String filter}) { 1535 async.Future<ListProjectsResponse> list({core.int pageSize, core.String filter , core.String pageToken}) {
1509 var _url = null; 1536 var _url = null;
1510 var _queryParams = new core.Map(); 1537 var _queryParams = new core.Map();
1511 var _uploadMedia = null; 1538 var _uploadMedia = null;
1512 var _uploadOptions = null; 1539 var _uploadOptions = null;
1513 var _downloadOptions = commons.DownloadOptions.Metadata; 1540 var _downloadOptions = commons.DownloadOptions.Metadata;
1514 var _body = null; 1541 var _body = null;
1515 1542
1516 if (pageToken != null) {
1517 _queryParams["pageToken"] = [pageToken];
1518 }
1519 if (pageSize != null) { 1543 if (pageSize != null) {
1520 _queryParams["pageSize"] = ["${pageSize}"]; 1544 _queryParams["pageSize"] = ["${pageSize}"];
1521 } 1545 }
1522 if (filter != null) { 1546 if (filter != null) {
1523 _queryParams["filter"] = [filter]; 1547 _queryParams["filter"] = [filter];
1524 } 1548 }
1549 if (pageToken != null) {
1550 _queryParams["pageToken"] = [pageToken];
1551 }
1525 1552
1526 _url = 'v1/projects'; 1553 _url = 'v1/projects';
1527 1554
1528 var _response = _requester.request(_url, 1555 var _response = _requester.request(_url,
1529 "GET", 1556 "GET",
1530 body: _body, 1557 body: _body,
1531 queryParams: _queryParams, 1558 queryParams: _queryParams,
1532 uploadOptions: _uploadOptions, 1559 uploadOptions: _uploadOptions,
1533 uploadMedia: _uploadMedia, 1560 uploadMedia: _uploadMedia,
1534 downloadOptions: _downloadOptions); 1561 downloadOptions: _downloadOptions);
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1659 * IAM policies will be rejected until the lack of a ToS-accepting owner is 1686 * IAM policies will be rejected until the lack of a ToS-accepting owner is
1660 * rectified. 1687 * rectified.
1661 * 1688 *
1662 * + Calling this method requires enabling the App Engine Admin API. 1689 * + Calling this method requires enabling the App Engine Admin API.
1663 * 1690 *
1664 * Note: Removing service accounts from policies or changing their roles 1691 * Note: Removing service accounts from policies or changing their roles
1665 * can render services completely inoperable. It is important to understand 1692 * can render services completely inoperable. It is important to understand
1666 * how the service account is being used before removing or updating its 1693 * how the service account is being used before removing or updating its
1667 * roles. 1694 * roles.
1668 * 1695 *
1696 * Authorization requires the Google IAM permission
1697 * `resourcemanager.projects.setIamPolicy` on the project
1698 *
1669 * [request] - The metadata request object. 1699 * [request] - The metadata request object.
1670 * 1700 *
1671 * Request parameters: 1701 * Request parameters:
1672 * 1702 *
1673 * [resource] - REQUIRED: The resource for which the policy is being 1703 * [resource] - REQUIRED: The resource for which the policy is being
1674 * specified. 1704 * specified.
1675 * See the operation documentation for the appropriate value for this field. 1705 * See the operation documentation for the appropriate value for this field.
1676 * 1706 *
1677 * Completes with a [Policy]. 1707 * Completes with a [Policy].
1678 * 1708 *
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1754 queryParams: _queryParams, 1784 queryParams: _queryParams,
1755 uploadOptions: _uploadOptions, 1785 uploadOptions: _uploadOptions,
1756 uploadMedia: _uploadMedia, 1786 uploadMedia: _uploadMedia,
1757 downloadOptions: _downloadOptions); 1787 downloadOptions: _downloadOptions);
1758 return _response.then((data) => new OrgPolicy.fromJson(data)); 1788 return _response.then((data) => new OrgPolicy.fromJson(data));
1759 } 1789 }
1760 1790
1761 /** 1791 /**
1762 * Returns permissions that a caller has on the specified Project. 1792 * Returns permissions that a caller has on the specified Project.
1763 * 1793 *
1794 * There are no permissions required for making this API call.
1795 *
1764 * [request] - The metadata request object. 1796 * [request] - The metadata request object.
1765 * 1797 *
1766 * Request parameters: 1798 * Request parameters:
1767 * 1799 *
1768 * [resource] - REQUIRED: The resource for which the policy detail is being 1800 * [resource] - REQUIRED: The resource for which the policy detail is being
1769 * requested. 1801 * requested.
1770 * See the operation documentation for the appropriate value for this field. 1802 * See the operation documentation for the appropriate value for this field.
1771 * 1803 *
1772 * Completes with a [TestIamPermissionsResponse]. 1804 * Completes with a [TestIamPermissionsResponse].
1773 * 1805 *
(...skipping 2341 matching lines...) Expand 10 before | Expand all | Expand 10 after
4115 UndeleteProjectRequest(); 4147 UndeleteProjectRequest();
4116 4148
4117 UndeleteProjectRequest.fromJson(core.Map _json) { 4149 UndeleteProjectRequest.fromJson(core.Map _json) {
4118 } 4150 }
4119 4151
4120 core.Map<core.String, core.Object> toJson() { 4152 core.Map<core.String, core.Object> toJson() {
4121 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 4153 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>();
4122 return _json; 4154 return _json;
4123 } 4155 }
4124 } 4156 }
OLDNEW
« no previous file with comments | « generated/googleapis/lib/cloudkms/v1.dart ('k') | generated/googleapis/lib/cloudresourcemanager/v2beta1.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698