<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Armory Docs – Tasks</title><link>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/</link><description>Recent content in Tasks on Armory Docs</description><generator>Hugo -- gohugo.io</generator><atom:link href="/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/index.xml" rel="self" type="application/rss+xml"/><item><title>Plugins: Task Type: createApplication</title><link>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/type.createapplication/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/type.createapplication/</guid><description>
&lt;ul>
&lt;li>&lt;strong>Path:&lt;/strong> tasks&lt;/li>
&lt;li>&lt;strong>Method:&lt;/strong> Post&lt;/li>
&lt;li>&lt;strong>Package:&lt;/strong> &lt;code>spinnaker.http.authz&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="example-payload">Example Payload&lt;/h2>
&lt;details>&lt;summary>Click to expand&lt;/summary>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;input&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;body&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;application&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;aftest&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;description&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;Create Application: aftest&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;job&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;application&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;cloudProviders&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;email&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;af@test.com&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;instancePort&amp;#34;&lt;/span>: &lt;span style="color:#bd93f9">80&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;aftest&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;type&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;createApplication&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;method&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;POST&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;path&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f1fa8c">&amp;#34;tasks&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;isAdmin&amp;#34;&lt;/span>: &lt;span style="color:#ff79c6">false&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;roles&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;armory-io&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;source&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;GITHUB_TEAMS&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;productmanagers&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;source&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;GITHUB_TEAMS&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;username&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/details>
&lt;h2 id="example-policy">Example Policy&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>This policy disables the ability to create new applications for non-admin users unless their role is &amp;lsquo;applicationCreators&amp;rsquo;.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">package&lt;/span> spinnaker.http.authz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">default&lt;/span> message=&lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>allow = message&lt;span style="color:#ff79c6">==&lt;/span>&lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>message = &lt;span style="color:#f1fa8c">&amp;#34;Your role lacks permissions to create new applications&amp;#34;&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#50fa7b">createsTaskOfType&lt;/span>(&lt;span style="color:#f1fa8c">&amp;#34;createApplication&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.user.isAdmin&lt;span style="color:#ff79c6">!=&lt;/span>&lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> not &lt;span style="color:#50fa7b">hasRole&lt;/span>(&lt;span style="color:#f1fa8c">&amp;#34;applicationCreators&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#50fa7b">hasRole&lt;/span>(role){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.user.roles[_].name=role
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#50fa7b">createsTaskOfType&lt;/span>(tasktype){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.method=&lt;span style="color:#f1fa8c">&amp;#34;POST&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.path=[&lt;span style="color:#f1fa8c">&amp;#34;tasks&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.body.job[_].&lt;span style="color:#8be9fd;font-style:italic">type&lt;/span>=tasktype
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>This policy disables the ability to create new applications, or update existing applications unless the applications have specified at least 1 role with &amp;lsquo;write&amp;rsquo; permissions.
&lt;strong>Note:&lt;/strong> The spinnaker UI is not currently able to display an error message when this policy denies the action.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">package&lt;/span> spinnaker.http.authz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>allow = message&lt;span style="color:#ff79c6">==&lt;/span>&lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">default&lt;/span> message=&lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>message=&lt;span style="color:#f1fa8c">&amp;#34;You must provide at least 1 user with full execute permissions&amp;#34;&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#50fa7b">not&lt;/span>(&lt;span style="color:#50fa7b">hasWritePermissions&lt;/span>(input.body.job[&lt;span style="color:#bd93f9">0&lt;/span>]))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#50fa7b">createsTaskOfType&lt;/span>([&lt;span style="color:#f1fa8c">&amp;#34;createApplication&amp;#34;&lt;/span>,&lt;span style="color:#f1fa8c">&amp;#34;updateApplication&amp;#34;&lt;/span>][_])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#50fa7b">hasWritePermissions&lt;/span>(job) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#50fa7b">count&lt;/span>(job.application.permissions.WRITE)&amp;gt;&lt;span style="color:#bd93f9">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#50fa7b">createsTaskOfType&lt;/span>(tasktype){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.method=&lt;span style="color:#f1fa8c">&amp;#34;POST&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.path=[&lt;span style="color:#f1fa8c">&amp;#34;tasks&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.body.job[_].&lt;span style="color:#8be9fd;font-style:italic">type&lt;/span>=tasktype
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;h2 id="keys">Keys&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Key&lt;/th>
&lt;th style="text-align:center">Type&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.application&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The name of the application being created.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.description&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The description of the application being created.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.cloudProviders&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The applications allowed cloud providers.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.email&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The email address of the owner of the application.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.instancePort&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>number&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.name&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The name of the application being created.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].type&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The type of task being run, in this case &lt;code>createApplication&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].user&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The ID of the user to run the job as.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.method&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The HTTP method by which the API is being called. When creating a task this is &lt;code>POST&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.path[]&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The API path of the job. When creating a new task this is the array &lt;code>[&amp;quot;tasks&amp;quot;]&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.description&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The description of the application being created.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.permissions.EXECUTE[]&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The list of roles that have execute permission to the application.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.permissions.READ[]&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The list of roles that have read permission to the application.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.permissions.WRITE[]&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The list of roles that have write permission to the application.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.repoProjectKey&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The unique ID of the project in source control.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.repoSlug&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The slug for the source code repo. Typically the repository&amp;rsquo;s owner or organization ID.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.repoType&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>With what type of sourcecode repo is this application associated.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="inputuser">input.user&lt;/h3>
&lt;p>This object provides information about the user performing the action. This can be used to restrict actions by role. See &lt;a href="/plugins/policy-engine/use/packages/common-objects/input.user/">input.user&lt;/a> for more information.&lt;/p></description></item><item><title>Plugins: Task Type: deleteManifest</title><link>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/type.deletemanifest/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/type.deletemanifest/</guid><description>
&lt;ul>
&lt;li>&lt;strong>Path:&lt;/strong> tasks&lt;/li>
&lt;li>&lt;strong>Method:&lt;/strong> Post&lt;/li>
&lt;li>&lt;strong>Package:&lt;/strong> &lt;code>spinnaker.http.authz&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="compatibility-note">Compatibility note&lt;/h2>
&lt;p>Starting in 2.26, the UI has been updated to more closely follow immutable infrastructure principles.&lt;/p>
&lt;p>When you navigate to the Infrastructure tab in the UI for an application that has the Kubernetes provider configured, actions that change the Kubernetes infrastructure (such as Create or Delete), including Clusters, Load Balancers, and Firewalls, are no longer available.&lt;/p>
&lt;h3 id="impact">Impact&lt;/h3>
&lt;p>Users do not see these actions in the UI by default. You must configure the UI to display them if you want your users to be able to perform them through the UI. To write policies that control which user roles can see the UI actions and be able to use them, you must enable the actions.&lt;/p>
&lt;h3 id="workaround">Workaround&lt;/h3>
&lt;p>Whether or not these actions are available in the UI is controlled by the following property in &lt;code>settings-local.yml&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yml" data-lang="yml">&lt;span style="display:flex;">&lt;span>window.spinnakerSettings.kubernetesAdHocInfraWritesEnabled = &amp;lt;boolean&amp;gt;;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>Note that disabling the UI does not completely prevent users from performing these actions. For that, you must create policies.&lt;/p>
&lt;/blockquote>
&lt;p>Set this property to &lt;code>true&lt;/code>. Setting the value to &lt;code>false&lt;/code> hides the buttons for all users regardless of whether you grant specific users access to the buttons through the Policy Engine.&lt;/p>
&lt;h2 id="example-payload">Example Payload&lt;/h2>
&lt;details>&lt;summary>Click to expand&lt;/summary>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;input&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;body&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;application&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;description&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;Delete manifest&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;job&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;account&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;spinnaker&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;cloudProvider&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;kubernetes&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;location&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;staging&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;manifestName&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;deployment hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;options&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;gracePeriodSeconds&amp;#34;&lt;/span>: &lt;span style="color:#bd93f9">5&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;orphanDependants&amp;#34;&lt;/span>: &lt;span style="color:#ff79c6">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;reason&amp;#34;&lt;/span>: &lt;span style="color:#ff79c6">null&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;type&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;deleteManifest&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;method&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;POST&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;path&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f1fa8c">&amp;#34;tasks&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;isAdmin&amp;#34;&lt;/span>: &lt;span style="color:#ff79c6">false&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;roles&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;username&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/details>
&lt;h2 id="example-policy">Example Policy&lt;/h2>
&lt;p>This example prevents users from deleting deployed manifests from production accounts on the &amp;lsquo;Clusters&amp;rsquo; tab of the spinnaker UI.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">package&lt;/span> spinnaker.http.authz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">default&lt;/span> message=&lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>allow = message&lt;span style="color:#ff79c6">==&lt;/span>&lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#50fa7b">isProductionAccount&lt;/span>(account){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f1fa8c">&amp;#34;prodAccount1&amp;#34;&lt;/span>,&lt;span style="color:#f1fa8c">&amp;#34;prodAccount2&amp;#34;&lt;/span>][_]&lt;span style="color:#ff79c6">==&lt;/span>account
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>message = &lt;span style="color:#f1fa8c">&amp;#34;Manifests cannot be deleted outside of a pipeline in production accounts&amp;#34;&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#50fa7b">createsTaskOfType&lt;/span>(&lt;span style="color:#f1fa8c">&amp;#34;deleteManifest&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#50fa7b">isProductionAccount&lt;/span>(input.body.job[_].account)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#50fa7b">createsTaskOfType&lt;/span>(tasktype){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.method=&lt;span style="color:#f1fa8c">&amp;#34;POST&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.path=[&lt;span style="color:#f1fa8c">&amp;#34;tasks&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.body.job[_].&lt;span style="color:#8be9fd;font-style:italic">type&lt;/span>=tasktype
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="keys">Keys&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Key&lt;/th>
&lt;th>Type&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.application&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The name of the application that deployed the manifest being deleted.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.description&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The phrase &amp;ldquo;Delete Manifest&amp;rdquo;.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].account&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The spinnaker account that will delete the manifest.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].cloudProvider&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The cloud provider running the manifest, typically &amp;ldquo;kubernetes&amp;rdquo;.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].location&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The namespace from which the manifest is deleted.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].manifestName&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The name of the manifest to delete.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].options.gracePeriodSeconds&lt;/code>&lt;/td>
&lt;td>&lt;code>number&lt;/code>&lt;/td>
&lt;td>How many seconds the resource identified by the manifest is given to shut down gracefully before being forcefully terminated.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].options.orphanDependants&lt;/code>&lt;/td>
&lt;td>&lt;code>boolean&lt;/code>&lt;/td>
&lt;td>If &lt;code>false&lt;/code> dependant kubernetes resources will also be deleted, if &lt;code>true&lt;/code> they are orphaned.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].reason&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].type&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&amp;ldquo;deleteManifest&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].user&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The ID of the user who started the job. More information is available under the &lt;code>input.user&lt;/code> fields.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.method&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;code>POST&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.path[]&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;code>[tasks]&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="inputuser">input.user&lt;/h3>
&lt;p>This object provides information about the user performing the action. This can be used to restrict actions by role. See &lt;a href="/plugins/policy-engine/use/packages/common-objects/input.user/">input.user&lt;/a> for more information.&lt;/p></description></item><item><title>Plugins: Task Type: deployManifest</title><link>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/type.deploymanifest/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/type.deploymanifest/</guid><description>
&lt;ul>
&lt;li>&lt;strong>Path:&lt;/strong> tasks&lt;/li>
&lt;li>&lt;strong>Method:&lt;/strong> Post&lt;/li>
&lt;li>&lt;strong>Package:&lt;/strong> &lt;code>spinnaker.http.authz&lt;/code>&lt;/li>
&lt;li>&lt;/li>
&lt;/ul>
&lt;h2 id="compatibility-note">Compatibility note&lt;/h2>
&lt;p>Starting in 2.26, the UI has been updated to more closely follow immutable infrastructure principles.&lt;/p>
&lt;p>When you navigate to the Infrastructure tab in the UI for an application that has the Kubernetes provider configured, actions that change the Kubernetes infrastructure (such as Create or Delete), including Clusters, Load Balancers, and Firewalls, are no longer available.&lt;/p>
&lt;h3 id="impact">Impact&lt;/h3>
&lt;p>Users do not see these actions in the UI by default. You must configure the UI to display them if you want your users to be able to perform them through the UI. To write policies that control which user roles can see the UI actions and be able to use them, you must enable the actions.&lt;/p>
&lt;h3 id="workaround">Workaround&lt;/h3>
&lt;p>Whether or not these actions are available in the UI is controlled by the following property in &lt;code>settings-local.yml&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yml" data-lang="yml">&lt;span style="display:flex;">&lt;span>window.spinnakerSettings.kubernetesAdHocInfraWritesEnabled = &amp;lt;boolean&amp;gt;;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>Note that disabling the UI does not completely prevent users from performing these actions. For that, you must create policies.&lt;/p>
&lt;/blockquote>
&lt;p>Set this property to &lt;code>true&lt;/code>. Setting the value to &lt;code>false&lt;/code> hides the buttons for all users regardless of whether you grant specific users access to the buttons through the Policy Engine.&lt;/p>
&lt;h2 id="example-payload">Example Payload&lt;/h2>
&lt;details>&lt;summary>Click to expand&lt;/summary>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;input&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;body&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;application&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;description&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;Deploy manifest&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;job&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;account&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;spinnaker&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;cloudProvider&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;kubernetes&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;manifest&amp;#34;&lt;/span>: &lt;span style="color:#ff79c6">null&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;manifestArtifactAccount&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;embedded-artifact&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;manifests&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;apiVersion&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;apps/v1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;Deployment&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;metadata&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;annotations&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;artifact.spinnaker.io/location&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;staging&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;artifact.spinnaker.io/name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;artifact.spinnaker.io/type&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;kubernetes/deployment&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;artifact.spinnaker.io/version&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;moniker.spinnaker.io/application&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;moniker.spinnaker.io/cluster&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;deployment hostname&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;labels&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;app.kubernetes.io/managed-by&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;spinnaker&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;app.kubernetes.io/name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;namespace&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;staging&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;spec&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;replicas&amp;#34;&lt;/span>: &lt;span style="color:#bd93f9">4&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;selector&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;matchLabels&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;app&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;version&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;v1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;strategy&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;rollingUpdate&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;maxSurge&amp;#34;&lt;/span>: &lt;span style="color:#bd93f9">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;maxUnavailable&amp;#34;&lt;/span>: &lt;span style="color:#bd93f9">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;type&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;RollingUpdate&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;template&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;metadata&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;annotations&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;artifact.spinnaker.io/location&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;staging&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;artifact.spinnaker.io/name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;artifact.spinnaker.io/type&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;kubernetes/deployment&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;artifact.spinnaker.io/version&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;moniker.spinnaker.io/application&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;moniker.spinnaker.io/cluster&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;deployment hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;prometheus.io/port&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;9113&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;prometheus.io/scrape&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;true&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;labels&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;app&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;app.kubernetes.io/managed-by&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;spinnaker&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;app.kubernetes.io/name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;version&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;v1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;spec&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;containers&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;image&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;rstarmer/hostname:v1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;imagePullPolicy&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;Always&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;resources&amp;#34;&lt;/span>: {},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;volumeMounts&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;mountPath&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;/etc/nginx/conf.d/nginx-status.conf&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;nginx-status-conf&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;readOnly&amp;#34;&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;subPath&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;nginx.status.conf&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;args&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f1fa8c">&amp;#34;-nginx.scrape-uri=http://localhost:8090/nginx_status&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;image&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;nginx/nginx-prometheus-exporter:0.3.0&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;imagePullPolicy&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;Always&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;nginx-exporter&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;ports&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;containerPort&amp;#34;&lt;/span>: &lt;span style="color:#bd93f9">9113&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;nginx-ex-port&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;protocol&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;TCP&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;restartPolicy&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;Always&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;volumes&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;configMap&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;defaultMode&amp;#34;&lt;/span>: &lt;span style="color:#bd93f9">420&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;nginx-status-conf-v000&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;nginx-status-conf&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;moniker&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;app&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;cluster&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;deployment hostname&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;relationships&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;loadBalancers&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;securityGroups&amp;#34;&lt;/span>: []
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;source&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;text&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;type&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;deployManifest&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;versioned&amp;#34;&lt;/span>: &lt;span style="color:#ff79c6">null&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;method&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;POST&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;path&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f1fa8c">&amp;#34;tasks&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;isAdmin&amp;#34;&lt;/span>: &lt;span style="color:#ff79c6">false&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;roles&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;username&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/details>
&lt;h2 id="example-policy">Example Policy&lt;/h2>
&lt;p>Prevents editing manifests from outside of a pipeline on production accounts.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">package&lt;/span> spinnaker.http.authz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">default&lt;/span> message=&lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>allow = message&lt;span style="color:#ff79c6">==&lt;/span>&lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#50fa7b">isProductionAccount&lt;/span>(account){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f1fa8c">&amp;#34;prodAccount1&amp;#34;&lt;/span>,&lt;span style="color:#f1fa8c">&amp;#34;prodAccount2&amp;#34;&lt;/span>][_]&lt;span style="color:#ff79c6">==&lt;/span>account
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>message = &lt;span style="color:#f1fa8c">&amp;#34;Manifests cannot be deployed outside of a pipeline in production accounts&amp;#34;&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#50fa7b">createsTaskOfType&lt;/span>(&lt;span style="color:#f1fa8c">&amp;#34;deployManifest&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#50fa7b">isProductionAccount&lt;/span>(input.body.job[_].account)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#50fa7b">createsTaskOfType&lt;/span>(tasktype){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.method=&lt;span style="color:#f1fa8c">&amp;#34;POST&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.path=[&lt;span style="color:#f1fa8c">&amp;#34;tasks&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.body.job[_].&lt;span style="color:#8be9fd;font-style:italic">type&lt;/span>=tasktype
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="keys">Keys&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Key&lt;/th>
&lt;th>Type&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>input.body.application&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The name of the application for which a manifest is deployed.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.description&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&amp;ldquo;Deploy Manifest&amp;rdquo;.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].account&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The account to which the manifest is deployed.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].cloudProvider&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The cloud provider for the account, typically &amp;lsquo;kubernetes&amp;rsquo;.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].manifestArtifactAccount&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The account from which the manifest artifact should be read, if any.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].manifests[].*&lt;/code>&lt;/td>
&lt;td>&lt;code>*&lt;/code>&lt;/td>
&lt;td>The set of manifests that are deployed. Can be referenced to require certain conditions on manifests that are being deployed.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].moniker.app&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The name of the application for which a manifest is deployed.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].moniker.cluster&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>What existing resource cluster is having its manifest updated.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].source&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].type&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&amp;ldquo;deployManifest&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].user&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The username of the user who is trying to deploy. More information is available under the &lt;code>input.user&lt;/code> fields.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].versioned&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.method&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;code>POST&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.path[]&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;code>[tasks]&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="inputuser">input.user&lt;/h3>
&lt;p>This object provides information about the user performing the action. This can be used to restrict actions by role. See &lt;a href="/plugins/policy-engine/use/packages/common-objects/input.user/">input.user&lt;/a> for more information.&lt;/p></description></item><item><title>Plugins: Task Type: scaleManifest</title><link>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/type.scalemanifest/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/type.scalemanifest/</guid><description>
&lt;ul>
&lt;li>&lt;strong>Path:&lt;/strong> tasks&lt;/li>
&lt;li>&lt;strong>Method:&lt;/strong> Post&lt;/li>
&lt;li>&lt;strong>Package:&lt;/strong> &lt;code>spinnaker.http.authz&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="compatibility-note">Compatibility note&lt;/h2>
&lt;p>Starting in 2.26, the UI has been updated to more closely follow immutable infrastructure principles.&lt;/p>
&lt;p>When you navigate to the Infrastructure tab in the UI for an application that has the Kubernetes provider configured, actions that change the Kubernetes infrastructure (such as Create or Delete), including Clusters, Load Balancers, and Firewalls, are no longer available.&lt;/p>
&lt;h3 id="impact">Impact&lt;/h3>
&lt;p>Users do not see these actions in the UI by default. You must configure the UI to display them if you want your users to be able to perform them through the UI. To write policies that control which user roles can see the UI actions and be able to use them, you must enable the actions.&lt;/p>
&lt;h3 id="workaround">Workaround&lt;/h3>
&lt;p>Whether or not these actions are available in the UI is controlled by the following property in &lt;code>settings-local.yml&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yml" data-lang="yml">&lt;span style="display:flex;">&lt;span>window.spinnakerSettings.kubernetesAdHocInfraWritesEnabled = &amp;lt;boolean&amp;gt;;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>Note that disabling the UI does not completely prevent users from performing these actions. For that, you must create policies.&lt;/p>
&lt;/blockquote>
&lt;p>Set this property to &lt;code>true&lt;/code>. Setting the value to &lt;code>false&lt;/code> hides the buttons for all users regardless of whether you grant specific users access to the buttons through the Policy Engine.&lt;/p>
&lt;h2 id="example-payload">Example Payload&lt;/h2>
&lt;details>&lt;summary>Click to expand&lt;/summary>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;input&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;body&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;application&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;description&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;Scale manifest&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;job&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;account&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;spinnaker&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;cloudProvider&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;kubernetes&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;location&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;staging&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;manifestName&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;deployment hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;reason&amp;#34;&lt;/span>: &lt;span style="color:#ff79c6">null&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;replicas&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;5&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;type&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;scaleManifest&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;method&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;POST&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;path&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f1fa8c">&amp;#34;tasks&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;isAdmin&amp;#34;&lt;/span>: &lt;span style="color:#ff79c6">false&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;roles&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;username&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/details>
&lt;h2 id="example-policy">Example Policy&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>This policy prevents requires users to enter a reason when performing a scale from outside or a pipeline.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">package&lt;/span> spinnaker.http.authz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">default&lt;/span> message=&lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>allow = message&lt;span style="color:#ff79c6">==&lt;/span>&lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>message = &lt;span style="color:#f1fa8c">&amp;#34;You must provide a reason when scaling a manifest outside of a pipeline.&amp;#34;&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#50fa7b">createsTaskOfType&lt;/span>(&lt;span style="color:#f1fa8c">&amp;#34;scaleManifest&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> object.&lt;span style="color:#50fa7b">get&lt;/span>(input.body.job[_],&lt;span style="color:#f1fa8c">&amp;#34;reason&amp;#34;&lt;/span>,null)&lt;span style="color:#ff79c6">==&lt;/span>null
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#50fa7b">createsTaskOfType&lt;/span>(tasktype){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.method=&lt;span style="color:#f1fa8c">&amp;#34;POST&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.path=[&lt;span style="color:#f1fa8c">&amp;#34;tasks&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.body.job[_].&lt;span style="color:#8be9fd;font-style:italic">type&lt;/span>=tasktype
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>This policy prevents non-admin users from initiating a scaleManifest from the &amp;lsquo;clusters&amp;rsquo; tab of an application.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">package&lt;/span> spinnaker.http.authz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">default&lt;/span> message=&lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>allow = message&lt;span style="color:#ff79c6">==&lt;/span>&lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>message = &lt;span style="color:#f1fa8c">&amp;#34;Your role lacks permissions to scale applications outside of pipelines&amp;#34;&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#50fa7b">createsTaskOfType&lt;/span>(&lt;span style="color:#f1fa8c">&amp;#34;scaleManifest&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.user.isAdmin&lt;span style="color:#ff79c6">!=&lt;/span>&lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#50fa7b">createsTaskOfType&lt;/span>(tasktype){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.method=&lt;span style="color:#f1fa8c">&amp;#34;POST&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.path=[&lt;span style="color:#f1fa8c">&amp;#34;tasks&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.body.job[_].&lt;span style="color:#8be9fd;font-style:italic">type&lt;/span>=tasktype
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;h2 id="keys">Keys&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Key&lt;/th>
&lt;th>Type&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>input.body.application&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The name of the application for which the manifest is being scaled.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.description&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>Always &amp;ldquo;Scale Manifest&amp;rdquo;.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].account&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The name of the account in which the manifest is scaled.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].cloudProvider&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The name of the cloud provider in which the manifest is being scaled.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].location&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The namespace of the manifest beign scaled.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].manifestName&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The name of the manifest being scaled.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].reason&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The reason the user entered to explain the change.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].replicas&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The desired number of running pods after scaling.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].type&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>Always &amp;ldquo;scaleManifest&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].user&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The username of the user starting the task. It is reccomended to write rules using &lt;code>input.user&lt;/code> instead.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.method&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;code>POST&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.path[]&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;code>[&amp;quot;tasks&amp;quot;]&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="inputuser">input.user&lt;/h3>
&lt;p>This object provides information about the user performing the action. This can be used to restrict actions by role. See &lt;a href="/plugins/policy-engine/use/packages/common-objects/input.user/">input.user&lt;/a> for more information.&lt;/p></description></item><item><title>Plugins: Task Type: undoRolloutManifest</title><link>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/type.undorolloutmanifest/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/type.undorolloutmanifest/</guid><description>
&lt;ul>
&lt;li>&lt;strong>Path:&lt;/strong> tasks&lt;/li>
&lt;li>&lt;strong>Method:&lt;/strong> Post&lt;/li>
&lt;li>&lt;strong>Package:&lt;/strong> &lt;code>spinnaker.http.authz&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="compatibility-note">Compatibility note&lt;/h2>
&lt;p>Starting in 2.26, the UI has been updated to more closely follow immutable infrastructure principles.&lt;/p>
&lt;p>When you navigate to the Infrastructure tab in the UI for an application that has the Kubernetes provider configured, actions that change the Kubernetes infrastructure (such as Create or Delete), including Clusters, Load Balancers, and Firewalls, are no longer available.&lt;/p>
&lt;h3 id="impact">Impact&lt;/h3>
&lt;p>Users do not see these actions in the UI by default. You must configure the UI to display them if you want your users to be able to perform them through the UI. To write policies that control which user roles can see the UI actions and be able to use them, you must enable the actions.&lt;/p>
&lt;h3 id="workaround">Workaround&lt;/h3>
&lt;p>Whether or not these actions are available in the UI is controlled by the following property in &lt;code>settings-local.yml&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yml" data-lang="yml">&lt;span style="display:flex;">&lt;span>window.spinnakerSettings.kubernetesAdHocInfraWritesEnabled = &amp;lt;boolean&amp;gt;;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>Note that disabling the UI does not completely prevent users from performing these actions. For that, you must create policies.&lt;/p>
&lt;/blockquote>
&lt;p>Set this property to &lt;code>true&lt;/code>. Setting the value to &lt;code>false&lt;/code> hides the buttons for all users regardless of whether you grant specific users access to the buttons through the Policy Engine.&lt;/p>
&lt;h2 id="example-payload">Example Payload&lt;/h2>
&lt;details>&lt;summary>Click to expand&lt;/summary>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;input&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;body&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;application&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;description&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;Undo rollout of manifest&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;job&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;account&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;spinnaker&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;cloudProvider&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;kubernetes&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;location&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;staging&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;manifestName&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;deployment hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;reason&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;someReason&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;revision&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;3&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;type&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;undoRolloutManifest&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;method&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;POST&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;path&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f1fa8c">&amp;#34;tasks&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;isAdmin&amp;#34;&lt;/span>: &lt;span style="color:#ff79c6">false&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;roles&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;username&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/details>
&lt;h2 id="keys">Keys&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Key&lt;/th>
&lt;th>Type&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>input.body.application&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The name of the application that is being rolled back.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.description&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>Always &amp;ldquo;Undo rollout of manifest&amp;rdquo;.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].account&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The account in which the deployment is being rolled back.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].cloudProvider&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The cloud provider of the account in which the rollback will occur.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].location&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The namespace of the manifest being rolled back.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].manifestName&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The type and name of the manifest being rolled back.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].reason&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The reason provided by the user for initiating the rollback.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].revision&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>The revision to which the manifest should be rolled back.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].type&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>Always &amp;ldquo;undoRolloutManifest&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].user&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>the ID of the user who initiated the rollback.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.method&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;code>POST&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.path[]&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;code>[&amp;quot;tasks&amp;quot;]&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.user.isAdmin&lt;/code>&lt;/td>
&lt;td>&lt;code>boolean&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.user.username&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>Plugins: Task Type: updateApplication</title><link>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/type.updateapplication/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/type.updateapplication/</guid><description>
&lt;ul>
&lt;li>&lt;strong>Path:&lt;/strong> tasks&lt;/li>
&lt;li>&lt;strong>Method:&lt;/strong> Post&lt;/li>
&lt;li>&lt;strong>Package:&lt;/strong> &lt;code>spinnaker.http.authz&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="example-payload">Example Payload&lt;/h2>
&lt;details>&lt;summary>Click to expand&lt;/summary>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;input&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;body&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;application&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;aftest2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;description&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;Update Application: aftest2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;job&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;application&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;cloudProviders&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;kubernetes&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;dataSources&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;disabled&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;enabled&amp;#34;&lt;/span>: []
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;description&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;description2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;email&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;dasdasd@trest.com&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;instancePort&amp;#34;&lt;/span>: &lt;span style="color:#bd93f9">80&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;lastModifiedBy&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;aftest2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;permissions&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;EXECUTE&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f1fa8c">&amp;#34;productmanagers&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;READ&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f1fa8c">&amp;#34;productmanagers&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;WRITE&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f1fa8c">&amp;#34;productmanagers&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;repoProjectKey&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;project&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;repoSlug&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;name&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;repoType&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;github&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;trafficGuards&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;updateTs&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;1621444448000&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;type&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;updateApplication&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;method&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;POST&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;path&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f1fa8c">&amp;#34;tasks&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;isAdmin&amp;#34;&lt;/span>: &lt;span style="color:#ff79c6">false&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;roles&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;armory-io&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;source&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;GITHUB_TEAMS&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;productmanagers&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;source&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;GITHUB_TEAMS&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;username&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/details>
&lt;h2 id="example-policy">Example Policy&lt;/h2>
&lt;p>This policy disables the ability to create new applications, or update existing applications unless the applications have specified at least 1 role with &amp;lsquo;write&amp;rsquo; permissions.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> The UI is not currently able to display an error message when this policy denies the action.&lt;/p>
&lt;/blockquote>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">package&lt;/span> spinnaker.http.authz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>allow = message&lt;span style="color:#ff79c6">==&lt;/span>&lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">default&lt;/span> message=&lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>message=&lt;span style="color:#f1fa8c">&amp;#34;You must provide at least 1 user with full execute permissions&amp;#34;&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#50fa7b">not&lt;/span>(&lt;span style="color:#50fa7b">hasWritePermissions&lt;/span>(input.body.job[&lt;span style="color:#bd93f9">0&lt;/span>]))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#50fa7b">createsTaskOfType&lt;/span>([&lt;span style="color:#f1fa8c">&amp;#34;createApplication&amp;#34;&lt;/span>,&lt;span style="color:#f1fa8c">&amp;#34;updateApplication&amp;#34;&lt;/span>][_])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#50fa7b">hasWritePermissions&lt;/span>(job) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#50fa7b">count&lt;/span>(job.application.permissions.WRITE)&amp;gt;&lt;span style="color:#bd93f9">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#50fa7b">createsTaskOfType&lt;/span>(tasktype){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.method=&lt;span style="color:#f1fa8c">&amp;#34;POST&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.path=[&lt;span style="color:#f1fa8c">&amp;#34;tasks&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input.body.job[_].&lt;span style="color:#8be9fd;font-style:italic">type&lt;/span>=tasktype
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="keys">Keys&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Key&lt;/th>
&lt;th style="text-align:center">Type&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.application&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The name of the application being created.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.description&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The description of the application being created.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.cloudProviders&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The application&amp;rsquo;s allowed cloud providers.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.email&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The email address of the owner of the application.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.instancePort&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>number&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.name&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The name of the application being created.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].type&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The type of task being run, in this case &amp;ldquo;createApplication&amp;rdquo;.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].user&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The ID of the user to run the job as.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.method&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The HTTP method by which the API is being called. When creating a task this is &lt;code>POST&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.path[]&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The API path of the job. When creating a new task this is the array &lt;code>[&amp;quot;tasks&amp;quot;]&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.user.isAdmin&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>boolean&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.user.roles[].name&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.user.roles[].source&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.user.username&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.description&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The description of the application being created.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.permissions.EXECUTE[]&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The list of roles that have execute permission to the application.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.permissions.READ[]&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The list of roles that have read permission to the application.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.permissions.WRITE[]&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>The list of roles that have write permission to the application.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.repoProjectKey&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>What is the unique ID of the project in source control.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.repoSlug&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>What is the slug for the source code repo? Typically the repository&amp;rsquo;s owner or organization ID.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>input.body.job[].application.repoType&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>string&lt;/code>&lt;/td>
&lt;td>With what type of sourcecode repo is this application associated.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>Plugins: Task Type: upsertProject</title><link>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/type.upsertproject/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/plugins/policy-engine/use/packages/spinnaker.http.authz/tasks/type.upsertproject/</guid><description>
&lt;ul>
&lt;li>&lt;strong>Path:&lt;/strong> tasks&lt;/li>
&lt;li>&lt;strong>Method:&lt;/strong> Post&lt;/li>
&lt;li>&lt;strong>Package:&lt;/strong> &lt;code>spinnaker.http.authz&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="example-payload">Example Payload&lt;/h2>
&lt;details>&lt;summary>Click to expand&lt;/summary>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;input&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;body&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;application&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;spinnaker&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;description&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;Create project: testProjectName&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;job&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;project&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;config&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;applications&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;clusters&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;account&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;spinnaker&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;detail&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;*&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;stack&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;*&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;pipelineConfigs&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;application&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;pipelineConfigId&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;7db1e350-dedb-4dc1-9976-e71f97b5f132&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;email&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUser@company.com&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;testProjectName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;type&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;upsertProject&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;project&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;testProjectName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;method&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;POST&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;path&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f1fa8c">&amp;#34;tasks&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;user&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;isAdmin&amp;#34;&lt;/span>: &lt;span style="color:#ff79c6">false&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;roles&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;#34;username&amp;#34;&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;myUserName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/details>
&lt;h2 id="example-policy">Example Policy&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="keys">Keys&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Key&lt;/th>
&lt;th>Type&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>input.body.application&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.description&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].project.config.applications[]&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].project.config.clusters[].account&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].project.config.clusters[].detail&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].project.config.clusters[].stack&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].project.config.pipelineConfigs[].application&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].project.config.pipelineConfigs[].pipelineConfigId&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].project.email&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].project.name&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].type&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].user&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.project&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.method&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.path[]&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.user.isAdmin&lt;/code>&lt;/td>
&lt;td>&lt;code>boolean&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.user.username&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].project.config.clusters[].applications&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].project.createTs&lt;/code>&lt;/td>
&lt;td>&lt;code>number&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].project.id&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].project.lastModifiedBy&lt;/code>&lt;/td>
&lt;td>&lt;code>string&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>input.body.job[].project.updateTs&lt;/code>&lt;/td>
&lt;td>&lt;code>number&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item></channel></rss>