diff --git a/src/Collections/SiteAuthorizations.php b/src/Collections/SiteAuthorizations.php new file mode 100644 index 000000000..2217e07a0 --- /dev/null +++ b/src/Collections/SiteAuthorizations.php @@ -0,0 +1,34 @@ +get($permission_title)->get('is_user_authorized'); + } +} diff --git a/src/Commands/Site/Upstream/SetCommand.php b/src/Commands/Site/Upstream/SetCommand.php index 8cbcec7ab..1152a2df1 100644 --- a/src/Commands/Site/Upstream/SetCommand.php +++ b/src/Commands/Site/Upstream/SetCommand.php @@ -3,6 +3,7 @@ namespace Pantheon\Terminus\Commands\Site\Upstream; use Pantheon\Terminus\Commands\Site\SiteCommand; +use Pantheon\Terminus\Exceptions\TerminusException; /** * Class SetCommand @@ -10,21 +11,26 @@ */ class SetCommand extends SiteCommand { - /** - * Changes a site's upstream. - * - * @authorize - * - * @command site:upstream:set - * - * @param string $site_name Site name - * @param string $upstream_id Upstream name or UUID - * - * @usage Updates 's upstream to . - */ + /** + * Changes a site's upstream. + * + * @authorize + * + * @command site:upstream:set + * + * @param string $site_name Site name + * @param string $upstream_id Upstream name or UUID + * @throws \Pantheon\Terminus\Exceptions\TerminusNotFoundException + * + * @usage Updates 's upstream to . + */ public function set($site_name, $upstream_id) { $site = $this->getSite($site_name); + if (!$site->getAuthorizations()->can('update_site_setting')) { + throw new TerminusException('You do not have permission to change the upstream of this site.'); + } + $upstream = $this->session()->getUser()->getUpstreams()->get($upstream_id); $msg_params = ['site' => $site->getName(), 'upstream' => $upstream->get('label'),]; diff --git a/src/Models/Organization.php b/src/Models/Organization.php index cec3749be..22f7d0810 100644 --- a/src/Models/Organization.php +++ b/src/Models/Organization.php @@ -123,10 +123,10 @@ public function getSiteMemberships() */ public function getUpstreams() { - if (empty($this->workflows)) { - $this->workflows = $this->getContainer()->get(OrganizationUpstreams::class, [['organization' => $this,],]); + if (empty($this->upstreams)) { + $this->upstreams = $this->getContainer()->get(OrganizationUpstreams::class, [['organization' => $this,],]); } - return $this->workflows; + return $this->upstreams; } /** diff --git a/src/Models/Site.php b/src/Models/Site.php index 1eeea2bf6..518b9c6e4 100755 --- a/src/Models/Site.php +++ b/src/Models/Site.php @@ -4,6 +4,7 @@ use League\Container\ContainerAwareInterface; use League\Container\ContainerAwareTrait; +use Pantheon\Terminus\Collections\SiteAuthorizations; use Pantheon\Terminus\Friends\OrganizationsInterface; use Pantheon\Terminus\Friends\OrganizationsTrait; use Robo\Common\ConfigAwareTrait; @@ -59,13 +60,17 @@ class Site extends TerminusModel implements ConfigAwareInterface, ContainerAware */ protected $user_memberships; /** - * @var Workflows + * @var SiteAuthorizations */ - private $workflows; + private $authorizations; /** * @var array */ private $features; + /** + * @var Workflows + */ + private $workflows; /** * Add a payment method to the given site @@ -134,17 +139,16 @@ public function deployProduct($upstream_id) } /** - * Creates a new site for migration - * - * @param string $upstream_id The UUID for the product to deploy. - * @return Workflow + * @return SiteAuthorizations */ - public function setUpstream($upstream_id) + public function getAuthorizations() { - return $this->getWorkflows()->create('switch_upstream', ['params' => ['upstream_id' => $upstream_id,],]); + if (empty($this->authorizations)) { + $this->authorizations = $this->getContainer()->get(SiteAuthorizations::class, [['site' => $this,],]); + } + return $this->authorizations; } - /** * @return Branches */ @@ -374,6 +378,17 @@ public function setOwner($user_id) return $this->getWorkflows()->create('promote_site_user_to_owner', ['params' => compact('user_id'),]); } + /** + * Creates a new site for migration + * + * @param string $upstream_id The UUID for the product to deploy. + * @return Workflow + */ + public function setUpstream($upstream_id) + { + return $this->getWorkflows()->create('switch_upstream', ['params' => ['upstream_id' => $upstream_id,],]); + } + /** * Update service level * diff --git a/src/Models/SiteAuthorization.php b/src/Models/SiteAuthorization.php new file mode 100755 index 000000000..af3727e41 --- /dev/null +++ b/src/Models/SiteAuthorization.php @@ -0,0 +1,12 @@ +Drupal 6 reached end of life on February 24th, 2016.\r\n", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/drupal6-icon.jpg", "label": "Drupal 6", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "974b75c2-4ba7-49f8-8a54-3a45c07dfe02"}, {"machine_name": "drupal7", "description": "The most widely installed release of the powerful open source content management platform.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/drupal7-icon.jpg", "label": "Drupal 7", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "21e1fada-199c-492b-97bd-0b36b53a9da0"}, {"machine_name": "drupal8", "description": "Launch, manage, and scale ambitious digital experiences\u2014with the flexibility to build great websites or push beyond the browser. Proudly open source.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/drupal8-icon.png", "label": "Drupal 8", "organization_id": "", "framework": "drupal8", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "8a129104-9d37-4082-aaf8-e6f31154644e"}, {"machine_name": "drupal8-php7", "description": "*Swankiest* Upstream", "connection_mode_default": "git", "icon_url": "https://www.drupal.org/files/drupal%208%20logo%20isolated%20CMYK%2072.png", "label": "Drupal8 PHP", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "4fa4f7d1-e341-48f7-9594-4e7c21b9bb68"}, {"machine_name": "easteregg-kit", "description": "Easterseals Main Distribution - Developed and Managed by Molly Duggan Associates for exclusive use on Easterseals.", "connection_mode_default": "sftp", "icon_url": "https://www.drupal.org/files/drupal%208%20logo%20Stacked%20CMYK%20300.png", "label": "EasterEgg Kit", "organization_id": "c27b42df-c2cb-c2ae-d979-ddc254a8bc44", "framework": "drupal8", "is_public_spinup_allowed": 1, "type": "custom", "is_organization_association_forced": 0, "id": "feb5fe01-bd8b-45dd-a753-e7d48b72b2e6"}, {"machine_name": "drupal-patterns", "description": "This is the Elephant Ventures profile distribution called Drupal Patterns.\r\nIt''s a responsive theme built for marketing websites.", "connection_mode_default": "git", "icon_url": "https://assets.getpantheon.com/sites/default/files/product_icons/ev-logo-square-sm.png", "label": "Elephant Ventures Drupal Patterns", "organization_id": "9813aeef-d889-4afc-9dfd-5a7433a853c9", "framework": "drupal", "is_public_spinup_allowed": true, "type": "product", "is_organization_association_forced": 0, "id": "0fce9338-bd6f-4b87-a489-e9928a027696"}, {"machine_name": "empty-7", "description": "This is an empty repository that is, save for this explanatory text, devoid of all content. This upstream is appropriate to use in situations where a Pantheon site will be created through a build step (see the Terminus Build Tools Plugin, https://github.com/pantheon-systems/terminus-build-tools-plugin) and managed completely by Composer.", "connection_mode_default": "git", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/drupal7-icon.jpg", "label": "Empty Drupal 7", "organization_id": "e9527ac9-e2e0-460f-acf1-04f7e2f5a7ba", "framework": "drupal", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "f575e77a-ff49-4bab-a53c-dbf8f59247bc"}, {"machine_name": "empty", "description": "This is an empty repository that is, save for this explanatory text, devoid of all content. This upstream is appropriate to use in situations where a Pantheon site will be created through a build step (see the Terminus Build Tools Plugin, https://github.com/pantheon-systems/terminus-build-tools-plugin) and managed completely by Composer.", "connection_mode_default": "sftp", "icon_url": "https://www.drupal.org/sites/all/modules/drupalorg/drupalorg/images/d8.svg", "label": "Empty Upstream", "organization_id": "812982f5-4a0c-4ddf-b847-267943be23fe", "framework": "drupal8", "is_public_spinup_allowed": true, "type": "core", "is_organization_association_forced": 0, "id": "4c7176de-e079-eed1-154d-44d5a9945b65"}, {"machine_name": "empty-wordpress", "description": "This is an empty repository that is, save for this explanatory text, devoid of all content. This upstream is appropriate to use in situations where a Pantheon site will be created through a build step (see the Terminus Build Tools Plugin, https://github.com/pantheon-systems/terminus-build-tools-plugin) and managed completely by Composer.", "connection_mode_default": "git", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/wordpress-logo.png", "label": "Empty WordPress", "organization_id": "e9527ac9-e2e0-460f-acf1-04f7e2f5a7ba", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "53711c64-41eb-4f42-9ca9-a370f8e1e36f"}, {"machine_name": "fcpsschools", "description": "Fairfax County Public Schools install profile", "connection_mode_default": "sftp", "icon_url": "https://forumone.com/apple-touch-icon-76x76.png", "label": "Fairfax County Public Schools", "organization_id": "a7e4d66b-ab92-481b-ab77-626b8562544e", "framework": "drupal8", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": 0, "id": "c28628b2-6b8f-4962-9838-69295c3fff68"}, {"machine_name": "inaccessible-upstream", "description": "This upstream requires credentials but it doesn''t have any. Using this upstream will trigger an error.", "connection_mode_default": "git", "icon_url": null, "label": "Inaccessible Upstream", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "wordpress", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "1f3b2569-b4f6-43ca-a8ae-11c38d90778e"}, {"machine_name": "mindgrub-test", "description": null, "connection_mode_default": "git", "icon_url": null, "label": "Mindgrub Test", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "595003f1-e82e-4af8-ac18-65d09da2f6c5"}, {"machine_name": "my-demo-upstream", "description": "This is part of my *demo*.", "connection_mode_default": "sftp", "icon_url": null, "label": "My Demo Upstream", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "66665092-2d26-47c8-b7c3-a920a37fb805"}, {"machine_name": "my-upstream-for-demo", "description": "This is a SuperDemo upstream", "connection_mode_default": "sftp", "icon_url": null, "label": "My Upstream for Demo", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "745bfede-0557-42ea-a115-246e3b60e8e0"}, {"machine_name": "openoutreach", "description": "[Open Outreach](http://drupal.org/project/openoutreach) is a Drupal distribution written to provide grassroots, activist, and nonprofit groups with the web tools they need for effective public engagement.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/openoutreach-icon.png", "label": "Open Outreach", "organization_id": "eace756e-33b1-471c-9f0c-2e51eca126bd", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "4c17f505-05d0-4b79-b38a-0bc548405a10"}, {"machine_name": "openrestaurant", "description": "The [Open Restaurant distribution](http://open.restaurant/) has everything you need to kickstart your restaurant website. It comes with a menu management system, a reservation system, a customizable blog, events management and a responsive theme.\r\n", "connection_mode_default": "git", "icon_url": "https://www.drupal.org/files/styles/grid-3/public/project-images/open-restaurant-logo.png", "label": "Open Restaurant", "organization_id": "eace756e-33b1-471c-9f0c-2e51eca126bd", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "6eb1ad36-afef-46d7-90d1-3a1bd4296863"}, {"machine_name": "openaid", "description": "[OpenAid](https://openaiddistro.org) is a turnkey website platform designed to help cause-driven organizations create cost-effective program-focused websites quickly.\r\n", "connection_mode_default": "git", "icon_url": "https://assets.getpantheon.com/files/product_icons/open-aid.png", "label": "OpenAid", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "2adff196-4672-44c9-af2a-4590963b90d8"}, {"machine_name": "openideal", "description": "[OpenideaL](http://www.openidealapp.com/) is an idea management system, for both public and commercial sectors. It is a powerful tool to analyze public opinion regarding products/services and identify trends.\r\n", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/openideal-icon.png", "label": "OpenIdeaL", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "86112161-4cb2-410f-8bb1-8a1fb4f56dae"}, {"machine_name": "openpublic", "description": "[OpenPublic](http://openpublicapp.com/) provides a content management system specially designed for open government goals, without compromising accessibility, security or usability.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/openpublic-icon.png", "label": "OpenPublic", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "b459145b-8771-4597-8b84-684a3d93dce0"}, {"machine_name": "openpublish", "description": "[OpenPublish](http://openpublishapp.com/) is a flexible and powerful CMS designed for the online news industry. It is built for flexibility, customization, and extension to help publishers focus on their content.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/openpublish-icon.png", "label": "OpenPublish", "organization_id": "b59dd35d-1ba4-4b6e-b904-966a58a834cd", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "bc77fa2f-2235-4eec-8e6b-4d69d1cf5908"}, {"machine_name": "panopoly", "description": "[Panopoly](http://drupal.org/project/panopoly) is a Panels powered distribution designed to be a base framework upon which to build other Drupal distributions, but will also work for general site building.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/panopoly-icon.png", "label": "Panopoly", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "8ad1efe0-0231-42ae-9520-c96241495b82"}, {"machine_name": "try_panopoly", "description": "[Panopoly](http://drupal.org/project/panopoly) is an enhanced version of Drupal with drag & drop page building tools, responsive layouts, a WYSIWYG, and [more.](\u201dhttp://drupal.org/node/1679838\u201d) See how awesome Drupal can be, right out of the box.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/panopoly-icon.png", "label": "Panopoly", "organization_id": "eace756e-33b1-471c-9f0c-2e51eca126bd", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "175cce4f-fa3f-4426-b1a6-e0fae9e19f2e"}, {"machine_name": "pivate-github-upstream", "description": "An upstream based on a private github repo", "connection_mode_default": "git", "icon_url": null, "label": "Pivate Github Upstream", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "wordpress", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "ba06828d-9507-4217-b7ed-7acb7f9812cf"}, {"machine_name": "plato_tipico", "description": "This is a a preconfigured distro with multi-language support for English & Spanish. Already comes with most of the necessary modules which will save you lots of time and research.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/plato-tipico-icon.png", "label": "Plato T\u00edpico", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "216f85b2-620b-470d-9597-f64ade76dc9a"}, {"machine_name": "protected-upstream", "description": "An upstream with credentials", "connection_mode_default": "git", "icon_url": "http://www.weblinsolutions.com/images/services/wordpress-page-img.png", "label": "Protected Upstream", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "c9f1311f-4cae-41ca-8276-cca230c25f37"}, {"machine_name": "pubsub-test-2", "description": null, "connection_mode_default": "sftp", "icon_url": null, "label": "Pubsub Test 2", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "3a821c48-63b1-4e29-b0f7-8d6a5cafb953"}, {"machine_name": "pushtape", "description": "Build better music websites with [Pushtape](http://drupal.org/project/pushtape), a Drupal distribution for musicians. Manage your music discography, create news updates, upload photos, post upcoming shows and more.", "connection_mode_default": "git", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/pushtape-icon.png", "label": "Pushtape", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "f141b5e0-a614-4294-a86c-6c24df9bf6c5"}, {"machine_name": "redhen_raiser", "description": "RedHen Raiser is a Drupal distribution for quickly launching peer-to-peer fundraising campaigns (also referred to as crowd fundraising, team fundraising, or viral fundraising campaigns). Individual and team fundraisers join campaigns with their own customizable pages and individual goals, all contributing to the overall campaign. RedHen Raiser features easy campaign creation for teams or individuals, goal progress widgets, campaign updates, automated start and end dates, single page donation forms, and it''s Commerce ready, just add your payment method and go!", "connection_mode_default": "sftp", "icon_url": "https://assets.getpantheon.com/files/product_icons/redhen-logo.png", "label": "RedHen Raiser", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "10d6937e-1dd2-4490-9950-11867ba43597"}, {"machine_name": "ronans-drops-8-sfz", "description": null, "connection_mode_default": "sftp", "icon_url": null, "label": "Ronan''s Drops 8", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "5de11c12-e5aa-4125-bc07-b0e14b1fd112"}, {"machine_name": "ronans-drops-8", "description": null, "connection_mode_default": "git", "icon_url": null, "label": "Ronan''s Drops 8", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "2375d5c6-8dc2-467f-836b-2ddab05ebe28"}, {"machine_name": "rtupstream", "description": "This a test upstream created by Ruby", "connection_mode_default": "sftp", "icon_url": "http://screencast.com/t/WdHX3CRFAc", "label": "Ruby Test Upstream", "organization_id": "d30aa414-861c-4d8d-b147-9c8ef2ba3365", "framework": "wordpress", "is_public_spinup_allowed": 0, "type": "product", "is_organization_association_forced": 0, "id": "10d2f3a5-728a-460f-afa9-dbaee10eef3b"}, {"machine_name": "rutgers_wp_custom", "description": "Rutgers University WordPress Custom Distribution for School Websites", "connection_mode_default": "git", "icon_url": "https://assets.getpantheon.com/sites/default/files/product_icons/RU.png", "label": "Rutgers School Website - Wordpress", "organization_id": "c735dff0-7de4-42cb-953d-e8f7634c662c", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": 1, "id": "e44da442-2b1e-639a-f790-edf7cb26c9a0"}, {"machine_name": "ruwwpucd", "description": "Rutgers University WordPress Custom Distribution for Unit/Organization Websites", "connection_mode_default": "git", "icon_url": "https://assets.getpantheon.com/sites/default/files/product_icons/RU.png", "label": "Rutgers Unit/Department Website - Wordpress", "organization_id": "c735dff0-7de4-42cb-953d-e8f7634c662c", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": 1, "id": "64408272-2d4b-614a-753b-334a2baf4263"}, {"machine_name": "sprowt-09022016", "description": "A Drupal 7 upstream for Pantheon", "connection_mode_default": "git", "icon_url": "http://www.coalmarch.com/sites/default/files/sprowt-logo.png", "label": "Sprowt", "organization_id": "08b99cd5-81a3-4b67-acc1-d5dba50390f8", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "custom", "is_organization_association_forced": 0, "id": "158e2876-13a4-427f-96cf-d29a3daa538b"}, {"machine_name": "static_html", "description": "This is an upstream for Pantheon that is used for static HTML/JS/CSS sites ", "connection_mode_default": "git", "icon_url": "https://image.freepik.com/free-icon/html-5-logo_318-79489.png", "label": "Static HTML", "organization_id": "f057733a-d6a0-4985-81fd-1174cd5da49b", "framework": "unknown", "is_public_spinup_allowed": 1, "type": "custom", "is_organization_association_forced": 0, "id": "de858279-cb87-4664-825c-fcb4c2928717"}, {"machine_name": "test-ps-digital", "description": "Test Custom Upstream created during the Jump Start", "connection_mode_default": "git", "icon_url": null, "label": "Test PS Digital", "organization_id": "977a8c1f-b420-499f-a675-af5dfadd55a6", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "8ed60b88-e3bb-4981-9701-777ee9e40435"}, {"machine_name": "wordpress", "description": "Open source software with powerful features, and the freedom to build anything you want.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/wordpress-logo.png", "label": "WordPress", "organization_id": "", "framework": "wordpress", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "e8fe8550-1ab9-4964-8838-2b9abdccf4bf"}, {"machine_name": "wordpress-class", "description": "Wordpress 2017 for the Exchange Students of Shasta College", "connection_mode_default": "sftp", "icon_url": null, "label": "Wordpress Class", "organization_id": "8badbb50-093d-41db-8dd1-6aa78f9a6113", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "11111111-1111-1111-1111-111111111111"}]' +- + request: + method: GET + url: 'https://onebox/api/sites/11111111-1111-1111-1111-111111111111/authorizations' + headers: + Host: onebox + Accept-Encoding: null + Content-type: application/json + User-Agent: 'Terminus/1.6.2-dev (php_version=7.1.11&script=bin/terminus)' + Authorization: 'Bearer 11111111-1111-1111-1111-111111111111:dff7dc02-4bb5-11e7-b249-bc764e10b0ce:ioSO5zQNrGFgZUq7XnITr' + Accept: null + response: + status: + http_version: '1.1' + code: '200' + message: OK + headers: + Server: nginx + Date: 'Tue, 12 Dec 2017 05:31:13 GMT' + Content-Type: 'application/json; charset=utf-8' + Transfer-Encoding: chunked + Connection: keep-alive + X-Pantheon-Trace-Id: aac24500-defd-11e7-8ab4-5f1f81eb2a0e + X-Frame-Options: deny + Access-Control-Allow-Methods: GET + Access-Control-Allow-Headers: 'Origin, Content-Type, Accept' + Cache-Control: 'private, max-age=0, no-cache, no-store' + Pragma: no-cache + Vary: Accept-Encoding + Strict-Transport-Security: max-age=31536000 + body: '[{"environment": "dev", "is_user_authorized": true, "id": "do_restore", "description": "Restore code, database and files for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "config_import", "description": "Import configuration for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "restore_files", "description": "Restore files on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "unlock_environment", "description": "Unlock \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "lock", "description": "Lock \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "do_migration", "description": "Migrate site"}, {"environment": "dev", "is_user_authorized": false, "id": "flush", "description": "Invalidate filesystem cache on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "converge_environment", "description": "Converge \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "unlock", "description": "Unlock \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "converge_loadbalancer", "description": "Converge static IP for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "environment_converge_binding", "description": "Converge resource on environment"}, {"environment": "dev", "is_user_authorized": true, "id": "do_export", "description": "Export code, files and database from \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "change_backup_schedule", "description": "Change backup schedule for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "clear_styx_routes_to_bindings", "description": "Clear routing cache to containers for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "environment_remove_domain", "description": "Remove domain from environment \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "clear_cache", "description": "Clear cache for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "clone_files", "description": "Clone files to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "sync_code", "description": "Sync code on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "clone_database", "description": "Clone database to \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "merge_dev_into_cloud_development_environment", "description": "Merge code from master into \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "create_environment", "description": "Create environment \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "commit_and_push_on_server_changes", "description": "Commit code changes"}, {"environment": "dev", "is_user_authorized": true, "id": "import_database", "description": "Import database to \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "enable_environment_maintenance_mode", "description": "Enable maintenance mode for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "wp_replace_siteurl", "description": "Replace WordPress site URLs on \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "get_screenshot", "description": "Take screenshot of \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "update_database", "description": "Run drush \"updatedb\" on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "restore_database", "description": "Restore database on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "update_environment_setting", "description": "Update \"dev\" setting"}, {"environment": "dev", "is_user_authorized": true, "id": "environment_connect_domain", "description": "Connect domain to environment \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "clear_styx_routes_to_hostnames", "description": "Clear routing cache to hostnames for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "converge_valhalla", "description": "Converge valhalla to new cluster"}, {"environment": "dev", "is_user_authorized": true, "id": "restore_code", "description": "Restore code to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "wipe_environment", "description": "Wipe files and database in \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "enable_on_server_development", "description": "Enable on-server development via SFTP for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "lock_environment", "description": "Lock \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "automated_backup", "description": "Automated backup for the \"dev\" environment"}, {"environment": "dev", "is_user_authorized": true, "id": "environment_set_https", "description": "environment_set_https"}, {"environment": "dev", "is_user_authorized": true, "id": "merge_cloud_development_environment_into_dev", "description": "Merge code into master"}, {"environment": "dev", "is_user_authorized": true, "id": "wipe", "description": "Wipe files and database in \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "config_export", "description": "Export configuration for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "import_files", "description": "Import files to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "import_code", "description": "Import code to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "enable_git_mode", "description": "Enable git push mode for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "purge_varnish", "description": "Purge edge cache for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "cleanup_environment", "description": "Delete \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "rotate_password", "description": "Rotate password for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "apply_upstream_updates", "description": "Apply upstream updates"}, {"environment": "dev", "is_user_authorized": true, "id": "migrate_files", "description": "Migrate \"dev\" files to new cluster"}, {"environment": "dev", "is_user_authorized": true, "id": "cleanup_loadbalancer", "description": "Clean up static IP for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "delete_environment_setting", "description": "Delete \"dev\" setting"}, {"environment": "dev", "is_user_authorized": false, "id": "clear_code_cache", "description": "Clear Code Cache"}, {"environment": "dev", "is_user_authorized": true, "id": "do_import", "description": "Import code, files and database to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "deploy", "description": "Deploy code to \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "ban_varnish_routes", "description": "Clear edge cache for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "environment_update_pantheon_yml", "description": "Update pantheon.yml for environment"}, {"environment": "dev", "is_user_authorized": false, "id": "disable_environment_maintenance_mode", "description": "Disable maintenance mode for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "clear_redis_cache", "description": "Clear Redis cache for \"dev\""}, {"environment": "test", "is_user_authorized": true, "id": "do_restore", "description": "Restore code, database and files for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "config_import", "description": "Import configuration for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "restore_files", "description": "Restore files on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "unlock_environment", "description": "Unlock \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "lock", "description": "Lock \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "do_migration", "description": "Migrate site"}, {"environment": "test", "is_user_authorized": false, "id": "flush", "description": "Invalidate filesystem cache on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "converge_environment", "description": "Converge \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "unlock", "description": "Unlock \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "converge_loadbalancer", "description": "Converge static IP for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "environment_converge_binding", "description": "Converge resource on environment"}, {"environment": "test", "is_user_authorized": true, "id": "do_export", "description": "Export code, files and database from \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "change_backup_schedule", "description": "Change backup schedule for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "clear_styx_routes_to_bindings", "description": "Clear routing cache to containers for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "environment_remove_domain", "description": "Remove domain from environment \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "clear_cache", "description": "Clear cache for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "clone_files", "description": "Clone files to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "sync_code", "description": "Sync code on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "clone_database", "description": "Clone database to \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "merge_dev_into_cloud_development_environment", "description": "Merge code from master into \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "create_environment", "description": "Create environment \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "commit_and_push_on_server_changes", "description": "Commit code changes"}, {"environment": "test", "is_user_authorized": true, "id": "import_database", "description": "Import database to \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "enable_environment_maintenance_mode", "description": "Enable maintenance mode for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "wp_replace_siteurl", "description": "Replace WordPress site URLs on \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "get_screenshot", "description": "Take screenshot of \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "update_database", "description": "Run drush \"updatedb\" on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "restore_database", "description": "Restore database on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "update_environment_setting", "description": "Update \"test\" setting"}, {"environment": "test", "is_user_authorized": true, "id": "environment_connect_domain", "description": "Connect domain to environment \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "clear_styx_routes_to_hostnames", "description": "Clear routing cache to hostnames for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "converge_valhalla", "description": "Converge valhalla to new cluster"}, {"environment": "test", "is_user_authorized": true, "id": "restore_code", "description": "Restore code to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "wipe_environment", "description": "Wipe files and database in \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "enable_on_server_development", "description": "Enable on-server development via SFTP for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "lock_environment", "description": "Lock \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "automated_backup", "description": "Automated backup for the \"test\" environment"}, {"environment": "test", "is_user_authorized": true, "id": "environment_set_https", "description": "environment_set_https"}, {"environment": "test", "is_user_authorized": false, "id": "merge_cloud_development_environment_into_dev", "description": "Merge code into master"}, {"environment": "test", "is_user_authorized": true, "id": "wipe", "description": "Wipe files and database in \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "config_export", "description": "Export configuration for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "import_files", "description": "Import files to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "import_code", "description": "Import code to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "enable_git_mode", "description": "Enable git push mode for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "purge_varnish", "description": "Purge edge cache for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "cleanup_environment", "description": "Delete \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "rotate_password", "description": "Rotate password for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "apply_upstream_updates", "description": "Apply upstream updates"}, {"environment": "test", "is_user_authorized": true, "id": "migrate_files", "description": "Migrate \"test\" files to new cluster"}, {"environment": "test", "is_user_authorized": true, "id": "cleanup_loadbalancer", "description": "Clean up static IP for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "delete_environment_setting", "description": "Delete \"test\" setting"}, {"environment": "test", "is_user_authorized": false, "id": "clear_code_cache", "description": "Clear Code Cache"}, {"environment": "test", "is_user_authorized": true, "id": "do_import", "description": "Import code, files and database to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "deploy", "description": "Deploy code to \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "ban_varnish_routes", "description": "Clear edge cache for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "environment_update_pantheon_yml", "description": "Update pantheon.yml for environment"}, {"environment": "test", "is_user_authorized": false, "id": "disable_environment_maintenance_mode", "description": "Disable maintenance mode for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "clear_redis_cache", "description": "Clear Redis cache for \"test\""}, {"environment": "live", "is_user_authorized": true, "id": "do_restore", "description": "Restore code, database and files for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "config_import", "description": "Import configuration for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "restore_files", "description": "Restore files on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "unlock_environment", "description": "Unlock \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "lock", "description": "Lock \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "do_migration", "description": "Migrate site"}, {"environment": "live", "is_user_authorized": false, "id": "flush", "description": "Invalidate filesystem cache on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "converge_environment", "description": "Converge \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "unlock", "description": "Unlock \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "converge_loadbalancer", "description": "Converge static IP for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "environment_converge_binding", "description": "Converge resource on environment"}, {"environment": "live", "is_user_authorized": true, "id": "do_export", "description": "Export code, files and database from \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "change_backup_schedule", "description": "Change backup schedule for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "clear_styx_routes_to_bindings", "description": "Clear routing cache to containers for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "environment_remove_domain", "description": "Remove domain from environment \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "clear_cache", "description": "Clear cache for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "clone_files", "description": "Clone files to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "sync_code", "description": "Sync code on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "clone_database", "description": "Clone database to \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "merge_dev_into_cloud_development_environment", "description": "Merge code from master into \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "create_environment", "description": "Create environment \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "commit_and_push_on_server_changes", "description": "Commit code changes"}, {"environment": "live", "is_user_authorized": true, "id": "import_database", "description": "Import database to \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "enable_environment_maintenance_mode", "description": "Enable maintenance mode for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "wp_replace_siteurl", "description": "Replace WordPress site URLs on \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "get_screenshot", "description": "Take screenshot of \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "update_database", "description": "Run drush \"updatedb\" on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "restore_database", "description": "Restore database on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "update_environment_setting", "description": "Update \"live\" setting"}, {"environment": "live", "is_user_authorized": true, "id": "environment_connect_domain", "description": "Connect domain to environment \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "clear_styx_routes_to_hostnames", "description": "Clear routing cache to hostnames for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "converge_valhalla", "description": "Converge valhalla to new cluster"}, {"environment": "live", "is_user_authorized": true, "id": "restore_code", "description": "Restore code to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "wipe_environment", "description": "Wipe files and database in \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "enable_on_server_development", "description": "Enable on-server development via SFTP for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "lock_environment", "description": "Lock \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "automated_backup", "description": "Automated backup for the \"live\" environment"}, {"environment": "live", "is_user_authorized": true, "id": "environment_set_https", "description": "environment_set_https"}, {"environment": "live", "is_user_authorized": false, "id": "merge_cloud_development_environment_into_dev", "description": "Merge code into master"}, {"environment": "live", "is_user_authorized": true, "id": "wipe", "description": "Wipe files and database in \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "config_export", "description": "Export configuration for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "import_files", "description": "Import files to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "import_code", "description": "Import code to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "enable_git_mode", "description": "Enable git push mode for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "purge_varnish", "description": "Purge edge cache for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "cleanup_environment", "description": "Delete \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "rotate_password", "description": "Rotate password for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "apply_upstream_updates", "description": "Apply upstream updates"}, {"environment": "live", "is_user_authorized": true, "id": "migrate_files", "description": "Migrate \"live\" files to new cluster"}, {"environment": "live", "is_user_authorized": true, "id": "cleanup_loadbalancer", "description": "Clean up static IP for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "delete_environment_setting", "description": "Delete \"live\" setting"}, {"environment": "live", "is_user_authorized": false, "id": "clear_code_cache", "description": "Clear Code Cache"}, {"environment": "live", "is_user_authorized": true, "id": "do_import", "description": "Import code, files and database to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "deploy", "description": "Deploy code to \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "ban_varnish_routes", "description": "Clear edge cache for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "environment_update_pantheon_yml", "description": "Update pantheon.yml for environment"}, {"environment": "live", "is_user_authorized": false, "id": "disable_environment_maintenance_mode", "description": "Disable maintenance mode for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "clear_redis_cache", "description": "Clear Redis cache for \"live\""}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "change_site_service_level", "description": "Change site plan"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "transfer_ownership", "description": "Transfer ownership to a user or an organization"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_multidev", "description": "enable_multidev"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "reenable_site", "description": "Whitelist the site from platform abuse checks"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_https", "description": "Converge HTTPS"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_multidev_for_site", "description": "Enable multidev"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "invite_to_pay", "description": "Invite a new user to pay for the site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_secure_runtime_access_for_site", "description": "Disable secure runtime access"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "associate_site_instrument", "description": "Associate a payment method and a site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "promote_site_user_to_owner", "description": "Promote user to owner"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_binding_after_migration", "description": "Converge binding after migration"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_zone", "description": "Bring environments to desired zone"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "remove_site_user_membership", "description": "Remove a user from the site team"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "verify_migration_state", "description": "Verify migration state for site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "remove_site_organization_membership", "description": "Remove supporting organization"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_site_status", "description": "Update site status"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_cloud_development_environment", "description": "Delete a Multidev environment"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_site", "description": "Disable site due to platform abuse"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_binding", "description": "Delete binding for site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "add_site_user_membership", "description": "Add user to site team"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "set_user_in_charge", "description": "Set user in charge"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "check_for_spam", "description": "Converge site metadata"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_change_management_for_site", "description": "Disable change management"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "migrate_binding_for_site", "description": "Migrate binding for site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_new_relic_for_site", "description": "Enable New Relic"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "add_site_organization_membership", "description": "Add supporting organization to site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "cleanup_binding_properties", "description": "Cleanup binding properties for site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_change_management", "description": "disable_change_management"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "upgrade_to_global_edge_https", "description": "Start upgrade to Global CDN"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "start_migration", "description": "Start migration"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_site_organization_membership", "description": "Change supporting organization role"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "complete_migration", "description": "Complete migration"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_multidev", "description": "disable_multidev"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "cleanup_site", "description": "Delete site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "deploy_product", "description": "Deploy a CMS (Drupal or WordPress)"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disassociate_site_instrument", "description": "Remove a payment method from a site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_secure_runtime_access_for_site", "description": "Enable secure runtime access"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_new_relic_for_site", "description": "Disable New Relic"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_site", "description": "Bring environments to desired configuration state"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "switch_upstream", "description": "Switch Upstream"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_migration_method", "description": "Update migration method"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_multidev_for_site", "description": "Disable multidev"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_change_management_for_site", "description": "Enable change management"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_site_setting", "description": "Update site setting"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_site_setting", "description": "Delete site setting"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_valhalla", "description": "Converge valhalla to new cluster"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "downgrade_from_global_edge_https", "description": "Revert to legacy HTTPS"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_site", "description": "Delete site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "create_cloud_development_environment", "description": "Create a Multidev environment"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_environment_branch", "description": "Delete a Multidev environment branch"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "clear_code_cache", "description": "Clear Code Cache"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "unfreeze_site", "description": "unfreeze_site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "configure_secure_runtime_access_for_site", "description": "configure_secure_runtime_access_for_site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "freeze_site", "description": "Freeze site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "remove_own_site_user_membership", "description": "Remove yourself from the site team."}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "site_converge_binding", "description": "Converge resource on environment"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "transfer_site_payment_to_organization", "description": "Transfer site billing to organization"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_change_management", "description": "enable_change_management"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_site_user_membership", "description": "Change a user role on the site team"}]' diff --git a/tests/fixtures/site-upstream-set-wrong-framework.yml b/tests/fixtures/site-upstream-set-wrong-framework.yml index 376c8d36a..19f5b550d 100644 --- a/tests/fixtures/site-upstream-set-wrong-framework.yml +++ b/tests/fixtures/site-upstream-set-wrong-framework.yml @@ -218,3 +218,34 @@ Vary: Accept-Encoding Strict-Transport-Security: max-age=31536000 body: '[{"machine_name": "advostarter-d8", "description": null, "connection_mode_default": "git", "icon_url": null, "label": "Advostarter D8", "organization_id": "2d9c0d71-3bc6-4f3a-8517-d4de231ed69a", "framework": "drupal8", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "cbdeadf3-669f-4848-94f5-c2354f256de8"}, {"machine_name": "openatrium2", "description": "[Atrium](http://openatrium.com/) is an adaptable platform that allows you to confidently engage with your colleagues through convenient collaboration.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/openatrium-icon.png", "label": "Atrium", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "31bc4254-be20-4e8d-afe6-6c585e58435a"}, {"machine_name": "backdrop", "description": "Backdrop is a fully-featured content management system that allows non-technical users to manage a wide-variety of content. It can be used to create blogs, forums, image galleries, social networks, intranets, and more.", "connection_mode_default": "git", "icon_url": "https://live-pantheon-assets.gotpantheon.com/files/product_icons/backdrop.png", "label": "Backdrop", "organization_id": "36b51e56-4969-4deb-a0e2-093bcc66862c", "framework": "backdrop", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "bf703821-4c18-45a1-88b8-3d9ec302273d"}, {"machine_name": "cuexpress", "description": "The Express install profile designed and supported by Developers to allow Site Owners to create great looking websites that meet a university''s accessibility, security, and branding policies. Site Owner are not Site Builders. Express users are not expected (or allowed) to create content types, fields, or views. While limiting, this approach makes it possible to maintain a large number of Express sites with a relatively small staff.", "connection_mode_default": "sftp", "icon_url": "https://www.cu.edu/sites/all/themes/cu/logo_small.png", "label": "CU Express 3", "organization_id": "63a252dd-5802-4e3e-ad99-02ddee681f34", "framework": "drupal8", "is_public_spinup_allowed": true, "type": "product", "is_organization_association_forced": 0, "id": "6413825e-7c23-3549-bbf1-c797251bf6e9"}, {"machine_name": "civicrm_starterkit", "description": "[CiviCRM](http://civicrm.org/) is a web-based, open source, CRM geared toward meeting the needs of non-profit and civic-sector organizations. The starter kit integrates CiviCRM with Drupal.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/civicrm-icon.png", "label": "CiviCRM Starter Kit", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "3b754bc2-48f8-4388-b5b5-2631098d03de"}, {"machine_name": "kickstart", "description": "A software distribution for sites of any size that provides all the power and flexibility of Drupal Commerce, combined with components that accelerate creation and launch of an online store.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/commerce-kickstart-icon.png", "label": "Commerce Kickstart", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "8a662dde-53d6-4fdb-8eac-eea9f5848d00"}, {"machine_name": "dkan", "description": "DKAN is a Drupal-based open data platform with a full suite of cataloging, publishing and visualization features that allows governments, nonprofits and universities to easily publish data to the public.", "connection_mode_default": "git", "icon_url": "https://cloud.githubusercontent.com/assets/512243/4800565/8f59086c-5e27-11e4-9f4f-5df0a5731282.png", "label": "DKAN", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "d7370d7e-46fb-4b10-b79f-942b5abf51de"}, {"machine_name": "demo-upstream", "description": null, "connection_mode_default": "git", "icon_url": null, "label": "Demo Upstream", "organization_id": "e106ce89-29d1-4c3f-962c-39d2ce73c97f", "framework": "drupal", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "b1057113-272a-4509-b0b0-1362ec31d71c"}, {"machine_name": "drops-8-composer", "description": "Drops-8, managed by Composer", "connection_mode_default": "sftp", "icon_url": "https://getcomposer.org/img/logo-composer-transparent.png", "label": "Drops 8 Composer", "organization_id": "5ae1fa30-8cc4-4894-8ca9-d50628dcba17", "framework": "drupal8", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "35b0e365-a191-4c70-adbe-9d02d01343f3"}, {"machine_name": "drupal6", "description": "Drupal 6 sites run on Pantheon, but Drupal 6 reached end of life on February 24th, 2016.\r\n", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/drupal6-icon.jpg", "label": "Drupal 6", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "974b75c2-4ba7-49f8-8a54-3a45c07dfe02"}, {"machine_name": "drupal7", "description": "The most widely installed release of the powerful open source content management platform.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/drupal7-icon.jpg", "label": "Drupal 7", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "21e1fada-199c-492b-97bd-0b36b53a9da0"}, {"machine_name": "drupal8", "description": "Launch, manage, and scale ambitious digital experiences\u2014with the flexibility to build great websites or push beyond the browser. Proudly open source.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/drupal8-icon.png", "label": "Drupal 8", "organization_id": "", "framework": "drupal8", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "8a129104-9d37-4082-aaf8-e6f31154644e"}, {"machine_name": "drupal8-php7", "description": "*Swankiest* Upstream", "connection_mode_default": "git", "icon_url": "https://www.drupal.org/files/drupal%208%20logo%20isolated%20CMYK%2072.png", "label": "Drupal8 PHP", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "4fa4f7d1-e341-48f7-9594-4e7c21b9bb68"}, {"machine_name": "easteregg-kit", "description": "Easterseals Main Distribution - Developed and Managed by Molly Duggan Associates for exclusive use on Easterseals.", "connection_mode_default": "sftp", "icon_url": "https://www.drupal.org/files/drupal%208%20logo%20Stacked%20CMYK%20300.png", "label": "EasterEgg Kit", "organization_id": "c27b42df-c2cb-c2ae-d979-ddc254a8bc44", "framework": "drupal8", "is_public_spinup_allowed": 1, "type": "custom", "is_organization_association_forced": 0, "id": "feb5fe01-bd8b-45dd-a753-e7d48b72b2e6"}, {"machine_name": "drupal-patterns", "description": "This is the Elephant Ventures profile distribution called Drupal Patterns.\r\nIt''s a responsive theme built for marketing websites.", "connection_mode_default": "git", "icon_url": "https://assets.getpantheon.com/sites/default/files/product_icons/ev-logo-square-sm.png", "label": "Elephant Ventures Drupal Patterns", "organization_id": "9813aeef-d889-4afc-9dfd-5a7433a853c9", "framework": "drupal", "is_public_spinup_allowed": true, "type": "product", "is_organization_association_forced": 0, "id": "0fce9338-bd6f-4b87-a489-e9928a027696"}, {"machine_name": "empty-7", "description": "This is an empty repository that is, save for this explanatory text, devoid of all content. This upstream is appropriate to use in situations where a Pantheon site will be created through a build step (see the Terminus Build Tools Plugin, https://github.com/pantheon-systems/terminus-build-tools-plugin) and managed completely by Composer.", "connection_mode_default": "git", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/drupal7-icon.jpg", "label": "Empty Drupal 7", "organization_id": "e9527ac9-e2e0-460f-acf1-04f7e2f5a7ba", "framework": "drupal", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "f575e77a-ff49-4bab-a53c-dbf8f59247bc"}, {"machine_name": "empty", "description": "This is an empty repository that is, save for this explanatory text, devoid of all content. This upstream is appropriate to use in situations where a Pantheon site will be created through a build step (see the Terminus Build Tools Plugin, https://github.com/pantheon-systems/terminus-build-tools-plugin) and managed completely by Composer.", "connection_mode_default": "sftp", "icon_url": "https://www.drupal.org/sites/all/modules/drupalorg/drupalorg/images/d8.svg", "label": "Empty Upstream", "organization_id": "812982f5-4a0c-4ddf-b847-267943be23fe", "framework": "drupal8", "is_public_spinup_allowed": true, "type": "core", "is_organization_association_forced": 0, "id": "4c7176de-e079-eed1-154d-44d5a9945b65"}, {"machine_name": "empty-wordpress", "description": "This is an empty repository that is, save for this explanatory text, devoid of all content. This upstream is appropriate to use in situations where a Pantheon site will be created through a build step (see the Terminus Build Tools Plugin, https://github.com/pantheon-systems/terminus-build-tools-plugin) and managed completely by Composer.", "connection_mode_default": "git", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/wordpress-logo.png", "label": "Empty WordPress", "organization_id": "e9527ac9-e2e0-460f-acf1-04f7e2f5a7ba", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "53711c64-41eb-4f42-9ca9-a370f8e1e36f"}, {"machine_name": "fcpsschools", "description": "Fairfax County Public Schools install profile", "connection_mode_default": "sftp", "icon_url": "https://forumone.com/apple-touch-icon-76x76.png", "label": "Fairfax County Public Schools", "organization_id": "a7e4d66b-ab92-481b-ab77-626b8562544e", "framework": "drupal8", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": 0, "id": "c28628b2-6b8f-4962-9838-69295c3fff68"}, {"machine_name": "inaccessible-upstream", "description": "This upstream requires credentials but it doesn''t have any. Using this upstream will trigger an error.", "connection_mode_default": "git", "icon_url": null, "label": "Inaccessible Upstream", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "wordpress", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "1f3b2569-b4f6-43ca-a8ae-11c38d90778e"}, {"machine_name": "mindgrub-test", "description": null, "connection_mode_default": "git", "icon_url": null, "label": "Mindgrub Test", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "595003f1-e82e-4af8-ac18-65d09da2f6c5"}, {"machine_name": "my-demo-upstream", "description": "This is part of my *demo*.", "connection_mode_default": "sftp", "icon_url": null, "label": "My Demo Upstream", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "66665092-2d26-47c8-b7c3-a920a37fb805"}, {"machine_name": "my-upstream-for-demo", "description": "This is a SuperDemo upstream", "connection_mode_default": "sftp", "icon_url": null, "label": "My Upstream for Demo", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "745bfede-0557-42ea-a115-246e3b60e8e0"}, {"machine_name": "openoutreach", "description": "[Open Outreach](http://drupal.org/project/openoutreach) is a Drupal distribution written to provide grassroots, activist, and nonprofit groups with the web tools they need for effective public engagement.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/openoutreach-icon.png", "label": "Open Outreach", "organization_id": "eace756e-33b1-471c-9f0c-2e51eca126bd", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "4c17f505-05d0-4b79-b38a-0bc548405a10"}, {"machine_name": "openrestaurant", "description": "The [Open Restaurant distribution](http://open.restaurant/) has everything you need to kickstart your restaurant website. It comes with a menu management system, a reservation system, a customizable blog, events management and a responsive theme.\r\n", "connection_mode_default": "git", "icon_url": "https://www.drupal.org/files/styles/grid-3/public/project-images/open-restaurant-logo.png", "label": "Open Restaurant", "organization_id": "eace756e-33b1-471c-9f0c-2e51eca126bd", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "6eb1ad36-afef-46d7-90d1-3a1bd4296863"}, {"machine_name": "openaid", "description": "[OpenAid](https://openaiddistro.org) is a turnkey website platform designed to help cause-driven organizations create cost-effective program-focused websites quickly.\r\n", "connection_mode_default": "git", "icon_url": "https://assets.getpantheon.com/files/product_icons/open-aid.png", "label": "OpenAid", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "2adff196-4672-44c9-af2a-4590963b90d8"}, {"machine_name": "openideal", "description": "[OpenideaL](http://www.openidealapp.com/) is an idea management system, for both public and commercial sectors. It is a powerful tool to analyze public opinion regarding products/services and identify trends.\r\n", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/openideal-icon.png", "label": "OpenIdeaL", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "86112161-4cb2-410f-8bb1-8a1fb4f56dae"}, {"machine_name": "openpublic", "description": "[OpenPublic](http://openpublicapp.com/) provides a content management system specially designed for open government goals, without compromising accessibility, security or usability.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/openpublic-icon.png", "label": "OpenPublic", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "b459145b-8771-4597-8b84-684a3d93dce0"}, {"machine_name": "openpublish", "description": "[OpenPublish](http://openpublishapp.com/) is a flexible and powerful CMS designed for the online news industry. It is built for flexibility, customization, and extension to help publishers focus on their content.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/openpublish-icon.png", "label": "OpenPublish", "organization_id": "b59dd35d-1ba4-4b6e-b904-966a58a834cd", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "bc77fa2f-2235-4eec-8e6b-4d69d1cf5908"}, {"machine_name": "panopoly", "description": "[Panopoly](http://drupal.org/project/panopoly) is a Panels powered distribution designed to be a base framework upon which to build other Drupal distributions, but will also work for general site building.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/panopoly-icon.png", "label": "Panopoly", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "8ad1efe0-0231-42ae-9520-c96241495b82"}, {"machine_name": "try_panopoly", "description": "[Panopoly](http://drupal.org/project/panopoly) is an enhanced version of Drupal with drag & drop page building tools, responsive layouts, a WYSIWYG, and [more.](\u201dhttp://drupal.org/node/1679838\u201d) See how awesome Drupal can be, right out of the box.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/panopoly-icon.png", "label": "Panopoly", "organization_id": "eace756e-33b1-471c-9f0c-2e51eca126bd", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "175cce4f-fa3f-4426-b1a6-e0fae9e19f2e"}, {"machine_name": "pivate-github-upstream", "description": "An upstream based on a private github repo", "connection_mode_default": "git", "icon_url": null, "label": "Pivate Github Upstream", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "wordpress", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "ba06828d-9507-4217-b7ed-7acb7f9812cf"}, {"machine_name": "plato_tipico", "description": "This is a a preconfigured distro with multi-language support for English & Spanish. Already comes with most of the necessary modules which will save you lots of time and research.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/plato-tipico-icon.png", "label": "Plato T\u00edpico", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "216f85b2-620b-470d-9597-f64ade76dc9a"}, {"machine_name": "protected-upstream", "description": "An upstream with credentials", "connection_mode_default": "git", "icon_url": "http://www.weblinsolutions.com/images/services/wordpress-page-img.png", "label": "Protected Upstream", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "c9f1311f-4cae-41ca-8276-cca230c25f37"}, {"machine_name": "pubsub-test-2", "description": null, "connection_mode_default": "sftp", "icon_url": null, "label": "Pubsub Test 2", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "3a821c48-63b1-4e29-b0f7-8d6a5cafb953"}, {"machine_name": "pushtape", "description": "Build better music websites with [Pushtape](http://drupal.org/project/pushtape), a Drupal distribution for musicians. Manage your music discography, create news updates, upload photos, post upcoming shows and more.", "connection_mode_default": "git", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/pushtape-icon.png", "label": "Pushtape", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "f141b5e0-a614-4294-a86c-6c24df9bf6c5"}, {"machine_name": "redhen_raiser", "description": "RedHen Raiser is a Drupal distribution for quickly launching peer-to-peer fundraising campaigns (also referred to as crowd fundraising, team fundraising, or viral fundraising campaigns). Individual and team fundraisers join campaigns with their own customizable pages and individual goals, all contributing to the overall campaign. RedHen Raiser features easy campaign creation for teams or individuals, goal progress widgets, campaign updates, automated start and end dates, single page donation forms, and it''s Commerce ready, just add your payment method and go!", "connection_mode_default": "sftp", "icon_url": "https://assets.getpantheon.com/files/product_icons/redhen-logo.png", "label": "RedHen Raiser", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "10d6937e-1dd2-4490-9950-11867ba43597"}, {"machine_name": "ronans-drops-8-sfz", "description": null, "connection_mode_default": "sftp", "icon_url": null, "label": "Ronan''s Drops 8", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "5de11c12-e5aa-4125-bc07-b0e14b1fd112"}, {"machine_name": "ronans-drops-8", "description": null, "connection_mode_default": "git", "icon_url": null, "label": "Ronan''s Drops 8", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "2375d5c6-8dc2-467f-836b-2ddab05ebe28"}, {"machine_name": "rtupstream", "description": "This a test upstream created by Ruby", "connection_mode_default": "sftp", "icon_url": "http://screencast.com/t/WdHX3CRFAc", "label": "Ruby Test Upstream", "organization_id": "d30aa414-861c-4d8d-b147-9c8ef2ba3365", "framework": "wordpress", "is_public_spinup_allowed": 0, "type": "product", "is_organization_association_forced": 0, "id": "10d2f3a5-728a-460f-afa9-dbaee10eef3b"}, {"machine_name": "rutgers_wp_custom", "description": "Rutgers University WordPress Custom Distribution for School Websites", "connection_mode_default": "git", "icon_url": "https://assets.getpantheon.com/sites/default/files/product_icons/RU.png", "label": "Rutgers School Website - Wordpress", "organization_id": "c735dff0-7de4-42cb-953d-e8f7634c662c", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": 1, "id": "e44da442-2b1e-639a-f790-edf7cb26c9a0"}, {"machine_name": "ruwwpucd", "description": "Rutgers University WordPress Custom Distribution for Unit/Organization Websites", "connection_mode_default": "git", "icon_url": "https://assets.getpantheon.com/sites/default/files/product_icons/RU.png", "label": "Rutgers Unit/Department Website - Wordpress", "organization_id": "c735dff0-7de4-42cb-953d-e8f7634c662c", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": 1, "id": "64408272-2d4b-614a-753b-334a2baf4263"}, {"machine_name": "sprowt-09022016", "description": "A Drupal 7 upstream for Pantheon", "connection_mode_default": "git", "icon_url": "http://www.coalmarch.com/sites/default/files/sprowt-logo.png", "label": "Sprowt", "organization_id": "08b99cd5-81a3-4b67-acc1-d5dba50390f8", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "custom", "is_organization_association_forced": 0, "id": "158e2876-13a4-427f-96cf-d29a3daa538b"}, {"machine_name": "static_html", "description": "This is an upstream for Pantheon that is used for static HTML/JS/CSS sites ", "connection_mode_default": "git", "icon_url": "https://image.freepik.com/free-icon/html-5-logo_318-79489.png", "label": "Static HTML", "organization_id": "f057733a-d6a0-4985-81fd-1174cd5da49b", "framework": "unknown", "is_public_spinup_allowed": 1, "type": "custom", "is_organization_association_forced": 0, "id": "de858279-cb87-4664-825c-fcb4c2928717"}, {"machine_name": "test-ps-digital", "description": "Test Custom Upstream created during the Jump Start", "connection_mode_default": "git", "icon_url": null, "label": "Test PS Digital", "organization_id": "977a8c1f-b420-499f-a675-af5dfadd55a6", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "8ed60b88-e3bb-4981-9701-777ee9e40435"}, {"machine_name": "wordpress", "description": "Open source software with powerful features, and the freedom to build anything you want.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/wordpress-logo.png", "label": "WordPress", "organization_id": "", "framework": "wordpress", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "e8fe8550-1ab9-4964-8838-2b9abdccf4bf"}, {"machine_name": "wordpress-class", "description": "Wordpress 2017 for the Exchange Students of Shasta College", "connection_mode_default": "sftp", "icon_url": null, "label": "Wordpress Class", "organization_id": "8badbb50-093d-41db-8dd1-6aa78f9a6113", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "11111111-1111-1111-1111-111111111111"}]' +- + request: + method: GET + url: 'https://onebox/api/sites/11111111-1111-1111-1111-111111111111/authorizations' + headers: + Host: onebox + Accept-Encoding: null + Content-type: application/json + User-Agent: 'Terminus/1.6.2-dev (php_version=7.1.11&script=bin/terminus)' + Authorization: 'Bearer 11111111-1111-1111-1111-111111111111:f0f2f154-4bb5-11e7-ad24-bc764e1141f9:CuSW4cz3c9d3ql5aoFY3R' + Accept: null + response: + status: + http_version: '1.1' + code: '200' + message: OK + headers: + Server: nginx + Date: 'Tue, 12 Dec 2017 05:31:13 GMT' + Content-Type: 'application/json; charset=utf-8' + Transfer-Encoding: chunked + Connection: keep-alive + X-Pantheon-Trace-Id: aac24500-defd-11e7-8ab4-5f1f81eb2a0e + X-Frame-Options: deny + Access-Control-Allow-Methods: GET + Access-Control-Allow-Headers: 'Origin, Content-Type, Accept' + Cache-Control: 'private, max-age=0, no-cache, no-store' + Pragma: no-cache + Vary: Accept-Encoding + Strict-Transport-Security: max-age=31536000 + body: '[{"environment": "dev", "is_user_authorized": true, "id": "do_restore", "description": "Restore code, database and files for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "config_import", "description": "Import configuration for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "restore_files", "description": "Restore files on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "unlock_environment", "description": "Unlock \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "lock", "description": "Lock \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "do_migration", "description": "Migrate site"}, {"environment": "dev", "is_user_authorized": false, "id": "flush", "description": "Invalidate filesystem cache on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "converge_environment", "description": "Converge \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "unlock", "description": "Unlock \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "converge_loadbalancer", "description": "Converge static IP for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "environment_converge_binding", "description": "Converge resource on environment"}, {"environment": "dev", "is_user_authorized": true, "id": "do_export", "description": "Export code, files and database from \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "change_backup_schedule", "description": "Change backup schedule for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "clear_styx_routes_to_bindings", "description": "Clear routing cache to containers for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "environment_remove_domain", "description": "Remove domain from environment \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "clear_cache", "description": "Clear cache for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "clone_files", "description": "Clone files to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "sync_code", "description": "Sync code on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "clone_database", "description": "Clone database to \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "merge_dev_into_cloud_development_environment", "description": "Merge code from master into \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "create_environment", "description": "Create environment \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "commit_and_push_on_server_changes", "description": "Commit code changes"}, {"environment": "dev", "is_user_authorized": true, "id": "import_database", "description": "Import database to \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "enable_environment_maintenance_mode", "description": "Enable maintenance mode for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "wp_replace_siteurl", "description": "Replace WordPress site URLs on \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "get_screenshot", "description": "Take screenshot of \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "update_database", "description": "Run drush \"updatedb\" on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "restore_database", "description": "Restore database on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "update_environment_setting", "description": "Update \"dev\" setting"}, {"environment": "dev", "is_user_authorized": true, "id": "environment_connect_domain", "description": "Connect domain to environment \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "clear_styx_routes_to_hostnames", "description": "Clear routing cache to hostnames for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "converge_valhalla", "description": "Converge valhalla to new cluster"}, {"environment": "dev", "is_user_authorized": true, "id": "restore_code", "description": "Restore code to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "wipe_environment", "description": "Wipe files and database in \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "enable_on_server_development", "description": "Enable on-server development via SFTP for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "lock_environment", "description": "Lock \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "automated_backup", "description": "Automated backup for the \"dev\" environment"}, {"environment": "dev", "is_user_authorized": true, "id": "environment_set_https", "description": "environment_set_https"}, {"environment": "dev", "is_user_authorized": true, "id": "merge_cloud_development_environment_into_dev", "description": "Merge code into master"}, {"environment": "dev", "is_user_authorized": true, "id": "wipe", "description": "Wipe files and database in \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "config_export", "description": "Export configuration for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "import_files", "description": "Import files to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "import_code", "description": "Import code to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "enable_git_mode", "description": "Enable git push mode for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "purge_varnish", "description": "Purge edge cache for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "cleanup_environment", "description": "Delete \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "rotate_password", "description": "Rotate password for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "apply_upstream_updates", "description": "Apply upstream updates"}, {"environment": "dev", "is_user_authorized": true, "id": "migrate_files", "description": "Migrate \"dev\" files to new cluster"}, {"environment": "dev", "is_user_authorized": true, "id": "cleanup_loadbalancer", "description": "Clean up static IP for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "delete_environment_setting", "description": "Delete \"dev\" setting"}, {"environment": "dev", "is_user_authorized": false, "id": "clear_code_cache", "description": "Clear Code Cache"}, {"environment": "dev", "is_user_authorized": true, "id": "do_import", "description": "Import code, files and database to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "deploy", "description": "Deploy code to \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "ban_varnish_routes", "description": "Clear edge cache for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "environment_update_pantheon_yml", "description": "Update pantheon.yml for environment"}, {"environment": "dev", "is_user_authorized": false, "id": "disable_environment_maintenance_mode", "description": "Disable maintenance mode for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "clear_redis_cache", "description": "Clear Redis cache for \"dev\""}, {"environment": "test", "is_user_authorized": true, "id": "do_restore", "description": "Restore code, database and files for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "config_import", "description": "Import configuration for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "restore_files", "description": "Restore files on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "unlock_environment", "description": "Unlock \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "lock", "description": "Lock \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "do_migration", "description": "Migrate site"}, {"environment": "test", "is_user_authorized": false, "id": "flush", "description": "Invalidate filesystem cache on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "converge_environment", "description": "Converge \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "unlock", "description": "Unlock \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "converge_loadbalancer", "description": "Converge static IP for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "environment_converge_binding", "description": "Converge resource on environment"}, {"environment": "test", "is_user_authorized": true, "id": "do_export", "description": "Export code, files and database from \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "change_backup_schedule", "description": "Change backup schedule for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "clear_styx_routes_to_bindings", "description": "Clear routing cache to containers for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "environment_remove_domain", "description": "Remove domain from environment \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "clear_cache", "description": "Clear cache for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "clone_files", "description": "Clone files to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "sync_code", "description": "Sync code on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "clone_database", "description": "Clone database to \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "merge_dev_into_cloud_development_environment", "description": "Merge code from master into \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "create_environment", "description": "Create environment \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "commit_and_push_on_server_changes", "description": "Commit code changes"}, {"environment": "test", "is_user_authorized": true, "id": "import_database", "description": "Import database to \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "enable_environment_maintenance_mode", "description": "Enable maintenance mode for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "wp_replace_siteurl", "description": "Replace WordPress site URLs on \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "get_screenshot", "description": "Take screenshot of \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "update_database", "description": "Run drush \"updatedb\" on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "restore_database", "description": "Restore database on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "update_environment_setting", "description": "Update \"test\" setting"}, {"environment": "test", "is_user_authorized": true, "id": "environment_connect_domain", "description": "Connect domain to environment \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "clear_styx_routes_to_hostnames", "description": "Clear routing cache to hostnames for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "converge_valhalla", "description": "Converge valhalla to new cluster"}, {"environment": "test", "is_user_authorized": true, "id": "restore_code", "description": "Restore code to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "wipe_environment", "description": "Wipe files and database in \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "enable_on_server_development", "description": "Enable on-server development via SFTP for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "lock_environment", "description": "Lock \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "automated_backup", "description": "Automated backup for the \"test\" environment"}, {"environment": "test", "is_user_authorized": true, "id": "environment_set_https", "description": "environment_set_https"}, {"environment": "test", "is_user_authorized": false, "id": "merge_cloud_development_environment_into_dev", "description": "Merge code into master"}, {"environment": "test", "is_user_authorized": true, "id": "wipe", "description": "Wipe files and database in \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "config_export", "description": "Export configuration for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "import_files", "description": "Import files to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "import_code", "description": "Import code to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "enable_git_mode", "description": "Enable git push mode for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "purge_varnish", "description": "Purge edge cache for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "cleanup_environment", "description": "Delete \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "rotate_password", "description": "Rotate password for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "apply_upstream_updates", "description": "Apply upstream updates"}, {"environment": "test", "is_user_authorized": true, "id": "migrate_files", "description": "Migrate \"test\" files to new cluster"}, {"environment": "test", "is_user_authorized": true, "id": "cleanup_loadbalancer", "description": "Clean up static IP for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "delete_environment_setting", "description": "Delete \"test\" setting"}, {"environment": "test", "is_user_authorized": false, "id": "clear_code_cache", "description": "Clear Code Cache"}, {"environment": "test", "is_user_authorized": true, "id": "do_import", "description": "Import code, files and database to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "deploy", "description": "Deploy code to \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "ban_varnish_routes", "description": "Clear edge cache for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "environment_update_pantheon_yml", "description": "Update pantheon.yml for environment"}, {"environment": "test", "is_user_authorized": false, "id": "disable_environment_maintenance_mode", "description": "Disable maintenance mode for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "clear_redis_cache", "description": "Clear Redis cache for \"test\""}, {"environment": "live", "is_user_authorized": true, "id": "do_restore", "description": "Restore code, database and files for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "config_import", "description": "Import configuration for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "restore_files", "description": "Restore files on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "unlock_environment", "description": "Unlock \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "lock", "description": "Lock \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "do_migration", "description": "Migrate site"}, {"environment": "live", "is_user_authorized": false, "id": "flush", "description": "Invalidate filesystem cache on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "converge_environment", "description": "Converge \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "unlock", "description": "Unlock \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "converge_loadbalancer", "description": "Converge static IP for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "environment_converge_binding", "description": "Converge resource on environment"}, {"environment": "live", "is_user_authorized": true, "id": "do_export", "description": "Export code, files and database from \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "change_backup_schedule", "description": "Change backup schedule for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "clear_styx_routes_to_bindings", "description": "Clear routing cache to containers for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "environment_remove_domain", "description": "Remove domain from environment \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "clear_cache", "description": "Clear cache for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "clone_files", "description": "Clone files to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "sync_code", "description": "Sync code on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "clone_database", "description": "Clone database to \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "merge_dev_into_cloud_development_environment", "description": "Merge code from master into \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "create_environment", "description": "Create environment \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "commit_and_push_on_server_changes", "description": "Commit code changes"}, {"environment": "live", "is_user_authorized": true, "id": "import_database", "description": "Import database to \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "enable_environment_maintenance_mode", "description": "Enable maintenance mode for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "wp_replace_siteurl", "description": "Replace WordPress site URLs on \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "get_screenshot", "description": "Take screenshot of \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "update_database", "description": "Run drush \"updatedb\" on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "restore_database", "description": "Restore database on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "update_environment_setting", "description": "Update \"live\" setting"}, {"environment": "live", "is_user_authorized": true, "id": "environment_connect_domain", "description": "Connect domain to environment \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "clear_styx_routes_to_hostnames", "description": "Clear routing cache to hostnames for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "converge_valhalla", "description": "Converge valhalla to new cluster"}, {"environment": "live", "is_user_authorized": true, "id": "restore_code", "description": "Restore code to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "wipe_environment", "description": "Wipe files and database in \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "enable_on_server_development", "description": "Enable on-server development via SFTP for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "lock_environment", "description": "Lock \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "automated_backup", "description": "Automated backup for the \"live\" environment"}, {"environment": "live", "is_user_authorized": true, "id": "environment_set_https", "description": "environment_set_https"}, {"environment": "live", "is_user_authorized": false, "id": "merge_cloud_development_environment_into_dev", "description": "Merge code into master"}, {"environment": "live", "is_user_authorized": true, "id": "wipe", "description": "Wipe files and database in \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "config_export", "description": "Export configuration for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "import_files", "description": "Import files to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "import_code", "description": "Import code to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "enable_git_mode", "description": "Enable git push mode for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "purge_varnish", "description": "Purge edge cache for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "cleanup_environment", "description": "Delete \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "rotate_password", "description": "Rotate password for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "apply_upstream_updates", "description": "Apply upstream updates"}, {"environment": "live", "is_user_authorized": true, "id": "migrate_files", "description": "Migrate \"live\" files to new cluster"}, {"environment": "live", "is_user_authorized": true, "id": "cleanup_loadbalancer", "description": "Clean up static IP for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "delete_environment_setting", "description": "Delete \"live\" setting"}, {"environment": "live", "is_user_authorized": false, "id": "clear_code_cache", "description": "Clear Code Cache"}, {"environment": "live", "is_user_authorized": true, "id": "do_import", "description": "Import code, files and database to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "deploy", "description": "Deploy code to \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "ban_varnish_routes", "description": "Clear edge cache for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "environment_update_pantheon_yml", "description": "Update pantheon.yml for environment"}, {"environment": "live", "is_user_authorized": false, "id": "disable_environment_maintenance_mode", "description": "Disable maintenance mode for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "clear_redis_cache", "description": "Clear Redis cache for \"live\""}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "change_site_service_level", "description": "Change site plan"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "transfer_ownership", "description": "Transfer ownership to a user or an organization"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_multidev", "description": "enable_multidev"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "reenable_site", "description": "Whitelist the site from platform abuse checks"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_https", "description": "Converge HTTPS"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_multidev_for_site", "description": "Enable multidev"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "invite_to_pay", "description": "Invite a new user to pay for the site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_secure_runtime_access_for_site", "description": "Disable secure runtime access"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "associate_site_instrument", "description": "Associate a payment method and a site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "promote_site_user_to_owner", "description": "Promote user to owner"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_binding_after_migration", "description": "Converge binding after migration"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_zone", "description": "Bring environments to desired zone"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "remove_site_user_membership", "description": "Remove a user from the site team"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "verify_migration_state", "description": "Verify migration state for site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "remove_site_organization_membership", "description": "Remove supporting organization"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_site_status", "description": "Update site status"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_cloud_development_environment", "description": "Delete a Multidev environment"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_site", "description": "Disable site due to platform abuse"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_binding", "description": "Delete binding for site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "add_site_user_membership", "description": "Add user to site team"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "set_user_in_charge", "description": "Set user in charge"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "check_for_spam", "description": "Converge site metadata"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_change_management_for_site", "description": "Disable change management"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "migrate_binding_for_site", "description": "Migrate binding for site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_new_relic_for_site", "description": "Enable New Relic"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "add_site_organization_membership", "description": "Add supporting organization to site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "cleanup_binding_properties", "description": "Cleanup binding properties for site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_change_management", "description": "disable_change_management"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "upgrade_to_global_edge_https", "description": "Start upgrade to Global CDN"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "start_migration", "description": "Start migration"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_site_organization_membership", "description": "Change supporting organization role"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "complete_migration", "description": "Complete migration"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_multidev", "description": "disable_multidev"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "cleanup_site", "description": "Delete site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "deploy_product", "description": "Deploy a CMS (Drupal or WordPress)"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disassociate_site_instrument", "description": "Remove a payment method from a site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_secure_runtime_access_for_site", "description": "Enable secure runtime access"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_new_relic_for_site", "description": "Disable New Relic"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_site", "description": "Bring environments to desired configuration state"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "switch_upstream", "description": "Switch Upstream"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_migration_method", "description": "Update migration method"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_multidev_for_site", "description": "Disable multidev"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_change_management_for_site", "description": "Enable change management"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_site_setting", "description": "Update site setting"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_site_setting", "description": "Delete site setting"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_valhalla", "description": "Converge valhalla to new cluster"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "downgrade_from_global_edge_https", "description": "Revert to legacy HTTPS"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_site", "description": "Delete site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "create_cloud_development_environment", "description": "Create a Multidev environment"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_environment_branch", "description": "Delete a Multidev environment branch"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "clear_code_cache", "description": "Clear Code Cache"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "unfreeze_site", "description": "unfreeze_site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "configure_secure_runtime_access_for_site", "description": "configure_secure_runtime_access_for_site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "freeze_site", "description": "Freeze site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "remove_own_site_user_membership", "description": "Remove yourself from the site team."}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "site_converge_binding", "description": "Converge resource on environment"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "transfer_site_payment_to_organization", "description": "Transfer site billing to organization"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_change_management", "description": "enable_change_management"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_site_user_membership", "description": "Change a user role on the site team"}]' diff --git a/tests/fixtures/site-upstream-set.yml b/tests/fixtures/site-upstream-set.yml index c1d2d8c8c..54bcaf0b9 100644 --- a/tests/fixtures/site-upstream-set.yml +++ b/tests/fixtures/site-upstream-set.yml @@ -186,13 +186,13 @@ Pragma: no-cache Vary: Accept-Encoding Strict-Transport-Security: max-age=31536000 - body: '[{"archived": false, "invited_by_id": "3a1d2042-cca3-432e-94c4-12a8f2b6a950", "role": "team_member", "id": "d30aa414-861c-4d8d-b147-9c8ef2ba3365", "key": "11111111-1111-1111-1111-111111111111", "organization_id": "d30aa414-861c-4d8d-b147-9c8ef2ba3365", "user_id": "11111111-1111-1111-1111-111111111111", "admin": false, "organization": {"profile": {"machine_name": "reng-test", "change_service_url": "", "name": "Reng, Test", "email_domain": null, "org_logo_width": "", "org_logo_height": "", "base_domain": "reng.com", "billing_url": "", "terms_of_service": "", "org_logo": ""}, "id": "d30aa414-861c-4d8d-b147-9c8ef2ba3365"}}, {"archived": false, "invited_by_id": "8562d806-78cb-458f-ad3b-c874447cadfd", "role": "developer", "id": "240b2573-0f40-49e1-a104-f19b466909cc", "key": "11111111-1111-1111-1111-111111111111", "organization_id": "240b2573-0f40-49e1-a104-f19b466909cc", "user_id": "11111111-1111-1111-1111-111111111111", "admin": false, "organization": {"profile": {"machine_name": "aris-agency", "change_service_url": "", "name": "Ari''s Agency", "email_domain": null, "org_logo_width": 64, "org_logo_height": 85, "base_domain": null, "billing_url": "", "terms_of_service": "", "org_logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABVCAYAAAD5cuL2AAAgAElEQVR4nIS6Z1eU6dp2y894nzYAknMRi5zMEXObQQmSqUiRixyLnDOoYBYQFQMKigpIFhAxYkbFjKHtXj33B1y9nrX3O8b+MEcNPh7zOs7zqvsu1NJKSkgvKSGnpJTs4lKySktRlZWR+QtVRQU5v1D9IruymtzqanKq5j6zq+rJqT6AqroeVXU92dX1ZFfVk11ziOyaBoobjvP+3TTvv7zj6x/fmP3xB7Nfv/Ds2X0+fXrP69evuPdgnNnZT0yM9/LuzQtuD3fx/v0Mz6Yf8ePHDG/ePKKyKIu6kkyq8xKpLUimrjSF2tIkqgsSqChIorYwhfqqdJqbCnjwYAj4Fz9+fmdofJi+4VvcGuqlZ6Cbx09uk5gSSmScCLXE3FySCwpILyr6h8xfUjJLS8kqK/svAdmVleRU/Tt8DbnVNeRUHyC7qh5VzQFUNQfIqT5Abs3BOQG1DVQdb+H9u1d8+Paez99n+f7nX3z78Y2nT+7x/fssL18+5/Hju3z7Nsvt4S5ePHnE2O0bvP/wlhdvHvL58zQzM4+pKMikqjCNusIUDpZmUJ4XT0q0jJ1bN7J29WqWLnfHx8eT4vwUZmff8ffff/Fo6hE9Q7foHeyhZ6CH/pFbjIzeIFTsS7g8FLWo9ExiMlXEZGYSm6UiPjePxLwCUouKSC8pIb2klMyycjLLKsgpqyCnvJKcqqo5AVUH5qg5OBe66gB5VQfIqT5Ebk0D2b841HqBtzOv+PLlA7M/fjD74wfffvzg4cNJfv78ydNnj5l+85zPXz4wOdrH4wfDTE4O8e7tNB8/PeX50zucPlFPTUkq6QlyEmPC2L1tM6tXr2bNmjWsW7eetWs9WLVqDevXb2T9+vXs9fZGoZBTXVdF92DvnID+mwyN3KSmvpCQ4P3ExIShJktKRpaUTHhyMorkVCJS04lKz0CZk0NiXj7JBUWkFhWTXlKGqqSM7LIKsiuryK6sIqfqwBz/7wbUHCKn+tA/As7d6GXm/TSzsx/5+scPZn9849uPHzy4P8HPnz959Pgenz6/Z+b9W548GOf+xCAvXjzk5cun/PzzHS+e3SU1QcGOLRvYvG4ty92Xs8RtBWvXrMfFZTFOTq4sXbqM1avXsXr1OpavWM3iJcvnhGzYRFquio6uy1zv7WLy/gDRymDkigD8fL1REyuTmSMViTIVcUI60qQMItNUxOcUkpRXTEp+KWmF5WQUV5JRWkVWaTXZ5bVzc/4LVWUdqupDZFUdJKvqEKrqBrJrD6GqOc7I2APefZjhy+wXvv7xB99+/sXX7994cH+Cb3/84N7kOF++f+ft9GOeP3/I5O0ePnyY4fnz+3z79JyGmko2rd/I+rVrWbZsGfYOrjg6u+Ho4IrQxgEnl8XY2Tvj5rYYV9fFODm74+q6BAcnN5yc3dmwaQticRjNp4/T038RhcibsLD9BAT7oRYSFU9IVDwhkQmERicREpOMSJmKPDGNqLRs4rMLScwrJqWglLTCCtKLK8korSarvJasitq54L/IrDxAZuUBsqoOzVF9CFX1UR5MvWL6zSs+ffnI7PcffP35k9lvX7l/f4IvX79yZ3yYr3/8wbNH4zx/9ojb/Z28fz/Dq1eP6Ll+gR2bN7HeYzOrlq3CwcEJCwshLq5LcbR3xdbWEVt7Z6ysbTG3sEVgIUQodMTNbTlOTm44OLqydOlydu/eQWiYPyUlWYSGeBEQ4IXvfi/UZHExBEUn4h+ZSJA8jsAIJcHRiYRGJyGNTyc6PRdldiEJOUUk5ZeSWlRORkkVmaXVZFX8W8IBVJUHyKk6RFZF/X8EVB1CVXOMF28+8HL6FR8/zfL1j7/49O0PPs5+5vHjh7x//5Hbt/v49P0H90d7efZokuHhm7x99ZR7E/14e+5lsdsylrivxMnJDScnNyyF9nNY2WJtY4+5hQ2mAiuMBVYYm1liI3TA3t4ZO3tnFi9ejovbUjZv3UpYWCDR0aGIYrwJDvEjJNgHtU8v+rl67TyhimgCZXEEymIJlMUSEB5HcFQikvh0otKyUaoKSMwtIjm/bG4cSqvJKPu3hHqyKur/EZFZeRBVdQOqqkOoqo8x8+ELL6Zf8uHDFz59/c6H2e+8+/yJJ0+mmJ5+w/jEAJ++/cHwzcs8vjfOgwe3uXu7lzB/X7Zv3ITH2vUscVnJEvcVODu64ea6DDtbZ0xMzLGyFmLn4IKVlRATgSVmljY4u7hha+uEo6Mr9vbO2Ng6snjpCrZv34ZCEYI8KYT9IT6EivxR+/B6gvdPhzjcUEtQeBwB0hgCJNHsl0QTFB5HaGQ8svgkYjJUKFW5JOcVkVo414KM0hqyyuvIKq9HVTEXPqviAFmVB8msOkRmVQPZtceYnnnPsxfPef/hCx9nf/DhyzfefvjAq9dvePb8BXcnR/k0+5Xhng7u3u7n1cspyvPSEPn5snn1GjxWr8dB6MLyJStZ4rYMZwcX7G0cMTU1x9bWETs7R6ysbTEzt8TWzhE7eyecXdyxtXXERuiAta0jTk6ueHh4EBzkizgmEFG4H8dOHELt8+u7fJq+y6vHt5BHxBIgjcEvLBLfMAX7JdEEyqMRRceiSEwmKiWNeFUOqfmlZBSWk15aS2Z5LZnldXOU1ZNVfoCssrkxyKg+QnbtUV69ec2TZ095+/ELH7585/3nb7x+M8Pb9594+OgxT5884dOXz9we6GK07yrPnz+hubGaIM/drFuyjO0bN7PUxQV3J1fWLF+DrY0tzo4uWFra4ODghEBggbm5FU5OzgiF9giFtjg5uWBj64CVjR2WNvbY2Tuxdu0aggJ8EImDEMn3I5MGzwn48uYen5/fpffmBfwl0fiGKfAOUeAXFom/LJKg8AikcUoik1KJTc8kOauA9NxS0oqrySj7bwGZZfWoyufGIKO6kbz6k7x682ZOwIfPvHn/mdcfPvHy5TQfP39lYmKC9+9mePf+HePDN+m/cYnJyTt0nD2B2NebHes2sHXNKjYsX866JStxtHHAzsYOJwdnhEJbhEJ7BAILzMwEWFlZ4+DgjL29IzY2tghtHTG3sMHByRUHJxc2b9pIWODc94P9/n6Ehwej9uXtQ768fcTnNxO8fNRHZlYK3mIZPmFyfMLk7BfJCRDLCA2PJDxOSUxyCvFZ2aTkFpBWWE56cSXpxdVkltaSUVpHRtmciIyyOrp6h+jqHub1h9e8fvua91++Mv3+E28+fObJ02d8+DTL7cFePn37yczr19wd6WVs6CqPH9/n8dhNcsShhG7bimjLBuL37cFngwernN1wtrHF1tIKobUQB3snrKxssLNzxNzcGmMTAQJzGyytbLG0tsPK2g4boQMuLq7s2rGFnovHyM+IoDwvmYqCBNR+fHrOH5+e8/XjFB+ejTI6eBE/sRzvMCn7QmX4hEjwF0kIlMiQREUTEZ9ATFoGykwVSbklpBSWkV5URXpJDeklNWSU1pFeUkdGaR1ppVW0NJ9hYHiI0fFR7j9+xpsPX5h+94mHj6eYefeRgd4bzP74k6lHD7ndf52pB+M8eHCH2WcjnEtSUq4QUSUN5WxGAlnBvvh4rGG1iwsr3NywsrBFYGaFjY0tVlY2mAmsMBVYYSawwtxSiKWVLTZCh7kluHgJmzd6kBATSkKshLQEMdc7T6I2O3OPHx+f8fPTUz69nuTFZA+RcXH4hYrxDRHhGxKGX6iYALGMMJkCeXQsUYlJKNMySFLlkpJXQGpeBWn5FaQWVpFWVEN6ST3pJfWkFdVR2dDEsxdvmHrygqmnr3g+/ZGXb2a5e3eCl29m6L7RyafPPxnp76b3xgVev37F4/vD/Pl0mK+XGpm92Mi7s0eZOnGQ7tIcKuTBhG7fzCpXVxyshCx2ccFWaI+5wBwzM0vMza0xE1hh8UuAlY09dvYuLF++iu3bt5GcFEuCMgpVppKqkjTUPr6+y+zMY368n+L7u8e8fTrKnZHrBIgl7BeJ2R82R4BYSohEjiwiBoUygZjkVOLTs0hW5ZCcU0JqbhkphZWkFVWTWlRLalEtKYW11B87y+OpF0xNPefFy7dMPZ/hxetPjN6+zcPHT+nuvsq7d7N0dbZy9XIrr6Zf8fj+EOMtdfzrSiN/Xj7Mt/ZTzLQeZrKqgFu5SopFPnitcGWpnTMuQnssBJaYmQkQmFlhaSHE3MIGgbk1lla22No5Ye/giouLO8FhoVQfOEZOQQUHD9bRefkcah9f3uXr24f8/WOa7x+n+PBqgqmJy8jCYwgSi/APkxIQIsY/VESQRIJILkceGU20UklMchrx6ZkkZGeTnFtAck4pqXnlpBaUkVpQRWpBJamFlaQXVZOcU0JaQTmj958x9WaG8eFRJu/dY2iol7dvP3KjvZVb3Z08mXrMyMg1XrVW8/1SPT8u1PKtpZYndXmMFiUxUpBIR2YM4h0bWG5vj52lFVYW1pibmWNmaoHAzAqBwAqBuTUWlkJshA4IbZ1Yunwlk/fvM/3hA68+fODDj+985Q/UPryY4Mvr+/zr20v+/jE9dyU+6We4vxORWEZQmITAMAkBoWKCJRJCpFKkiggiYmKJiE8iJjkNZVYW8ao8ElXFJOeWkZhXTFJeGQl5lcT/Qw3xeVUMTT7jyZP33B4cZmx8nIePJnn8+AXX21u5f2eYe7f7aTxQwh9tDfy8dJAPp0uYOVbA0/oc7lencbsgllt5SvLlfuxa7oa9pRAzEwECMwvMTC0RmFlhYmqBmcAKgYUNNraO2Dm4smHzFsbvTvDq3Tu+/fwJfwP8C7WPL0b58mqS7zOP+fnpKd/fPmXm+RhPJ7oQyWWEiGQEh4kJChMRFCYmWCRGJJUjj4wiKk5JbEIC8SlpJKVlkZSVQ4qqiKScEhJzSkjMKScxp4LEnAricyqJy6mktb2HB1Ov6B+8zeBAL69eTvPw/n1utjfx+PFTxm9dJiQgmJ/tJ/mjrZo/z9TxuamaVwdzmSxPYSg7lvYMKQleW1hnZ42zpSUCUzMsjS0xM7PA1FSAwESAqZk55pZCrKztcHJ2Y9/eHXT13uJqby9d/X1c7+/l+sAt1GanJ/jwYoL3z+/w7vk475/f4/Pr+zy518PxhhpCZFGEiKWEiOfCB4vEhIglSBURKKKj5yQkpqBMSUeZnkViZgHKrCLiVEUoVaUoVWXEq8qIU1UQo6ogv/IwdyafMtg3Qm9XJ9MvZxgZ7qfz3Ammpp5y/HA9QcFh9JYk8mfHQb631vHqUB7Pa3O4nR9Ld2o4bcpgqoN3ErLKja3OQpba2iK0sMLCWIC5iRkCI3PMzayw+PWs4Oq6mJrqMrp6+7g+0M+NwQFuDAzRPTSC2st7t5hjiBcPh3k5Ncabp3d583iEx2OdyOURiCXhhIlkhIglhIglhIlFiKUSFBEKIqKiiIpPJC4xhdiUdOJSM4lLVxGXnktMegGxmYXEZhYSk1lETGYRSXmVDI/dZ2DgNlcvnuf589cM3erg7Kk6xgb7CA4KIjAohHBROLcKo3h3to63R8uZqs2iPzOK9vgQWqL8aBTtoD54J5Vh+9ji7oiNhRXmJgLWWNvRkSSnSerHhiXO2No54bFuFdEZOWQUV3DoVDPtN7vpGhiia2AItWcT3UyNXWdqrIdHd3qYutvPk8khXj0e4eXkAAdry5HKZIilEsKkUkIlUsLEIsLEIiRSKbKIcMKjYoiKiycqMZmY5FRi01TEpOYSnZZHVPockWkFRKQVEJVRSN/gGMPD41xuO8Pj+0/oaGviYssprpw7jZe/LyEhYeSFi5hUJZG7dwN1Mh+Oynw4IvemPmwPjdI9HJZ6ciRsJ/VSH353tcfaWMBGBxuKPNfRnSTjwC4P0vx9WbV4GT67tiFNy0ORWUhEZhHR2aUoc0uJLyhH7eHtDu4PXWVy+CqTQ9eZHO7m4XgfU5NDvHgwyv3RW8gjFEhkMkQSCSKJ+L8Qy6SIIhRIo6NRxCiJjE0mKiGD6KRMopKyiU7JJTIlj4jUfBQp+UQkF9LTP87t23foPH+OO6NjnDtWx1j/DUShwfj4+hMkFvH57FHOyfw5FeLN+UQF9fJ91Ibt4kikL81R+2iLDqAlwoeDkr0ErnBjo9CClE1LkLva06WUU7t1NV6rV7BhmRtpMRKkaflEZeYRpSokMreY2NxylHmVqN0buszkQAcTgx3cHezi7tDNOQljA0xNDPPywSixsVHIwyVIfjVBJBEjEov+I0IqRxKuQKqIRh4VT3hsCpHKNKKSVEQmZROZkkN4ci7hybnIE3LpuNbP0NAYfTeuMdjXz7lj9Qz2XMfTax/7A3xQScWMZMbTqQihI0LEcE48Tw7k86ghk7HKeIZyY7mkDOGE1Iva0J0o169AstyF6qBtpK9cRl9KLCUBu9m42IVdqxeTLvOntKYKcWoG0WkFRGYXEp1dSmxuOWp3bl1kZLCD27c6Gb15hVud7Qzc7GR86Cb3Rm8xNTHMvTv9yCOikcllSMNlSGSSOREiEWKxGLFUglgqRiyXIwmPQKaIQRatRK5MRR6fTnh8BrJ4FbL4bMKUOVzuHGB46Da3e3vpv9pB04EKKksr2OPjQ3BAKB9bG+iMj6B27yaO+3vxoq6QmcOlvKjJ5mlFOtcSwjgf7c9R2R7K9m8kap0zkpVOFHiu5Gy8iEzPrfiudGXXcnf81i4h0W8bjblpRMtkLFu7mUhVIdFZhcTmlKB2tb2Zo7WV1JUWU5OXS21uIWnxSaTGxFOQksmlljNMPXhAfFQk8ohwpOFyJDIpYqkEiWQOkUT8a0fIEMnkSORRiCKiEUUlIIlOQRqbijg2A0lcFpn5lXR2XKenu4/BGze4eu40h6tK8NrtxR4fH3yDQ+ivKeFAeCCt4gCqt63keV0e744W8rQ2i7G8WC7FBdES4UNtyHZUu1ej8HBHtNoVxWpnIlY7E77OjbA1bgSuWYx44xKSvNZQpAjgVEkBWcmp7BNHEK0qIiqrELWTtXVUFhVTkpdHbV4B1aosKpOTqEvPpDIhiZLYBApSVXReu4Q8IpxwhQJZuAypXPYfAWIREqkYkVSKWCZDJItAJI9ErIhDEpmEOCoFSXQqYVEZXL96lZ7eIQZ6B+i92snNS+e4eb6Fbdt34uXjy/4gf4JDpchFYs7G+XFG6seLgzlM1aZypySB3iwFbcogagM2k7lzOek7VhO61JF9Lg7sdxESsX4xsVuWErl+MQqPJcT9vgSV72pyA7ZTlxRJbX4eXvvDUKTmEJGZi9qPn3/x/Y+f/Pz+g+kHjzlbc4D6zFwKkpNIjY0hJjKcHGUiiRHhRMfFoFBEER4RjkQmQyqVIpPJkErFSCRzV6NEJkUsV8whi0AcriRUoUSqSCYmOYujB+u4cb2H3q5r3Gy/RHvTEY7VlLFx81a8vX3Z7x+If4iYvdJohoqyuZEh4XqaiDvlSm7lKriUEMoRmSfFvh4kbnJDusyRfYsd2WJvjmSFA/Eb3UnfsYL0HStI3racTK815Pl7UBm2lQxRMMvXeuCx25vQyDiiMnJQ+9ff8Odf8OOvv/n6x198+/4nn7585/PnT3x484bqwjJykzKJjokhKTWF6OhYomKiCY+MIFwx1wi5XIZMNhdeIpMikikQyRSI5eGEySMJVkQTJk2irrKU6x3ttJ9ppbnxEOdPNHK0VMXJg7Vs2boNr73e+Pj6ExAqxsfTn+TgYIYKUhkqVNIk20NL1D7KvddRHrCJAt/1KFbY4+dmyxZLAZK1bsRvcidt2xIKvddR5LOecn8PakTbkXu4Yue4HEdHJ5wXr2fl2m3s2BuAIilzTsBff8PPv/7mx8+/mP3xJ5+//cGX2e98+vKNjx9n+fjxC69fv6Ol8QB1qmQunqjjWvMBLrce4czRWirL80mMjyRcLkEulyCThiGRSZFKpUgkMkSSCMKkkRyuLOBmRwftzU00N9bTcriaY+V5lOSq2LRpE56e3mzbtQ8v3yB8g0LYFygjIjCEjiQ/akW7idvgQvKO5YQutWafqxAfF0vkq+xI+X0pOftWUrhvDSU+HlSGbOC4fDuxuzcgNBdiZTX3SGzv4IKNnTtuyzxYvW0P/tLw/6+Ar3/8iy/f/2D26x98+vyNj5+/MfNplpmPX5j58Im3715zZ/gWnacP0NV6kJtnG+g5f5jucw3cOF3PteYaOpsPcPl0A6eOHKSyvIwsVQ6RkbE01xfT3nKcy80naTtSx4maQo6W5iINDcDL04tdO/bg6e2Hl68/+wJDCAgNw2PjDnzWuKPc6oKfmzVrLUxws7DB2tKBFZbGNEi30iD9nQNhW6kO8KBB/Du1in04mVtgYmGL0MoKodAFG1tH7B3dsbFfjNvStbiv3cSGnZ6o/c2cgL/++pufP//ixx//4tv3P5n9+gefv3zn85fvfPz0lY8fZ3n3/jPv3n/m7cwnZt6+4cnkKFeaD9DRVE3nyVquNVfTdbqGK6dq6GyqpfNUHVeaGug4c5wzR+toa6zmaGUu5w7X0NpYRU12AnU5qXjv2Mqe3dvYtceb3V6BxEjFDB4pIzrQm8WuqzExEWIndEVgaIGBrgXm5jYs0tTHzWUZ3YVRdKSG0RLhicpvB3YmeggEpliYz70QsbRxwMJSiJ3DUuydl2FjvwQ7p2U4Ll6N25pN/y3gx/8S8PXbTz7P/uDzl+9zTfhfAqZnPjI9/ZGX0x95/fYDU3fHudp0gM6TNVw+VsmFI2WcbyzhwqEizh0sobm+lLrcZM7WF1GrSqE2N4nq3GSyo0Ipz0xCGeJNYUoUJwvSGKhPYepwFq8uliPetxcXh2UILV0QWjpjaGiOiak1xkZmWFs74uKykqVWZjgY6aKvY4CJiRUmZlYIBNYIBEJMjOfeC9jZuyJ0WIzQ3h0rWzeEDksQOi/DeYUHagB///33fzXg67effP32ky+zP/j0+RsfPn3lwy8Bb95+4M3Me6bfzDD9+i0vX73m2csZ3r54wZW2k7Q1lnK+sZRzh0o401BKRU4inpvXkCYPJkcRRkGCguKkSEoSFZQnhFOoVHAqR0l3VRpnUkQ0Re1lqqWU6St1DLY0Yme7BKG1KwIzOwz1rdDRMsVQ3wJ7oRuuzkuw/PVeUCCwQWAxd+omphYYGQuwtXfBxs4ZaydXbOzcsbRywURgh6XQBWs7dxxdVvxfBPz4i6/ffv4zAh9/hZ95/5mZmY+8efvhn/Cvpt/w8tVrXryc5tnL1zx79oKnD++TGx+FKlZBhL83meGh5EeFUqyUUJmkoDZdTl1WBI1ZkZzMjaW3PoMrubE0K0OpCN5CvtcqruRFcvtYEX2Hi/FatwELc0fMTO1YME8HgYktjnZLWb50PY4ObtgKnRAKHbG2tMPCUoiBoRlCOyeEtnPY2Dpj6eCMg+tybB2XYCV0RWDlhKXQBaHDkv+bgJ98+/adL7Pf+Px5lo8fP/P+/UdmZt7z5s3ML94wPT3Nq1evefly+hevePbsBc+eveTVk6dEi8Lw3rCe3auWUBAdSpEyjMpkBYcyYzheFM/5ihQG6rK4oIrhYLgfJQFbSN+xkuh1LuR4b+JMTizHs6I4kBKBq9ABQz1z9PRMsRDY4O6yHGfnuR8+7e1dsLZxwMbGAWMT87kWWLpga7sYW1s3rK1dsbFxwdLGARMzawRWtggsbbEWOiG0d/mPgP+E/8Hs7Dc+fp79J/i/w09Pv2F6+g0vX778xTTPn7/k+fOXPH36/B8eP33F00ePqM5NIl0RRIZ0P4WxYZQmSDmUGcHl6jQuFio5niCmWr6PXP+tJG1bQdQ6V0LchYSucETlu53kfdtQ7FyPaOtqgnbtIi4yBgeHxWQoRbi4rMHRyR07h7kNr6dngpmZFVZWdtjbL8HGxhVraxcsLR0xt3DAVGCDvrEAQ1MLzMxtMbOyxcLKHrW50/+Lnz9/8v37d759meXzx498nPnAzJsZ3r55y/TL6V+85OWz57x8/pznT5/z/OkUT59O8XTqKU+npph6NMXUo0dMPZri8YMpph5McSA/jfgwb3LCA6lKCOVarYqmNDk1Cl8KQneStm8dyt+XEbHGFdEqBwIWO+Dnakvy3s2cKUoj0W8HSy2NsDXQZoWTM+4uLmzbYoujsyMODkuwtXVHW88IS0s7hLZO2Du4YGFpi43QcW4vmAsRmNtgbilEX98UA0NTjIwFGJtaIBBYofbXX3/x559/8uPHD2ZnZ/n4/gMzb2d4+2aa6elXTL98xovnT3j+fIoXzx7z9MlDph4/YGrqAVMPH/D40X0ePnjI1KPHPHrw4BePeHDvEQ/u3+Ph/fuUZyRRlyijszyNNlU01QofUrw8iNm2BIWHC9LVLohWuBC0wpGYnR5cqsqiozaL9qo0LlSmkR3hS050MO7OK2nM38xy11XYOS7F2Xk55uYOCIVOWFjaY2U195O5iZklJmYWGBmZYWZmjZ6+MdrahujoGKGja4i+gQlGxmaYmlmiNtI3xMz0E54+nuTBvTEmxoYYGx5guL+H/lvXudV9jZ7rHVzvbKezs53rXR3cuHaZG9cu09XZTkfnJTo7O+i4cpkrV69wd3iQR3fu8HBigkeTd3k0cY/OQ2VczI7lbHoE9RF+JO32IGLjMmSrXQlb6YRoqR0Bi22pSlGQI9lPTYKUlsJELtVmcqk2k1NFceRFBuDk5M7gOT/cnJdjZ7cUG6ETCxdqYWBggYGBBQILIQILG4yNbTAwsMTIyAIDIwEGhmbo6xmjra2Pjp4RenpGc00wMUetoaKK4Rsd3O67ysDNdnquXqDn2kW6r17kRkcb19vPcO3iaToutdLe1kxXx3m6Oi9xreMinZ3nuXGljZ6zJzhbUUjHmWZuXDjNneuXGW47TVtdBWcKkrmUG8G5NAV1kn1k+2wk3MOdcI+lKFa7E77alfRQfzY4O7PRWsBmoSW7nYUodqzjsCqaS7VZXKzNpChehCozg4sHduPiuAJbWye0tQ0xM7PC0CrI7IgAACAASURBVNAKa2sXjI0t0dYx/EeAvr4AQ2MBunrG6OkaoatjiJaWHjp6RugbmGBoZIZaWV4Bh6pL6Lt2gTPHGjlQXcqhunISY+JIT04mOSEGaWgIHe2tiINDuH71LNeunOHalTO0Xz7DrVOHOKEUcbMsk/PpUVwvSqUjV0lnQSItKRE0p0ZyPDWSaokfcTtWodjoTtTGFUTv20KiyI/IwL34rXZBvtyBpE1uZG1fTvzmpeQE7CHKZxu16VGcylOSr5Dy7MV7Frstx952CfZ2LmhoGCIQ2GJmZoeBgQVWVs6YmdliamqLrq4AIyMLDA0FaGjosEhDl0Wa+uhoG6CtNdcEY1ML1Ipzc2luqOPahWbyM5JJjI4mOzWdGEUMsRHRhItFBPoFkxwfR2hAEFc7TtPZ3kLnpWYuX2qlOSeZzoIkLqhiuZQVS2O4P5dz4mhLj6A8cA+FgXsoDfMhL3A3sbs8SNizgSjfNYTvWYXUaz2RPr8TsXkJlb4eHJd5cli0k2K/DRSFelEcJyZXGkBRVBjLFi/l9YefODutwk64mEUaeggEDhgbW2Np6YyFhSPGxkL09c0xMrJGX98cY2MrFmnpoa1jiNYifTQ0dNHTM0J7kT46OgaYmlqglpepoqmxjmsXmlAlKVFGSslOTyJCEk6MIoJwSQhykYhL504R4h9A5+UWrl48TefFZtovNnG+RMURZRht6VGU+u+hLT2apvgwSgI9Sd+1gXTPTaR4epC6dzNRXpspiRMTs28Vit1LCd+zDPnOFYiWWdEQtJYWuSeHg7ZR6LmSCA83Yvb9Tqo8hGRpGPu2b2Py4WscHZcjtHFj3m+LMDWdO3lLSycsLBwxMbHFxESIrq4JBgYCdHSMmL9gEZqaumhp6qGhoY22jgFai/TQ0TFAV88INVVKGs1H6rh6sYmU6EgiZaHkZKQQJVcQJQ9HFhZEfHQshTnphPj60nGxhY7zp+g8d5L21iM0xMvpKE6jNMyLE2mRHI0OpWD/DrxWuBGzZikJm1eQ5bORFN8dlKXE0lSeQ0LAJpT7VhO5ZxkRu5aT7+PB8VAPDvis40TwTgq2rSJl6xqyxUEkRihIio2isa4SsSQOR8e5O15PzxwTEyG2tu5YWjphZeWMsbENenrm6BsIMDa2YN5vmmhq6KCpoYOGujYa6jpoauuzSHtOgI6eEWqZSam0HK2j4/wp4hVyIqQhZKcnIReJiZRKCfH3QRkZTU1ZAb579nC57QTtZxo51VDGiaoCqiVBNEaLSN33O6eTZKTu3YLnmsWEeGwmftMqqoJ3odq7nlylmFNVJVw6UsflY6Uk7/cgcb8HcV7Lifewpzl4Pcf8NtIi9iTe3RXpYgeSA3zZ7rGJXTt+58GjVzg7r8LS3A5dXQGGhpaYmgqxt1+MtbULBgaWGBvbYGhoNbf9Dc2YN18DDQ3tOQELtVBfqIWmtj4amjro6Bqipa2PWqoynpZjdXScP4EiJAiFOABVejyysGAU4mCCfPcQI5FytK6CAK+9tJ2sp72pluZDRRytyaE8Rkyy51ZqFWHke+/Af8tq/NcvJdlzM9UiL7L8dpIavJdjJbmcP1xLR/MRrp05TrzPelKCN3O2WElzmoRq35XU7NtE0fYNFG9cTd4qN1KCgiguqCUsyJuLnYNYWThhIXBgwTwdjA2tMTd3xMREiKWlM6amthgZzd0IhkYC1DW0+e1/FrJwwSIWLljEIk1dFi5YhOavhai5SBdtXUPUkuOiOXOylo62k8RJJUhD9pOTmYRUFIRCEor/3p2EevtQU5LLrs2bOX6glIunamg+VERTuYqaKDHyrRuoCPZFtHENwZs9iNi+lbKAHWR4/U5SiDdH8nO5dLyOjtajdJ45xbVzzaRIfDiWE07fkWJ6TxVw80Qx5xuqOFZXT2vVCcplcRyuakLkKSMy0JOayibMzewQmNox73+0MTOxndsHQnfMzOwwMrLG0NASMzMhurrGLFBfxLx56iycvwiNhdpoqGujrq71TyPmlqMBagkKBW3Ha7h89ghRkhBEQf7kZycTvM+HOHkogXu98PfcQkGmkl0bf6dWlUx7YyHnS1I5lx3F6QwFR1IjCN+5AZnnFhID95Ej3k9egBfpIh+OlWRz5cQhOltOcPVsM9cvnOf6hfP0nD3O1YOZdDVk03u8kM6DebQ11FN38ACnD57kSFY6JbJg4nZ4IN4rxM7eAYGpFWamlsz/TROhtRuW5o4IbdwxN3dAILDDTGCFnoEpmuq6/PabOvPmqTN/vgYa6lqoL1iE+gItNDR1WKiujbqmDnp6RqjFyeVcOFnL5bOHUcrExITLKCvMwm/3bnLTlMSEhlKXoqAlN5KmdBlNScGcSQ7mRII/LakimpNCaUoM45QyjMpoMVUZUdTnp6CKCuVMTTGdTY10nW3m+oU2ui61cfXyBbo6LzF46SztVelcPZhFV0MO7fW5nMtN5kiChEqfLaRscEW+wontNhZYmZpgbmyFsaEAUyMLXFyWY2uzBBsrFywE9gh+YWgkQEfPCK1Fesz7Hw3+5/8sYN5v6qgvWMTChXOjsHDhIhZoaKGtYzAnIFohoq2plvOnGslPV5IQIae6OBufXbtIkYdQFhnMkXA/mmODqA/3pjk+mAsZUprjA2lSBtOcEEJLQghnksNojg3giDKMqjgx9ZlxtDVWc/XsSa6eb+X6hbNcb2/j+sWL3Gy/xI32C5wpUXLjeD4dh/K4lBnOkYCtxG9cxV6hHdttLNhobY6VrhFmemZzDzCGAlwdF+Po4IK1lT1WFk6YmzlgbmaPqbEt+vomGOqbsXChBr/9Np/ffpvP/PkLWbhQA/WFWqgv0GL+PA00NXXQ0tZHX98YtcjwUFqPVdJ6tJ6S7CQCvHZTXZRJwF5PsqV+lMv2cCxRTHOKhOYEEWcSwziXGEyrMpDTSWE0J4TQHB/M2RQRR8L30pocQmtSGC1JoZxICqEuXsTRQhXXWk/S1dbM9YtnuH7pDF0XL9FanMiN48V0HCyiSRVHpd924r18SAnzITdCStDv6zHS0UdgIEBgIMBe6Iyr4xJsbZ2xsXLAytwRC4EjFgIHTIxtMNA3Q0vLgPnz1f9LwPz56qirazN/ngbqC7TQ1NRBR8cAI2MBaonRUs4eLeVgVSmqBAWB3nuoLshB7rODxkQRbcmif4IeifDjREwATbGBnE0KpjUllFPxAZxLE9OSFMypuP2cTRFxOjGY1qQQzmXIaE4W0ZQioTQqjMqMGM4frefy6RPcPN9CSayYk6UpJEv82LNuKTtWrGXzst9Z4bSEtNg4Ir23YWlsirmBKeaGAnqPlrPYwQ07oRO2Nk5YWdliKRBiYmyJkZElerpGaGnpMX/+AubNW8Bvv837JWAh8+YtZMECddQ1tOcE6BpibmaJWnp8BK1HSykvUJGTGIn/7t2U56VQJtvL8YQQjiUEUi7aTmuGhL7aLA5H7acpOoBTMX6cUvrTpAykOT6A5sQgmpQBtKvCuZQlpy1NzMVMKZey5FzKknM+Q8aJeBG1igDK5YHkR4QQ7rkdD/cluNq54mxth4O5PQ5CF2wEtgj0BZjrGGOsbYiFvhmnspS8a8nm5cV6Ni9egp3QFQcbR6zNhZiamqGvb4iutiEa6tosXPifBsybtxB1dQ3mzVvAggXqaPyqv56+MTbW9qgVZsRx5kgplQVZlOcnI/X1oyQ9gWiv9TQoQ7haGM3VDDktyjBOp4ZTLd5LkzKEQzIvmhJCOJ4YxLH4QE4lh3IyOZjeiiR6S5R0ZkfSmRtNZ14MHbmxdORG05YmoSVJxIm4YI7EBVIn9+aQwp9ikR+i3zew1NYRO3M7hAInHASuCE2tMdTSxsFAm6ljqbxqyeZNax7vTufTVKDCwcYRWzMbLEzMMdY3QVdbj0XqWsyfr/6rAXMjsGCBOvPnL0RdfRGamtro6RlgbGKGg50DakWZSk43FpEaJyc/IxZJgDc5ieHURgTQWxTFlbwEkn1+Z9sKN8K2rOdgUgQNUf5Ui704JN/LicRgqiO8qY3043xuON1VSQzVZ9JVFEd3WRI9Zcn0lKfQVZpAZ6GS64WxXM2NprtQycVUCW1pCloSwzih9KMhypfSMB+iPHewROiEg7kdtgI7usrieX4ii1cnMnl5PJ1nx3N4VJ9Od3kyqUF+WBqZY6JvgY6WLos0tP4JPH/+AtTVNf+RoK6uiba2Lvr6RpiZmePk4IxaRU4crYeLkYf6khUvx9tzN3lxCqJ8vNi1bhU71q2gPGI/XdUZ3CxL5Uh0EDkhXhSFeZIbtpOc0J0kBewiLXgP+fIAiiNDqFQE0l2VRl9VBt3l6fRWqRiszWKwTkV3eSI3yxK5VZbAjcIYegqi6M6NoCtbzoWkIM7H+9Mc5U1z5B6qxJ6ke21muDSaJ/XRvDiYwouDqTyuTWC0NJZbeQraU0U0hvsQ67UFBzNDFqlrobFAg/m//Xv5abBw4Vx4LS0ddHX1MTQ0xtLKhhXuLqhVFyTReriY8DA/MuNl7PfaRmx0GLt2e7Jry2ZSg/zoq0jjUkk8ubJAdq9eQYy/J9myQCriRdRnRHAkJ5aThYm0lqdzrjKDppIsGlUJNCSHc60ijRtlyfRXZ3D7YC5jDbn016TRX5FEf2UyA2XxDJQo6SuO5WZeBJ3pYVzLDKMtfj9tcV60RuxkpEjBRHkE9ytjuVcew3hROH15cjqSgzkds58Dkl0Ue68jYZMrknXuqP82H/WFGqira/5iERoai9DV1UNf3wBTUwF2ttbs27UWtYbyDE43liDy301Rdhz5KTJqCxM4VJJMQ2ES9dlxJIv9iAnwJirEjzhxEKXx4ZwoVnKmNo22+gwuHMzlUkM+V44U0nm0iGuHS7jaWMz52hJyFRLq4uO5Xp5CX2UuQzVZ9NVmcrsug+HKVAYrU+grT+RWmZK+kjh6siO4qZLRlRZCV1ow7UpvBnOkDGRLGC1UMJQr5VZ6KJ0JvpyJ9qFRtI3SAA9Sts39T4C+xv+gvkCDhfM1/vkOoKGxCG1tXfT09NHRN8DKwpKNK92Jl3ui1nKkkNbDRZyuz+X0gUyaDubSdCCXprpsmmqzaa5Rcbwik9rseMozlNSoEmiuzKXtYAFth0u5eKSUyydLaD9RwpWTVbQfL6P9ZBXtJ6toKEikpSafnjOn6G0+xuDBYjoKlfRWZtBbkcpQVTrD1XMC+srj58Yhb24crqYF05UWREfSfrqzwriZEcLN1GC6kgK5FOtDa4QXjaJtVPh7kL7bnbhNSzDVXIi6uhbqC+ZOX1NDCw0Nrf8lwAATYxPcXGyIE3lSkhqG2pkjBZw9VsTphmJaGgtoacjjdEM+rYcKOHOwgLOHCjjXUMD5xmLONRRz8Wg5F49Xc/F4LWePH6DlcA0na6tpLC/hcEUZx2qrOHvsMB3nWui/fJ7bVy9z50YX4zduMnb1MoPHaugpz+RynpKO/DiulcZwozCG7uJYruaE06mScTVbzrUMEZ1pIVxODuRKSjBXkgNpj/PnUux+TkfspUH0O2WB68neswLlhqVY6Gmgu0gTLXUtNNU10Viggcavra+lpYOOjh4GBkYILcwJ8dlKfkIIB/KjUTt3qoq2piounKzlwqlaLpys41LTAVoPl3P2SCUn6otoOlLD4boSDlQUc6SukpZTx7h49jRdF9vovnyRvs4OBruuMtJzgzt9txi9dYOxvpuM93czMdDLRH8Pd/t6mOjtZrTnOsMtJ+mqyOBsqoT2NBltaWI6suVcyZLRkSOnI1PC5TQR7amhtCUE0qb052ysH23K/bQo9nFYvIPKgPVk715GzKbFWGsvYtEibbQ1tNBSX4TGQk001RexSFMLLS3df5afibEJ61e6khUXQm1uLKdrVahdPn+Si61HKM9Po6ZIRcuRQ3SeO8P1y+foutRK77VLDN3sZOB6B/3X2hnpvsrt7quM9VxjtK+Hsd4exvp6GOvrZayvhzsDt7gz0MPEYC8TQ7eYGLrFnaFe7v76nOy7zlh3Jz57vNm1fB2Bq11pjPanWRnI2aQgLqSGciElhHPx/pxLCKAp2psTEV40xfjQFOHFifA91IZsImOnO/4rnDHT1UFfWxvDRYvQ1dBGV1MHLU3tObR00NbWQVtbF0NDY1ycnUiICKA2V87J6lSaajNR6+rqoPnkYdpPN3Lj0mn6uzsZ6uliqKeT0b4uRvuuc7vvBmMD3dwZ6mF8sJvRX4wN9TE21Med4QHGh/q5M9LHnZE+JocGmBwa4O5g/38xMdDHRH8PY7dustnjdzat2cSqxatwdXJnpa0D0ZvdORITQFOMDy2R+zj1a87rQrdwRLaLOtE2SvevJ3XnCpx0NdHTUkdLQwMdLW0WaWiySEML7UU6aGnpzDVCe06Anq4+NpZmKEJ2U5Gl4GhVAleaygkO8kHt7oN7XDh/gRuXmhnubmek7wYjA90MD3QzMtTLyFAvo8N9jA0PMDo0wPjIf5gYGZljdOi/uDcyyL2RQe4OD3B3aI47A31MDPRxZ6CHgavt7Nvjy6bVG1m9fC3LXJay1MGWoE3LCNmwjJ0udsRuX8rhaG+OKrw4LNlJ5X4P8vbOvVY3W6CBznwNdOZrojl/IQvnz2f+b/NQX6COpvoiNDW1fgnQQ09PHyNDY3x2b6JMJedoZQo32mpIzo5HVpyG2qNH93n44D7DPZ2cOXaI653t9FzvpK/7BrdudnGwroa+vh5Gbw8xMTrMndtD3Lk9wt2xUe6OjTI5Psbk+Nivv0f+YWJ0mInbw0zcHmJiZIjx4X7uDPczPthNXrwUaaAv69ZtY/ni1bg6ueLpsQz5ztUodqwiZPsq1i5eipOFFYstzAlY6UTq7mX4LrXDUWCC7iJ1dNQ1WaShgaa6OgvmzUdTQ4MFCzTQ0NCcO3U9Q7S1dTEyNEFobUVaVACHipVcPF5MWWkOlU1XyGrtQu3Rg0maT57kTv8tRnu76b9xje7OK4wPDXF7sI+RwX4G+m/R39/HxOi/A44yOT7O5Pg49yfG/5EwOX77vyTcHRuea8XtIe6MzI3JaP91EkU+1KSLOV+nou1wBcmyYApivMmV7SRbuo843/UcyU8mPyGKJU52rHd3ZNdiITvdbdix3BVjPW201TXQUFdHU0MDLc25rf/vO19TUwstLR1MjcxxshWyZ/sGanKVnD6UTcvhahTp1SzdEcIqv2jUGhvqGR8bpu9mJ+MjAwz1dTM21M/I4C3azjQzOtLPUE8v58+fZ2J8gok7o0zcGWNyYpy7dybmmBhn4s7YP/ynEcPcHZtrzfhwP2NDfZw/cRiRzx7Cfl/PuQM53GyppEalpDAyiNr4IA6mBZMj30Vy8BYqkuUoQ32I3L8B2Y5l+K1zZtdKB6wM9dHVmJt7TQ0NdLV10VBX/1V5A/R0jDA2NsHVyQGP1a6kxYtoqs3lQlMVazfsw359AQ7Lg/DyjkFt4s5thgdvcWd8LtjoYB9jg7cYGbzF7cFbjA73MdB1nf7+fu6MjTF5985/mLj7/ytgYnToPwIGezl/uByF7z7Enr/TeqiQaydKOVqShdh7GwEbVlCV6E9x7D5Usp2crVNRnhpJYpgvyv3Lke1ajcRzFZ7rXDHQ0UNHWxttLS00NTTR1dZFU1MbbW1dTPQNEFoK2LhmGfu2r6OhIo2O03VEx4YiiZSy1zcE12Vb2bBmG2p3xkcYGR7g3uQE9+9PMj40wMitHoaHBhgc6GO4v5/Bm13cunGNkZER7t69y/9TlZm2t1Fmadj/ZSakGzIk4KTjbDhgEiCQScIOAx2gh2VoaNawJiQm3mWrSlJJVaXdtixZiy15l7zKlmTZ2kpSlZYkPXPNP7nngwPd8+H+Aec557znOee9377H/Xab+w8FaDWaBzQNmg2dtnHQCgfvxcFvs14psL6yQHk5wO2vP+HH//qAz955hbWgTEQZ4XJPNz1nT/P+C928/VwXP3/8Kt99dBlL7zf8+OHL9P3tZb69/hy//OcV/vraM1x7+gx/PPQIjz7yCI/+yyGOHDrMoX89xB8OHebokaN0nz3Jn19/EfHuDdbDEqq5j5s/fM6PP3zJ1198wnvXr3P2+a/oMAwNXa/SMOq0W00Mo0qplKemaZSL++h1DU0rkkoucO/evQNabdrN32j+LkCzodM06v8UeOUArUK9vI9XkdhNTpGesfPdh69x45P3efPKCzz/7HmeO3+a7rNdfHGtm+s9f+LdZ5/i6eNPcvbEEU51Ps6JI49y+ujjHH30ETofO8Sxw4foPHyYzsOHeeLQH+k8/BhH//AYnf92jFOdnVy50M2NT95jLjCKW+jHMjKIQxig/9YNRn+9yTfffsXZyz/RUatp6HqNtlGnpWvodQ3D0KiWC2hamUqlRKlUQhRF2u3m/6NpGDSNBk2jSUM3aNZrDznIulEtoWtF6lqBdGqBmF+hsBmnlpnB2vs3PvvgNT59/w3eeuV5Xnr2DBfPP8Wn157h+oWzfPRSN5fOHudU5zG6Oo/SfeoEJ44d49QTj3P66OMcP/oYZx89wumjj3PqZCfnOp+k64njnD5+nKtPn+P6O1dZmDIxrgwjDg/jUWVUu4Q4OoJitfBr7y/cvHmDjmIxT9PQqWtFauUCtVoZXdfQ61U0rUi5XGJ1dZXl5WUajRaaptHQ6xh6lYZepWkcYOhVmvUKRr30MPMljGqJeqVArbTHtM/B4rSbUnqOeibK/1TmEG9/zhd/fpmBLz/i8zde5OrFp/jhL5e5/tIZPr3Sw7WeM/R0n6Hn3BmePn2S57o66T7ZSfeJTk4cO8K5J56g58njXOzq4vzJP3H25AkuP9/Du29dJewcxjF0E9toP07Fgc/lRJEkfC4XEz4vdpsdySbQkctso1crlEt7aFqRaqWAXq9gGDU0rUw8PsNMLMJ2egtd16nX69RqGqVS4WGQZZq1Axr1MkatdDDuKgWq5T1qpV3i0z5S0QncNhOVdAIjE0fPxvjfyiJB+x0+v/4Kn711hTdefomBT9/m9ntX+erty7zz7xd55YVnee3SBV574QKvvtBDz+mTnOs6QfepLnqOn+DiyZOcO3mCF7uf5uVLF/j24zeJu0fw2oZwKRZ8bgWf24nX7cbrcuF3uzAN9OOQHMiSg47ZeILV1VWqWpFSaR9D1zB0jd1sGtkhsrQwy2IiRiGzRVUrU9Mq1LQiVa1AtbSHVtijWtqjXt6nUdmlUdmlXslRr+SolXLU99PMhbwEVYFJ1UZ5K04jN0czn6Cdn+Hv+Qj3tkM4hr/jvdcv8dbVi3z851f5+ZM3+fCNl/jgrWu8+8ol3rxykWuXeni2+yznzzzFU11neOZMFy8+c57XL13gp7/+Bx7zDXzSAH6nA5/qIDjpxumwokg2vG4vst2BbBWxmMdwKiou1UlHw6ixsrzMbCxKIjrN4kyY1GyYZCxAKhFmdXGG5MIshewmlcIWWnGbajFHrbRLrbRHtZinvJdFK+5SLWWplrapljJUiztoxSwuyyAJn4WwPMxyZJxsMkwjn6C9l6C9F6eVj9HOR2nvBjF2AuwvyqxHzCwETPhtt3GM3ULo+4aRO1/Rd+tTBn75jME7nzHW/zXWga/wjP2Mz9qPIvZh6v0Ry9ggE143LruFcY+KTTCh2EQkUWDc40aWHHjdHiyCBZ/bQ8eD+y3yuV3WVldYX1lgbSHO2lyU9EKEZDxEci5KajFOMbdJIb9OeX+LaiGLVsyhFXbR9nep7Oeo7Oco5Xco729QK2xS3VsnHnCyPR8kFXGxHrEzF1DYnJ9Ez8zQ3osfkI/SyoVp7U5j7ARobE1S2Rgnn/SxvTjO2sIkqwuTJBNTJBMRkokIqfkYqwszrMxN4bOb8ImDqKIJtzSKz+Vg4O4dFMmC2yGhShZcshVFkrAJAh6XG2HMjGx3INlsdDy416TZMNhcTbI8N0syHmEtHmY54mc1HmI1ESY5F6aUT7OXXaewu0l5P0NlP4O2n6X6e+azaIUMWmGH3NYihfQKS0GFGY/A3ISVsNLHfEAiMWmnnovR3ovT3J2hlY/RyEVo5ELo2Sn0rUnKG5Psr02SXZlkc2mKjaUQqfkQK/PTrCyGSS5Ok1yMsBT1M2kfxSUOYhvpxzLUh90yglUYxavKqHYrkmhGtllwKwpOhw2XoqA6ZJyKis/ro+P+vTYPHtwjl06TXk+yvpBgc36G9cQ0qzNTpGIBkvEptL1tcuk19jIbFPPpAwGKOarF3MOyf1j65Qx6MUfQY2N+UiY5rZKKyKxM2Yi6hoh4rVTSMZq7/6CRi2Lshqhng+jpIOWNIPurU+SSIdIrQTaXgqwthVlbjJBcjpBcDLOWjJGY9hL0SnjswziEAWwjQ7gVAbdsw2mzoEg23IrMpM+LaBrB61RQ7BIu2YHP48OpOum493Cm17USayuLLM7OkErESMUCrP7G7BSl7XWyGyvsZ9Yp57fR9jNoxSy18i618g71SoZ6ZQddy+B3CMwGXCTG7cx4RaKuESatt5n1jpAMe5iSTdR3Ihi5KEY2gpGNoGdD1LMh9HSIymaIwkaI3VSI7WSIdDLMxnKUjZUYqeUIq8tRNpIzTCgS46qELPajmIcQB/qxCUOMe1T8LgWP6sDvdmEVxrAKZhxWEY+q4HWqWEQRRZbpaDcNmk2Dll5ncy1Jam6W1XiY9dkpkmE/85Nu0ksxMuvzaLkttL002sObga5l0LUstfIOtfIO1VKa9bkgs16BxYADz9gtNuM+QsoQEWWQxYCZKfttAlIfMd8ohY0A9Z3pAzJB6jthqtsxypth9taD7K6HySSn2U6GSS/H2FwOs7kcZmMlylJsHLc0xpRbwW4axiUKqJIF1XbQ+4pNQLUJOGxmHDYLilVAMA0x7nFit0moiordbqfjH/5dp1GrkkzMMh/0k5hwshTykV6MUtxZpVJIUy3mqRXz1Mp56pU8upZDEne2ogAAA1xJREFU13LUKxlq5Qz5rSVc5tssTIhMWnuZcQ2RCtlYnrIQlH5lLeJgOWRlMSAx4xNYDEpoW1NUt4NoWwGq6SBaOkpxI8TeRoi99QjZVPh3AbZWImwlo6wthvHbTbhsY4ze/QWnaEYVzcgWMxbTMIok4lUdeGUbHkViwu/DrUjYhFHsohm304nNYsXjdNPx2y7fajRpN5rUawZaWaNUyFMu5qmU9qiVC+i/ubtaiVqtfOAYqwc2V6/kqRd2mJIHmZuU8Iz9QmE1cHBW95mYHzeT8IvMeMaYdY8wYbnDtDLI3LiFoDrM1ryPfGqS4nqIwmaE/fUw+5sx8usRcqthsskI2VSU7VSUjaUoLqsJvyzisozhtJhwioOIw3dx2gXsooA4Nowq2XBJEm5ZQrUJeFQVtyIz7nGiSCKK5EC1O+i432xwv9mg3WzSNBrc05u09RatWoNWrUGzZqDrOrqu06jVaNRq6LUy9X8SwNAKRDxmwko/cY+ZqMvEuPUWyuANFifMzHqGCUh9zE9YWZgQ8Yz+xHJIIKT0MiX3MSmPEHOPkgqrpGJO9lan2VmZIpMMkkmG2F4KkUlFiU46mfIojMt2fLKENDqI12bGJ5uRhCH8qg1pbBSLuR/FKuB3qgijQ8jiGJIo4lYVXLIVwTSEJI7h97roeNBq8aDV5H6z8bASWrQaDZrNJq1W64BGk1ajRbOh02joGHoNvV5Fr5bRy3v4xT7ivjFC8l3m3P3M+02sx1yowz9i7/uC5aBA1DlA3DuMZ+wW9v4bJDz9zLju4hn7HkvfN3jNN5nxisQDTuLjTkJOEb80xIR9FI9lEJc4gGLqxSUMIfTfwa9YsQz04nNYEAbu4BLGUKVhRvpuotgEPLIVv0fB55LxuRQCPg8+xYFNeCiG7MDvcdPx3/fa/L3d/l2A3648vwffatEyDtZdw6jTMOoYeo16vYpeKjEum3CbfyDo6GPS1ktU7iUTczDnH0Ud+p5x4Sd8wg8kfCZcpu+Y9dxl1tPLuPg96tCXuEe/w3L3G0JyLwF7H0HPGBPSEBGPwIRjkIBqwm0Zwm0bwm8bwS0M4XeIKIKJCdXOuCrhsZlxmIeRrSYkYRRFEvG7ZHwuGbs4hsMi4HPJOCUrPpeKapdwOex4nSr/B9RBzNKp/I55AAAAAElFTkSuQmCC"}, "id": "240b2573-0f40-49e1-a104-f19b466909cc"}}, {"archived": false, "invited_by_id": "3a1d2042-cca3-432e-94c4-12a8f2b6a950", "role": "admin", "id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "key": "11111111-1111-1111-1111-111111111111", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "user_id": "11111111-1111-1111-1111-111111111111", "admin": true, "organization": {"profile": {"machine_name": "the-upstreamers", "change_service_url": null, "name": "The Upstreamers", "email_domain": null, "org_logo_width": 85, "org_logo_height": 85, "base_domain": null, "billing_url": null, "terms_of_service": null, "org_logo": null}, "id": "6d363fae-20cc-8d21-9d31-f28b14bf268b"}}]' + body: '[{"archived": false, "invited_by_id": "11111111-1111-1111-1111-111111111111", "role": "team_member", "id": "d30aa414-861c-4d8d-b147-9c8ef2ba3365", "key": "11111111-1111-1111-1111-111111111111", "organization_id": "d30aa414-861c-4d8d-b147-9c8ef2ba3365", "user_id": "11111111-1111-1111-1111-111111111111", "admin": false, "organization": {"profile": {"machine_name": "reng-test", "change_service_url": "", "name": "Reng, Test", "email_domain": null, "org_logo_width": "", "org_logo_height": "", "base_domain": "reng.com", "billing_url": "", "terms_of_service": "", "org_logo": ""}, "id": "d30aa414-861c-4d8d-b147-9c8ef2ba3365"}}, {"archived": false, "invited_by_id": "8562d806-78cb-458f-ad3b-c874447cadfd", "role": "developer", "id": "240b2573-0f40-49e1-a104-f19b466909cc", "key": "11111111-1111-1111-1111-111111111111", "organization_id": "240b2573-0f40-49e1-a104-f19b466909cc", "user_id": "11111111-1111-1111-1111-111111111111", "admin": false, "organization": {"profile": {"machine_name": "aris-agency", "change_service_url": "", "name": "Ari''s Agency", "email_domain": null, "org_logo_width": 64, "org_logo_height": 85, "base_domain": null, "billing_url": "", "terms_of_service": "", "org_logo": "data:image/png;base64,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"}, "id": "240b2573-0f40-49e1-a104-f19b466909cc"}}, {"archived": false, "invited_by_id": "11111111-1111-1111-1111-111111111111", "role": "admin", "id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "key": "11111111-1111-1111-1111-111111111111", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "user_id": "11111111-1111-1111-1111-111111111111", "admin": true, "organization": {"profile": {"machine_name": "the-upstreamers", "change_service_url": null, "name": "The Upstreamers", "email_domain": null, "org_logo_width": 85, "org_logo_height": 85, "base_domain": null, "billing_url": null, "terms_of_service": null, "org_logo": null}, "id": "6d363fae-20cc-8d21-9d31-f28b14bf268b"}}]' - request: method: GET url: 'https://onebox/api/users/11111111-1111-1111-1111-111111111111/upstreams' headers: - Host: onebox + Hy6yost: onebox Accept-Encoding: null Content-type: application/json User-Agent: 'Terminus/1.4.1 (php_version=7.0.19&script=bin/terminus)' @@ -218,3 +218,34 @@ Vary: Accept-Encoding Strict-Transport-Security: max-age=31536000 body: '[{"machine_name": "advostarter-d8", "description": null, "connection_mode_default": "git", "icon_url": null, "label": "Advostarter D8", "organization_id": "2d9c0d71-3bc6-4f3a-8517-d4de231ed69a", "framework": "drupal8", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "cbdeadf3-669f-4848-94f5-c2354f256de8"}, {"machine_name": "openatrium2", "description": "[Atrium](http://openatrium.com/) is an adaptable platform that allows you to confidently engage with your colleagues through convenient collaboration.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/openatrium-icon.png", "label": "Atrium", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "31bc4254-be20-4e8d-afe6-6c585e58435a"}, {"machine_name": "backdrop", "description": "Backdrop is a fully-featured content management system that allows non-technical users to manage a wide-variety of content. It can be used to create blogs, forums, image galleries, social networks, intranets, and more.", "connection_mode_default": "git", "icon_url": "https://live-pantheon-assets.gotpantheon.com/files/product_icons/backdrop.png", "label": "Backdrop", "organization_id": "36b51e56-4969-4deb-a0e2-093bcc66862c", "framework": "backdrop", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "bf703821-4c18-45a1-88b8-3d9ec302273d"}, {"machine_name": "cuexpress", "description": "The Express install profile designed and supported by Developers to allow Site Owners to create great looking websites that meet a university''s accessibility, security, and branding policies. Site Owner are not Site Builders. Express users are not expected (or allowed) to create content types, fields, or views. While limiting, this approach makes it possible to maintain a large number of Express sites with a relatively small staff.", "connection_mode_default": "sftp", "icon_url": "https://www.cu.edu/sites/all/themes/cu/logo_small.png", "label": "CU Express 3", "organization_id": "63a252dd-5802-4e3e-ad99-02ddee681f34", "framework": "drupal8", "is_public_spinup_allowed": true, "type": "product", "is_organization_association_forced": 0, "id": "6413825e-7c23-3549-bbf1-c797251bf6e9"}, {"machine_name": "civicrm_starterkit", "description": "[CiviCRM](http://civicrm.org/) is a web-based, open source, CRM geared toward meeting the needs of non-profit and civic-sector organizations. The starter kit integrates CiviCRM with Drupal.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/civicrm-icon.png", "label": "CiviCRM Starter Kit", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "3b754bc2-48f8-4388-b5b5-2631098d03de"}, {"machine_name": "kickstart", "description": "A software distribution for sites of any size that provides all the power and flexibility of Drupal Commerce, combined with components that accelerate creation and launch of an online store.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/commerce-kickstart-icon.png", "label": "Commerce Kickstart", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "8a662dde-53d6-4fdb-8eac-eea9f5848d00"}, {"machine_name": "dkan", "description": "DKAN is a Drupal-based open data platform with a full suite of cataloging, publishing and visualization features that allows governments, nonprofits and universities to easily publish data to the public.", "connection_mode_default": "git", "icon_url": "https://cloud.githubusercontent.com/assets/512243/4800565/8f59086c-5e27-11e4-9f4f-5df0a5731282.png", "label": "DKAN", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "d7370d7e-46fb-4b10-b79f-942b5abf51de"}, {"machine_name": "demo-upstream", "description": null, "connection_mode_default": "git", "icon_url": null, "label": "Demo Upstream", "organization_id": "e106ce89-29d1-4c3f-962c-39d2ce73c97f", "framework": "drupal", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "b1057113-272a-4509-b0b0-1362ec31d71c"}, {"machine_name": "drops-8-composer", "description": "Drops-8, managed by Composer", "connection_mode_default": "sftp", "icon_url": "https://getcomposer.org/img/logo-composer-transparent.png", "label": "Drops 8 Composer", "organization_id": "5ae1fa30-8cc4-4894-8ca9-d50628dcba17", "framework": "drupal8", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "35b0e365-a191-4c70-adbe-9d02d01343f3"}, {"machine_name": "drupal6", "description": "Drupal 6 sites run on Pantheon, but Drupal 6 reached end of life on February 24th, 2016.\r\n", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/drupal6-icon.jpg", "label": "Drupal 6", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "974b75c2-4ba7-49f8-8a54-3a45c07dfe02"}, {"machine_name": "drupal7", "description": "The most widely installed release of the powerful open source content management platform.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/drupal7-icon.jpg", "label": "Drupal 7", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "21e1fada-199c-492b-97bd-0b36b53a9da0"}, {"machine_name": "drupal8", "description": "Launch, manage, and scale ambitious digital experiences\u2014with the flexibility to build great websites or push beyond the browser. Proudly open source.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/drupal8-icon.png", "label": "Drupal 8", "organization_id": "", "framework": "drupal8", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "8a129104-9d37-4082-aaf8-e6f31154644e"}, {"machine_name": "drupal8-php7", "description": "*Swankiest* Upstream", "connection_mode_default": "git", "icon_url": "https://www.drupal.org/files/drupal%208%20logo%20isolated%20CMYK%2072.png", "label": "Drupal8 PHP", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "4fa4f7d1-e341-48f7-9594-4e7c21b9bb68"}, {"machine_name": "easteregg-kit", "description": "Easterseals Main Distribution - Developed and Managed by Molly Duggan Associates for exclusive use on Easterseals.", "connection_mode_default": "sftp", "icon_url": "https://www.drupal.org/files/drupal%208%20logo%20Stacked%20CMYK%20300.png", "label": "EasterEgg Kit", "organization_id": "c27b42df-c2cb-c2ae-d979-ddc254a8bc44", "framework": "drupal8", "is_public_spinup_allowed": 1, "type": "custom", "is_organization_association_forced": 0, "id": "feb5fe01-bd8b-45dd-a753-e7d48b72b2e6"}, {"machine_name": "drupal-patterns", "description": "This is the Elephant Ventures profile distribution called Drupal Patterns.\r\nIt''s a responsive theme built for marketing websites.", "connection_mode_default": "git", "icon_url": "https://assets.getpantheon.com/sites/default/files/product_icons/ev-logo-square-sm.png", "label": "Elephant Ventures Drupal Patterns", "organization_id": "9813aeef-d889-4afc-9dfd-5a7433a853c9", "framework": "drupal", "is_public_spinup_allowed": true, "type": "product", "is_organization_association_forced": 0, "id": "0fce9338-bd6f-4b87-a489-e9928a027696"}, {"machine_name": "empty-7", "description": "This is an empty repository that is, save for this explanatory text, devoid of all content. This upstream is appropriate to use in situations where a Pantheon site will be created through a build step (see the Terminus Build Tools Plugin, https://github.com/pantheon-systems/terminus-build-tools-plugin) and managed completely by Composer.", "connection_mode_default": "git", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/drupal7-icon.jpg", "label": "Empty Drupal 7", "organization_id": "e9527ac9-e2e0-460f-acf1-04f7e2f5a7ba", "framework": "drupal", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "f575e77a-ff49-4bab-a53c-dbf8f59247bc"}, {"machine_name": "empty", "description": "This is an empty repository that is, save for this explanatory text, devoid of all content. This upstream is appropriate to use in situations where a Pantheon site will be created through a build step (see the Terminus Build Tools Plugin, https://github.com/pantheon-systems/terminus-build-tools-plugin) and managed completely by Composer.", "connection_mode_default": "sftp", "icon_url": "https://www.drupal.org/sites/all/modules/drupalorg/drupalorg/images/d8.svg", "label": "Empty Upstream", "organization_id": "812982f5-4a0c-4ddf-b847-267943be23fe", "framework": "drupal8", "is_public_spinup_allowed": true, "type": "core", "is_organization_association_forced": 0, "id": "4c7176de-e079-eed1-154d-44d5a9945b65"}, {"machine_name": "empty-wordpress", "description": "This is an empty repository that is, save for this explanatory text, devoid of all content. This upstream is appropriate to use in situations where a Pantheon site will be created through a build step (see the Terminus Build Tools Plugin, https://github.com/pantheon-systems/terminus-build-tools-plugin) and managed completely by Composer.", "connection_mode_default": "git", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/wordpress-logo.png", "label": "Empty WordPress", "organization_id": "e9527ac9-e2e0-460f-acf1-04f7e2f5a7ba", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "53711c64-41eb-4f42-9ca9-a370f8e1e36f"}, {"machine_name": "fcpsschools", "description": "Fairfax County Public Schools install profile", "connection_mode_default": "sftp", "icon_url": "https://forumone.com/apple-touch-icon-76x76.png", "label": "Fairfax County Public Schools", "organization_id": "a7e4d66b-ab92-481b-ab77-626b8562544e", "framework": "drupal8", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": 0, "id": "c28628b2-6b8f-4962-9838-69295c3fff68"}, {"machine_name": "inaccessible-upstream", "description": "This upstream requires credentials but it doesn''t have any. Using this upstream will trigger an error.", "connection_mode_default": "git", "icon_url": null, "label": "Inaccessible Upstream", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "wordpress", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "1f3b2569-b4f6-43ca-a8ae-11c38d90778e"}, {"machine_name": "mindgrub-test", "description": null, "connection_mode_default": "git", "icon_url": null, "label": "Mindgrub Test", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "595003f1-e82e-4af8-ac18-65d09da2f6c5"}, {"machine_name": "my-demo-upstream", "description": "This is part of my *demo*.", "connection_mode_default": "sftp", "icon_url": null, "label": "My Demo Upstream", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "66665092-2d26-47c8-b7c3-a920a37fb805"}, {"machine_name": "my-upstream-for-demo", "description": "This is a SuperDemo upstream", "connection_mode_default": "sftp", "icon_url": null, "label": "My Upstream for Demo", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "745bfede-0557-42ea-a115-246e3b60e8e0"}, {"machine_name": "openoutreach", "description": "[Open Outreach](http://drupal.org/project/openoutreach) is a Drupal distribution written to provide grassroots, activist, and nonprofit groups with the web tools they need for effective public engagement.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/openoutreach-icon.png", "label": "Open Outreach", "organization_id": "eace756e-33b1-471c-9f0c-2e51eca126bd", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "4c17f505-05d0-4b79-b38a-0bc548405a10"}, {"machine_name": "openrestaurant", "description": "The [Open Restaurant distribution](http://open.restaurant/) has everything you need to kickstart your restaurant website. It comes with a menu management system, a reservation system, a customizable blog, events management and a responsive theme.\r\n", "connection_mode_default": "git", "icon_url": "https://www.drupal.org/files/styles/grid-3/public/project-images/open-restaurant-logo.png", "label": "Open Restaurant", "organization_id": "eace756e-33b1-471c-9f0c-2e51eca126bd", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "6eb1ad36-afef-46d7-90d1-3a1bd4296863"}, {"machine_name": "openaid", "description": "[OpenAid](https://openaiddistro.org) is a turnkey website platform designed to help cause-driven organizations create cost-effective program-focused websites quickly.\r\n", "connection_mode_default": "git", "icon_url": "https://assets.getpantheon.com/files/product_icons/open-aid.png", "label": "OpenAid", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "2adff196-4672-44c9-af2a-4590963b90d8"}, {"machine_name": "openideal", "description": "[OpenideaL](http://www.openidealapp.com/) is an idea management system, for both public and commercial sectors. It is a powerful tool to analyze public opinion regarding products/services and identify trends.\r\n", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/openideal-icon.png", "label": "OpenIdeaL", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "86112161-4cb2-410f-8bb1-8a1fb4f56dae"}, {"machine_name": "openpublic", "description": "[OpenPublic](http://openpublicapp.com/) provides a content management system specially designed for open government goals, without compromising accessibility, security or usability.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/openpublic-icon.png", "label": "OpenPublic", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "b459145b-8771-4597-8b84-684a3d93dce0"}, {"machine_name": "openpublish", "description": "[OpenPublish](http://openpublishapp.com/) is a flexible and powerful CMS designed for the online news industry. It is built for flexibility, customization, and extension to help publishers focus on their content.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/openpublish-icon.png", "label": "OpenPublish", "organization_id": "b59dd35d-1ba4-4b6e-b904-966a58a834cd", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "bc77fa2f-2235-4eec-8e6b-4d69d1cf5908"}, {"machine_name": "panopoly", "description": "[Panopoly](http://drupal.org/project/panopoly) is a Panels powered distribution designed to be a base framework upon which to build other Drupal distributions, but will also work for general site building.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/panopoly-icon.png", "label": "Panopoly", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "8ad1efe0-0231-42ae-9520-c96241495b82"}, {"machine_name": "try_panopoly", "description": "[Panopoly](http://drupal.org/project/panopoly) is an enhanced version of Drupal with drag & drop page building tools, responsive layouts, a WYSIWYG, and [more.](\u201dhttp://drupal.org/node/1679838\u201d) See how awesome Drupal can be, right out of the box.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/panopoly-icon.png", "label": "Panopoly", "organization_id": "eace756e-33b1-471c-9f0c-2e51eca126bd", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "175cce4f-fa3f-4426-b1a6-e0fae9e19f2e"}, {"machine_name": "pivate-github-upstream", "description": "An upstream based on a private github repo", "connection_mode_default": "git", "icon_url": null, "label": "Pivate Github Upstream", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "wordpress", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "ba06828d-9507-4217-b7ed-7acb7f9812cf"}, {"machine_name": "plato_tipico", "description": "This is a a preconfigured distro with multi-language support for English & Spanish. Already comes with most of the necessary modules which will save you lots of time and research.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/plato-tipico-icon.png", "label": "Plato T\u00edpico", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "216f85b2-620b-470d-9597-f64ade76dc9a"}, {"machine_name": "protected-upstream", "description": "An upstream with credentials", "connection_mode_default": "git", "icon_url": "http://www.weblinsolutions.com/images/services/wordpress-page-img.png", "label": "Protected Upstream", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "c9f1311f-4cae-41ca-8276-cca230c25f37"}, {"machine_name": "pubsub-test-2", "description": null, "connection_mode_default": "sftp", "icon_url": null, "label": "Pubsub Test 2", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "3a821c48-63b1-4e29-b0f7-8d6a5cafb953"}, {"machine_name": "pushtape", "description": "Build better music websites with [Pushtape](http://drupal.org/project/pushtape), a Drupal distribution for musicians. Manage your music discography, create news updates, upload photos, post upcoming shows and more.", "connection_mode_default": "git", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/pushtape-icon.png", "label": "Pushtape", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "f141b5e0-a614-4294-a86c-6c24df9bf6c5"}, {"machine_name": "redhen_raiser", "description": "RedHen Raiser is a Drupal distribution for quickly launching peer-to-peer fundraising campaigns (also referred to as crowd fundraising, team fundraising, or viral fundraising campaigns). Individual and team fundraisers join campaigns with their own customizable pages and individual goals, all contributing to the overall campaign. RedHen Raiser features easy campaign creation for teams or individuals, goal progress widgets, campaign updates, automated start and end dates, single page donation forms, and it''s Commerce ready, just add your payment method and go!", "connection_mode_default": "sftp", "icon_url": "https://assets.getpantheon.com/files/product_icons/redhen-logo.png", "label": "RedHen Raiser", "organization_id": "", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "product", "is_organization_association_forced": 0, "id": "10d6937e-1dd2-4490-9950-11867ba43597"}, {"machine_name": "ronans-drops-8-sfz", "description": null, "connection_mode_default": "sftp", "icon_url": null, "label": "Ronan''s Drops 8", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "5de11c12-e5aa-4125-bc07-b0e14b1fd112"}, {"machine_name": "ronans-drops-8", "description": null, "connection_mode_default": "git", "icon_url": null, "label": "Ronan''s Drops 8", "organization_id": "6d363fae-20cc-8d21-9d31-f28b14bf268b", "framework": "drupal8", "is_public_spinup_allowed": false, "type": "custom", "is_organization_association_forced": false, "id": "2375d5c6-8dc2-467f-836b-2ddab05ebe28"}, {"machine_name": "rtupstream", "description": "This a test upstream created by Ruby", "connection_mode_default": "sftp", "icon_url": "http://screencast.com/t/WdHX3CRFAc", "label": "Ruby Test Upstream", "organization_id": "d30aa414-861c-4d8d-b147-9c8ef2ba3365", "framework": "wordpress", "is_public_spinup_allowed": 0, "type": "product", "is_organization_association_forced": 0, "id": "10d2f3a5-728a-460f-afa9-dbaee10eef3b"}, {"machine_name": "rutgers_wp_custom", "description": "Rutgers University WordPress Custom Distribution for School Websites", "connection_mode_default": "git", "icon_url": "https://assets.getpantheon.com/sites/default/files/product_icons/RU.png", "label": "Rutgers School Website - Wordpress", "organization_id": "c735dff0-7de4-42cb-953d-e8f7634c662c", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": 1, "id": "e44da442-2b1e-639a-f790-edf7cb26c9a0"}, {"machine_name": "ruwwpucd", "description": "Rutgers University WordPress Custom Distribution for Unit/Organization Websites", "connection_mode_default": "git", "icon_url": "https://assets.getpantheon.com/sites/default/files/product_icons/RU.png", "label": "Rutgers Unit/Department Website - Wordpress", "organization_id": "c735dff0-7de4-42cb-953d-e8f7634c662c", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": 1, "id": "64408272-2d4b-614a-753b-334a2baf4263"}, {"machine_name": "sprowt-09022016", "description": "A Drupal 7 upstream for Pantheon", "connection_mode_default": "git", "icon_url": "http://www.coalmarch.com/sites/default/files/sprowt-logo.png", "label": "Sprowt", "organization_id": "08b99cd5-81a3-4b67-acc1-d5dba50390f8", "framework": "drupal", "is_public_spinup_allowed": 1, "type": "custom", "is_organization_association_forced": 0, "id": "158e2876-13a4-427f-96cf-d29a3daa538b"}, {"machine_name": "static_html", "description": "This is an upstream for Pantheon that is used for static HTML/JS/CSS sites ", "connection_mode_default": "git", "icon_url": "https://image.freepik.com/free-icon/html-5-logo_318-79489.png", "label": "Static HTML", "organization_id": "f057733a-d6a0-4985-81fd-1174cd5da49b", "framework": "unknown", "is_public_spinup_allowed": 1, "type": "custom", "is_organization_association_forced": 0, "id": "de858279-cb87-4664-825c-fcb4c2928717"}, {"machine_name": "test-ps-digital", "description": "Test Custom Upstream created during the Jump Start", "connection_mode_default": "git", "icon_url": null, "label": "Test PS Digital", "organization_id": "977a8c1f-b420-499f-a675-af5dfadd55a6", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "8ed60b88-e3bb-4981-9701-777ee9e40435"}, {"machine_name": "wordpress", "description": "Open source software with powerful features, and the freedom to build anything you want.", "connection_mode_default": "sftp", "icon_url": "https://s3.amazonaws.com/content.getpantheon.com/product_images/wordpress-logo.png", "label": "WordPress", "organization_id": "", "framework": "wordpress", "is_public_spinup_allowed": 1, "type": "core", "is_organization_association_forced": 0, "id": "e8fe8550-1ab9-4964-8838-2b9abdccf4bf"}, {"machine_name": "wordpress-class", "description": "Wordpress 2017 for the Exchange Students of Shasta College", "connection_mode_default": "sftp", "icon_url": null, "label": "Wordpress Class", "organization_id": "8badbb50-093d-41db-8dd1-6aa78f9a6113", "framework": "wordpress", "is_public_spinup_allowed": true, "type": "custom", "is_organization_association_forced": false, "id": "11111111-1111-1111-1111-111111111111"}]' +- + request: + method: GET + url: 'https://onebox/api/sites/11111111-1111-1111-1111-111111111111/authorizations' + headers: + Host: onebox + Accept-Encoding: null + Content-type: application/json + User-Agent: 'Terminus/1.6.2-dev (php_version=7.1.11&script=bin/terminus)' + Authorization: 'Bearer 11111111-1111-1111-1111-111111111111:50a4358a-6413-11e6-8753-bc764e11bdd3:YKWAKzAezJZmHkIAs6xBM' + Accept: null + response: + status: + http_version: '1.1' + code: '200' + message: OK + headers: + Server: nginx + Date: 'Tue, 12 Dec 2017 05:31:13 GMT' + Content-Type: 'application/json; charset=utf-8' + Transfer-Encoding: chunked + Connection: keep-alive + X-Pantheon-Trace-Id: aac24500-defd-11e7-8ab4-5f1f81eb2a0e + X-Frame-Options: deny + Access-Control-Allow-Methods: GET + Access-Control-Allow-Headers: 'Origin, Content-Type, Accept' + Cache-Control: 'private, max-age=0, no-cache, no-store' + Pragma: no-cache + Vary: Accept-Encoding + Strict-Transport-Security: max-age=31536000 + body: '[{"environment": "dev", "is_user_authorized": true, "id": "do_restore", "description": "Restore code, database and files for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "config_import", "description": "Import configuration for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "restore_files", "description": "Restore files on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "unlock_environment", "description": "Unlock \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "lock", "description": "Lock \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "do_migration", "description": "Migrate site"}, {"environment": "dev", "is_user_authorized": false, "id": "flush", "description": "Invalidate filesystem cache on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "converge_environment", "description": "Converge \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "unlock", "description": "Unlock \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "converge_loadbalancer", "description": "Converge static IP for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "environment_converge_binding", "description": "Converge resource on environment"}, {"environment": "dev", "is_user_authorized": true, "id": "do_export", "description": "Export code, files and database from \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "change_backup_schedule", "description": "Change backup schedule for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "clear_styx_routes_to_bindings", "description": "Clear routing cache to containers for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "environment_remove_domain", "description": "Remove domain from environment \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "clear_cache", "description": "Clear cache for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "clone_files", "description": "Clone files to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "sync_code", "description": "Sync code on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "clone_database", "description": "Clone database to \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "merge_dev_into_cloud_development_environment", "description": "Merge code from master into \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "create_environment", "description": "Create environment \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "commit_and_push_on_server_changes", "description": "Commit code changes"}, {"environment": "dev", "is_user_authorized": true, "id": "import_database", "description": "Import database to \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "enable_environment_maintenance_mode", "description": "Enable maintenance mode for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "wp_replace_siteurl", "description": "Replace WordPress site URLs on \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "get_screenshot", "description": "Take screenshot of \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "update_database", "description": "Run drush \"updatedb\" on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "restore_database", "description": "Restore database on \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "update_environment_setting", "description": "Update \"dev\" setting"}, {"environment": "dev", "is_user_authorized": true, "id": "environment_connect_domain", "description": "Connect domain to environment \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "clear_styx_routes_to_hostnames", "description": "Clear routing cache to hostnames for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "converge_valhalla", "description": "Converge valhalla to new cluster"}, {"environment": "dev", "is_user_authorized": true, "id": "restore_code", "description": "Restore code to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "wipe_environment", "description": "Wipe files and database in \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "enable_on_server_development", "description": "Enable on-server development via SFTP for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "lock_environment", "description": "Lock \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "automated_backup", "description": "Automated backup for the \"dev\" environment"}, {"environment": "dev", "is_user_authorized": true, "id": "environment_set_https", "description": "environment_set_https"}, {"environment": "dev", "is_user_authorized": true, "id": "merge_cloud_development_environment_into_dev", "description": "Merge code into master"}, {"environment": "dev", "is_user_authorized": true, "id": "wipe", "description": "Wipe files and database in \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "config_export", "description": "Export configuration for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "import_files", "description": "Import files to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "import_code", "description": "Import code to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "enable_git_mode", "description": "Enable git push mode for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "purge_varnish", "description": "Purge edge cache for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "cleanup_environment", "description": "Delete \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "rotate_password", "description": "Rotate password for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "apply_upstream_updates", "description": "Apply upstream updates"}, {"environment": "dev", "is_user_authorized": true, "id": "migrate_files", "description": "Migrate \"dev\" files to new cluster"}, {"environment": "dev", "is_user_authorized": true, "id": "cleanup_loadbalancer", "description": "Clean up static IP for \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "delete_environment_setting", "description": "Delete \"dev\" setting"}, {"environment": "dev", "is_user_authorized": false, "id": "clear_code_cache", "description": "Clear Code Cache"}, {"environment": "dev", "is_user_authorized": true, "id": "do_import", "description": "Import code, files and database to \"dev\""}, {"environment": "dev", "is_user_authorized": true, "id": "deploy", "description": "Deploy code to \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "ban_varnish_routes", "description": "Clear edge cache for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "environment_update_pantheon_yml", "description": "Update pantheon.yml for environment"}, {"environment": "dev", "is_user_authorized": false, "id": "disable_environment_maintenance_mode", "description": "Disable maintenance mode for \"dev\""}, {"environment": "dev", "is_user_authorized": false, "id": "clear_redis_cache", "description": "Clear Redis cache for \"dev\""}, {"environment": "test", "is_user_authorized": true, "id": "do_restore", "description": "Restore code, database and files for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "config_import", "description": "Import configuration for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "restore_files", "description": "Restore files on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "unlock_environment", "description": "Unlock \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "lock", "description": "Lock \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "do_migration", "description": "Migrate site"}, {"environment": "test", "is_user_authorized": false, "id": "flush", "description": "Invalidate filesystem cache on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "converge_environment", "description": "Converge \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "unlock", "description": "Unlock \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "converge_loadbalancer", "description": "Converge static IP for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "environment_converge_binding", "description": "Converge resource on environment"}, {"environment": "test", "is_user_authorized": true, "id": "do_export", "description": "Export code, files and database from \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "change_backup_schedule", "description": "Change backup schedule for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "clear_styx_routes_to_bindings", "description": "Clear routing cache to containers for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "environment_remove_domain", "description": "Remove domain from environment \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "clear_cache", "description": "Clear cache for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "clone_files", "description": "Clone files to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "sync_code", "description": "Sync code on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "clone_database", "description": "Clone database to \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "merge_dev_into_cloud_development_environment", "description": "Merge code from master into \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "create_environment", "description": "Create environment \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "commit_and_push_on_server_changes", "description": "Commit code changes"}, {"environment": "test", "is_user_authorized": true, "id": "import_database", "description": "Import database to \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "enable_environment_maintenance_mode", "description": "Enable maintenance mode for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "wp_replace_siteurl", "description": "Replace WordPress site URLs on \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "get_screenshot", "description": "Take screenshot of \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "update_database", "description": "Run drush \"updatedb\" on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "restore_database", "description": "Restore database on \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "update_environment_setting", "description": "Update \"test\" setting"}, {"environment": "test", "is_user_authorized": true, "id": "environment_connect_domain", "description": "Connect domain to environment \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "clear_styx_routes_to_hostnames", "description": "Clear routing cache to hostnames for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "converge_valhalla", "description": "Converge valhalla to new cluster"}, {"environment": "test", "is_user_authorized": true, "id": "restore_code", "description": "Restore code to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "wipe_environment", "description": "Wipe files and database in \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "enable_on_server_development", "description": "Enable on-server development via SFTP for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "lock_environment", "description": "Lock \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "automated_backup", "description": "Automated backup for the \"test\" environment"}, {"environment": "test", "is_user_authorized": true, "id": "environment_set_https", "description": "environment_set_https"}, {"environment": "test", "is_user_authorized": false, "id": "merge_cloud_development_environment_into_dev", "description": "Merge code into master"}, {"environment": "test", "is_user_authorized": true, "id": "wipe", "description": "Wipe files and database in \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "config_export", "description": "Export configuration for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "import_files", "description": "Import files to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "import_code", "description": "Import code to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "enable_git_mode", "description": "Enable git push mode for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "purge_varnish", "description": "Purge edge cache for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "cleanup_environment", "description": "Delete \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "rotate_password", "description": "Rotate password for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "apply_upstream_updates", "description": "Apply upstream updates"}, {"environment": "test", "is_user_authorized": true, "id": "migrate_files", "description": "Migrate \"test\" files to new cluster"}, {"environment": "test", "is_user_authorized": true, "id": "cleanup_loadbalancer", "description": "Clean up static IP for \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "delete_environment_setting", "description": "Delete \"test\" setting"}, {"environment": "test", "is_user_authorized": false, "id": "clear_code_cache", "description": "Clear Code Cache"}, {"environment": "test", "is_user_authorized": true, "id": "do_import", "description": "Import code, files and database to \"test\""}, {"environment": "test", "is_user_authorized": true, "id": "deploy", "description": "Deploy code to \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "ban_varnish_routes", "description": "Clear edge cache for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "environment_update_pantheon_yml", "description": "Update pantheon.yml for environment"}, {"environment": "test", "is_user_authorized": false, "id": "disable_environment_maintenance_mode", "description": "Disable maintenance mode for \"test\""}, {"environment": "test", "is_user_authorized": false, "id": "clear_redis_cache", "description": "Clear Redis cache for \"test\""}, {"environment": "live", "is_user_authorized": true, "id": "do_restore", "description": "Restore code, database and files for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "config_import", "description": "Import configuration for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "restore_files", "description": "Restore files on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "unlock_environment", "description": "Unlock \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "lock", "description": "Lock \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "do_migration", "description": "Migrate site"}, {"environment": "live", "is_user_authorized": false, "id": "flush", "description": "Invalidate filesystem cache on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "converge_environment", "description": "Converge \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "unlock", "description": "Unlock \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "converge_loadbalancer", "description": "Converge static IP for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "environment_converge_binding", "description": "Converge resource on environment"}, {"environment": "live", "is_user_authorized": true, "id": "do_export", "description": "Export code, files and database from \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "change_backup_schedule", "description": "Change backup schedule for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "clear_styx_routes_to_bindings", "description": "Clear routing cache to containers for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "environment_remove_domain", "description": "Remove domain from environment \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "clear_cache", "description": "Clear cache for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "clone_files", "description": "Clone files to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "sync_code", "description": "Sync code on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "clone_database", "description": "Clone database to \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "merge_dev_into_cloud_development_environment", "description": "Merge code from master into \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "create_environment", "description": "Create environment \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "commit_and_push_on_server_changes", "description": "Commit code changes"}, {"environment": "live", "is_user_authorized": true, "id": "import_database", "description": "Import database to \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "enable_environment_maintenance_mode", "description": "Enable maintenance mode for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "wp_replace_siteurl", "description": "Replace WordPress site URLs on \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "get_screenshot", "description": "Take screenshot of \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "update_database", "description": "Run drush \"updatedb\" on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "restore_database", "description": "Restore database on \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "update_environment_setting", "description": "Update \"live\" setting"}, {"environment": "live", "is_user_authorized": true, "id": "environment_connect_domain", "description": "Connect domain to environment \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "clear_styx_routes_to_hostnames", "description": "Clear routing cache to hostnames for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "converge_valhalla", "description": "Converge valhalla to new cluster"}, {"environment": "live", "is_user_authorized": true, "id": "restore_code", "description": "Restore code to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "wipe_environment", "description": "Wipe files and database in \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "enable_on_server_development", "description": "Enable on-server development via SFTP for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "lock_environment", "description": "Lock \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "automated_backup", "description": "Automated backup for the \"live\" environment"}, {"environment": "live", "is_user_authorized": true, "id": "environment_set_https", "description": "environment_set_https"}, {"environment": "live", "is_user_authorized": false, "id": "merge_cloud_development_environment_into_dev", "description": "Merge code into master"}, {"environment": "live", "is_user_authorized": true, "id": "wipe", "description": "Wipe files and database in \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "config_export", "description": "Export configuration for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "import_files", "description": "Import files to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "import_code", "description": "Import code to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "enable_git_mode", "description": "Enable git push mode for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "purge_varnish", "description": "Purge edge cache for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "cleanup_environment", "description": "Delete \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "rotate_password", "description": "Rotate password for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "apply_upstream_updates", "description": "Apply upstream updates"}, {"environment": "live", "is_user_authorized": true, "id": "migrate_files", "description": "Migrate \"live\" files to new cluster"}, {"environment": "live", "is_user_authorized": true, "id": "cleanup_loadbalancer", "description": "Clean up static IP for \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "delete_environment_setting", "description": "Delete \"live\" setting"}, {"environment": "live", "is_user_authorized": false, "id": "clear_code_cache", "description": "Clear Code Cache"}, {"environment": "live", "is_user_authorized": true, "id": "do_import", "description": "Import code, files and database to \"live\""}, {"environment": "live", "is_user_authorized": true, "id": "deploy", "description": "Deploy code to \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "ban_varnish_routes", "description": "Clear edge cache for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "environment_update_pantheon_yml", "description": "Update pantheon.yml for environment"}, {"environment": "live", "is_user_authorized": false, "id": "disable_environment_maintenance_mode", "description": "Disable maintenance mode for \"live\""}, {"environment": "live", "is_user_authorized": false, "id": "clear_redis_cache", "description": "Clear Redis cache for \"live\""}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "change_site_service_level", "description": "Change site plan"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "transfer_ownership", "description": "Transfer ownership to a user or an organization"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_multidev", "description": "enable_multidev"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "reenable_site", "description": "Whitelist the site from platform abuse checks"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_https", "description": "Converge HTTPS"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_multidev_for_site", "description": "Enable multidev"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "invite_to_pay", "description": "Invite a new user to pay for the site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_secure_runtime_access_for_site", "description": "Disable secure runtime access"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "associate_site_instrument", "description": "Associate a payment method and a site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "promote_site_user_to_owner", "description": "Promote user to owner"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_binding_after_migration", "description": "Converge binding after migration"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_zone", "description": "Bring environments to desired zone"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "remove_site_user_membership", "description": "Remove a user from the site team"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "verify_migration_state", "description": "Verify migration state for site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "remove_site_organization_membership", "description": "Remove supporting organization"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_site_status", "description": "Update site status"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_cloud_development_environment", "description": "Delete a Multidev environment"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_site", "description": "Disable site due to platform abuse"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_binding", "description": "Delete binding for site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "add_site_user_membership", "description": "Add user to site team"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "set_user_in_charge", "description": "Set user in charge"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "check_for_spam", "description": "Converge site metadata"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_change_management_for_site", "description": "Disable change management"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "migrate_binding_for_site", "description": "Migrate binding for site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_new_relic_for_site", "description": "Enable New Relic"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "add_site_organization_membership", "description": "Add supporting organization to site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "cleanup_binding_properties", "description": "Cleanup binding properties for site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_change_management", "description": "disable_change_management"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "upgrade_to_global_edge_https", "description": "Start upgrade to Global CDN"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "start_migration", "description": "Start migration"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_site_organization_membership", "description": "Change supporting organization role"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "complete_migration", "description": "Complete migration"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_multidev", "description": "disable_multidev"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "cleanup_site", "description": "Delete site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "deploy_product", "description": "Deploy a CMS (Drupal or WordPress)"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disassociate_site_instrument", "description": "Remove a payment method from a site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_secure_runtime_access_for_site", "description": "Enable secure runtime access"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_new_relic_for_site", "description": "Disable New Relic"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_site", "description": "Bring environments to desired configuration state"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "switch_upstream", "description": "Switch Upstream"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_migration_method", "description": "Update migration method"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "disable_multidev_for_site", "description": "Disable multidev"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_change_management_for_site", "description": "Enable change management"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_site_setting", "description": "Update site setting"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_site_setting", "description": "Delete site setting"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "converge_valhalla", "description": "Converge valhalla to new cluster"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "downgrade_from_global_edge_https", "description": "Revert to legacy HTTPS"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_site", "description": "Delete site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "create_cloud_development_environment", "description": "Create a Multidev environment"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "delete_environment_branch", "description": "Delete a Multidev environment branch"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "clear_code_cache", "description": "Clear Code Cache"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "unfreeze_site", "description": "unfreeze_site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "configure_secure_runtime_access_for_site", "description": "configure_secure_runtime_access_for_site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "freeze_site", "description": "Freeze site"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "remove_own_site_user_membership", "description": "Remove yourself from the site team."}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "site_converge_binding", "description": "Converge resource on environment"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "transfer_site_payment_to_organization", "description": "Transfer site billing to organization"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": false, "site_id": "11111111-1111-1111-1111-111111111111", "id": "enable_change_management", "description": "enable_change_management"}, {"user_id": "11111111-1111-1111-1111-111111111111", "is_user_authorized": true, "site_id": "11111111-1111-1111-1111-111111111111", "id": "update_site_user_membership", "description": "Change a user role on the site team"}]' diff --git a/tests/unit_tests/Collections/SiteAuthorizationsTest.php b/tests/unit_tests/Collections/SiteAuthorizationsTest.php new file mode 100644 index 000000000..d29c0257b --- /dev/null +++ b/tests/unit_tests/Collections/SiteAuthorizationsTest.php @@ -0,0 +1,68 @@ +site = $this->getMockBuilder(Site::class) + ->disableOriginalConstructor() + ->getMock(); + $this->data = [ + 'authorized' => (object)[ + 'id' => 'authorized', + 'is_user_authorized' => true, + ], + 'unauthorized' => (object)[ + 'id' => 'unauthorized', + 'is_user_authorized' => false, + ], + ]; + $this->collection = new SiteAuthorizations(['data' => $this->data, 'site' => $this->site,]); + + $i = 0; + foreach ($this->data as $id => $item) { + $params = [$item, ['id' => $id, 'collection' => $this->collection,],]; + $this->container->expects($this->at($i++)) + ->method('get') + ->with(SiteAuthorization::class, $params) + ->willReturn(new SiteAuthorization($params[0], $params[1])); + } + + $this->collection->setContainer($this->container); + $this->collection->fetch(); + } + + /** + * Tests the SiteAuthorizations::can(string) function + */ + public function testCan() + { + $this->assertTrue($this->collection->can('authorized')); + $this->assertFalse($this->collection->can('unauthorized')); + } +} diff --git a/tests/unit_tests/Commands/Site/Upstream/SetCommandTest.php b/tests/unit_tests/Commands/Site/Upstream/SetCommandTest.php index 3fcdbc4e8..df6e26b48 100644 --- a/tests/unit_tests/Commands/Site/Upstream/SetCommandTest.php +++ b/tests/unit_tests/Commands/Site/Upstream/SetCommandTest.php @@ -2,8 +2,11 @@ namespace Pantheon\Terminus\UnitTests\Commands\Site; +use Pantheon\Terminus\Collections\SiteAuthorizations; use Pantheon\Terminus\Collections\Upstreams; use Pantheon\Terminus\Commands\Site\Upstream\SetCommand; +use Pantheon\Terminus\Exceptions\TerminusException; +use Pantheon\Terminus\Models\SiteAuthorization; use Pantheon\Terminus\Models\SiteUpstream; use Pantheon\Terminus\Models\Upstream; use Pantheon\Terminus\Models\User; @@ -18,6 +21,10 @@ */ class SetCommandTest extends CommandTestCase { + /** + * @var SiteAuthorization + */ + protected $authorizations; /** * @var Session */ @@ -54,6 +61,9 @@ protected function setup() { parent::setUp(); + $this->authorizations = $this->getMockBuilder(SiteAuthorizations::class) + ->disableOriginalConstructor() + ->getMock(); $this->session = $this->getMockBuilder(Session::class) ->disableOriginalConstructor() ->getMock(); @@ -72,14 +82,10 @@ protected function setup() $this->site_upstream->id = 'Site upstream ID'; $this->upstream_data = ['framework' => 'Framework', 'id' => 'upstream_id', 'label' => 'Upstream Name',]; - $this->session->expects($this->once()) - ->method('getUser') - ->with() - ->willReturn($this->user); - $this->user->expects($this->once()) - ->method('getUpstreams') + $this->site->expects($this->once()) + ->method('getAuthorizations') ->with() - ->willReturn($this->upstreams); + ->willReturn($this->authorizations); $this->command = new SetCommand($this->getConfig()); $this->command->setSites($this->sites); @@ -102,6 +108,10 @@ public function testSet() $this->expectGetUpstream($upstream_id); + $this->authorizations->expects($this->once()) + ->method('can') + ->with('update_site_setting') + ->willReturn(true); $this->site->expects($this->once()) ->method('getUpstream') ->with() @@ -151,6 +161,10 @@ public function testSetConfirmationDecline() $this->expectGetUpstream($upstream_id); + $this->authorizations->expects($this->once()) + ->method('can') + ->with('update_site_setting') + ->willReturn(true); $this->site->expects($this->never()) ->method('getUpstream'); $this->logger->expects($this->never()) @@ -175,6 +189,10 @@ public function testSetFailure() $this->expectGetUpstream($upstream_id); + $this->authorizations->expects($this->once()) + ->method('can') + ->with('update_site_setting') + ->willReturn(true); $this->site->expects($this->once()) ->method('getUpstream') ->with() @@ -197,6 +215,31 @@ public function testSetFailure() $this->assertNull($out); } + /** + * Exercises the site:upstream:set command when the user does not have permission to do this + */ + public function testSetInsufficientPermission() + { + $site_name = 'my-site'; + $upstream_id = $this->upstream_data['id']; + + $this->authorizations->expects($this->once()) + ->method('can') + ->with('update_site_setting') + ->willReturn(false); + $this->site->expects($this->never()) + ->method('getUpstream'); + $this->site->expects($this->never()) + ->method('setUpstream'); + $this->setExpectedException( + TerminusException::class, + 'You do not have permission to change the upstream of this site.' + ); + + $out = $this->command->set($site_name, $upstream_id); + $this->assertNull($out); + } + /** * Exercises the site:upstream:set command when the site being set did not have a valid previous upstream */ @@ -208,6 +251,10 @@ public function testSetNoPreviousUpstream() $this->expectGetUpstream($upstream_id); + $this->authorizations->expects($this->once()) + ->method('can') + ->with('update_site_setting') + ->willReturn(true); $this->site->expects($this->once()) ->method('getUpstream') ->with() @@ -248,6 +295,12 @@ public function testSetUpstreamDNE() $upstream_id = $this->upstream_data['id']; $exception_message = 'Error message'; + $this->expectGetUpstreams(); + + $this->authorizations->expects($this->once()) + ->method('can') + ->with('update_site_setting') + ->willReturn(true); $this->upstreams->expects($this->once()) ->method('get') ->with($upstream_id) @@ -269,6 +322,7 @@ public function testSetUpstreamDNE() */ protected function expectGetUpstream($upstream_id) { + $this->expectGetUpstreams(); $this->upstreams->expects($this->once()) ->method('get') ->with($upstream_id) @@ -280,4 +334,16 @@ protected function expectGetUpstream($upstream_id) $this->upstream->id = $this->upstream_data['id']; return $this->upstream; } + + protected function expectGetUpstreams() + { + $this->session->expects($this->once()) + ->method('getUser') + ->with() + ->willReturn($this->user); + $this->user->expects($this->once()) + ->method('getUpstreams') + ->with() + ->willReturn($this->upstreams); + } }