Search
K

Self-Serve Actions

Self-Service Experiences empower users to create and execute actions within the organization. These actions allow users to manage existing resources or perform maintenance tasks. This documentation provides detailed instructions on how to create and enable self-service actions.
Set up and run your Self-Serve Actions following this steps:
  1. 1.
  2. 3.
Or visualize a full sample, including backend sample code here.

Self-Serve Actions benefits

  • Accelerate your time-to-market
  • Drive standardization and reuse
  • Improve your DevEx
  • Improve your DevOps/Platform team experience
    • Dramatic reductions in ticket volume
    • Lower total cost of ownership
    • Reduce maintenance overhead
Examples of Self-Serve Actions by job role:
  • Software engineering
    • Create ad-hoc dev environment
    • Create a new service
    • Add a cloud resource
    • Upgrade package version
    • New feature flag
    • Add/change secret or environment variable
    • Re-run a data pipeline/job
  • Data engineering:
    • Change access to data
    • Set SLOs for a data pipeline
    • Start an ad-hoc job
    • Change job frequency
  • DevOps
    • Change pod replica counts
    • Change auto scale group settings
    • Provision IOPS on a cloud database
    • Provision a new cloud resource
    • Modify settings of an existing cloud resource
    • Make cloud storage available in other regions
    • Add a database replica
    • Roll back a deployment
    • Resize a machine instance
    • Drain traffic from a region
  • Quality
    • Run performance tests
    • Create a new QA environment
    • Run your extended test suites
    • Create a new test
    • Disable a broken / obsolete tes

Self-service action types

  • Day 2: These actions are designed to manage existing resources or perform maintenance tasks within the organization.
  • Create: Actions designed to create new resources.
  • Delete: Actions designed to delete resources.

Self-service action methods

  • Webhook: This method allows users to invoke an action by sending an HTTP request to a specified URL. The action is triggered by the incoming webhook request.

How does it work?

  • A user performs an action from Configure8 UI interface.
  • The user's inputs and relevant action metadata are bundled into a payload and sent to your infrastructure.
  • Upon receiving the payload, your infrastructure triggers a job associated with the action.
  • The user receives continuous indications of the job's progress, allowing them to track the status of the action.
  • During the execution of the action, you can use the Configure8 API to update the status, provide information such as logs and timestamps, and ensure the durability of each step.

Steps to enable an action

Self-service actions are created within the Configure8 application for your organization. To enable an action, follow these steps:

Setup action

Specify the action's name, input type, URL, method, and user inputs to allow flexibility for individual actions.

Setup backend

Set up the logic responsible for handling the action upon form submission. The backend logic is customizable to suit your specific needs. As part of your backend implementation, you can keep the action's status up to date by sending API requests associated with the performed action.

Setup Actions

Description

Details Section

In this section, provide a recognizable name, description, and type for the action. These details help users understand the purpose and functionality of the action.
Optional input for logos:

Context Section

The Context section allows you to control the execution of the action based on user access. You can define access restrictions and permissions to ensure the action is only available to authorized users. Currently limited to Admins only

User Inputs Section

The User Inputs section enables you to define optional parameters that can be used within the action. These inputs provide flexibility for various action scenarios, allowing users to customize the behavior of the action. User inputs can be required or optional.
Dynamic user inputs can be used to provide a more complex and interactive user input.

Method Section

In the Method section, you specify the backend method, HTTP method, URL, query parameters, headers, and payload for the action. This information determines how the action interacts with external systems or services.

Structure table

Action:

Field
Required
Description
Notes
id
true
Unique identifier for action
Auto generated
Name
true
Human-readable name for the action
Type
true
Dropdown with supported action types
Enumerable:
Day2, Create, Delete
Logo
true
Logo icon
Status
true
Active or Draft
Description
false
Human-readable description for the action
Owners
true
Who owns this action
User who is creating is the default owner
Visibility control
true
Dropdown with supported visibility control
Default is the same as company level visibility control
Viewers
false
Who can see the results of this action
Allowed People
false
Who can run this action
Applies to
false
Dropdown with items this actions applies to
User inputs*
false
Array of user inputs
In case of input is provided it is assumed as required
*see additional information in next table
Method
true
Dropdown with supported method types
Webhook by default.
(Limited options currently available)
HTTP Method
true
Dropdown with supported http methods
POST by default.
(Limited options currently available)
Webhook URL
true
URL to your backend and its logic implementation
Query Parameters
false
Additional query parameters
Parameters assuming not to be changeable from different executions
Headers
false
Additional header parameters
Payload
false
Additional payload object

User Inputs (assuming each input is object with next fields):

Field
Required
Description
Notes
type
true
Type of string
Value - “text”
At present, the feature is limited to the “text” option only.
title
true
Human-readable title for the input parameter
payloadName
true
Unique input parameter identifier
Duplicates are not acceptable
defaultValue
false
Human-readable example of the input parameter
helpText
false
Human-readable description for the input parameter
User inputs example:
Code
Visualization
[
{
"type": "text",
"title": "Provide branch name",
"payloadName": "ref",
"defaultValue": "main",
"helpText": "Branch name (e.g. feature/C8-123)"
},
{
"type": "text",
"title": "Title",
"payloadName": "name",
"defaultValue": "Provide tiltle"
},
{
"type": "text",
"title": "Description",
"payloadName": "pr_name"
}
]
User inputs TYPES example:
Code
Visualization
Expanded
[
{
"type": "text",
"title": "Text example",
"payloadName": "text",
"defaultValue": "main",
"helpText": "Text description"
},
{
"type": "dropdown",
"title": "Dropdown example",
"payloadName": "dropdown",
"defaultValue": "first option",
"options": [
{
"label": "first option"
"value": "any related to first option information which will be used in payload"
},
{
"label": "second option"
"value": "any related to second option information which will be used in payload"
}
],
"helpText": "Dropdown description"
},
{
"type": "number",
"title": "Number example",
"payloadName": "number",
"defaultValue": "2",
"helpText": "Number description"
},
{
"type": "email",
"title": "Email example",
"payloadName": "email",
"defaultValue": "[email protected]",
"helpText": "Email description"
},
{
"type": "checkbox",
"title": "Checkbox example",
"payloadName": "checkbox",
"defaultValue": "true",
"helpText": "Checkbox description"
} ,
{
"type": "datepicker",
"title": "Datepicker example",
"payloadName": "datepicker",
"defaultValue": "01.01.2023",
"helpText": "Datepicker description"
},
{
"type": "url",
"title": "URL",
"payloadName": "URL example",
"defaultValue": "https://app.configure8.io",
"helpText": "URL description"
}
]

Action Restrictions:

  • Only Owners can create, update, or delete actions. Other user types can preview action configurations.
  • Actions in progress cannot be updated or deleted.
  • Users are not allowed to change the action method

Placeholders

Predefined placeholders

We send a request to the provided URL with all the webhook-related data, including additional key: c8-report-token. You can include token in action payload using placeholder {{ c8ReportToken }} in this case additional key would be ignored. Important: This is pre-defined place holders and behave only in this way
Example usage of token placeholder in action payload:
{
"title": "Run build",
"inputs": {
"c8-report-token": "{{ c8ReportToken }}",
"description": "Execution of new build"
}
}
The token is valid for 1 hour. After this period, if the action is not in the "Complete" or "Failed" status, the app marks it as "Terminated".

User input’s placeholders

This can be used if you need to structure your payload in specific way. In payload you can specify structure that can be send, and if you need to specify value provided in user inputs you can use next pattern – {{ *make sure to use payloadName from user inputs* }}
Example usage of user inputs placeholder in action payload:
{
  "title": "Run build",
  "inputs": {
    "c8-report-token": "{{ c8ReportToken }}",
    "description": {{ description }}
  }
}
Payload should include “description” payloadName
Example:
[ 
{
    "type": "text",
    "title": "Description",
    "payloadName": "description",
    "helpText": "Provide description"
  }
]
Important: If you would not provide related payloadName in user inputs and use it payload in the end we will send string instead of replacing placeholder.
It can be replaced only once so if you use it multiple times it would be replaced only for first match.

Run actions

Webhook type

Run Action
When action is created, blueprint is provided in action level, each user with ADMIN role has possibility to execute(run) action. Each action can have multiple executions which optionally can differ with user inputs or just be new execution.
To run an action of the webhook type, follow these steps:
  • Go to configure8 application and open self-service action in top menu
  • In the "Actions" section, choose the action that you want to execute and click on the "three dots" or press on action name icon.
  • Select "Run" from the popup menu.
  • Depending on the action and the user inputs required, fill in the action parameters (if provided).
  • Click the "Run" button to initiate the execution of the action.
What is happening in background?
  • We create a default state for the current execution, setting it to the "In Progress" status and including additional information about the user and timestamp of execution.
  • If there is no response from the provided URL, the execution information is saved in our database. If an immediate response is received (within 10 seconds), the information is added to the status information. If the system responds with an error, the action is automatically set to "Failed".
  • An example of a valid response:
{
"status": "inprogress",
"startedAt": "2023-05-24T09:42:40.000-08:00",
"steps": [
{
"title": "Set up job",
"status": "inprogress",
"startedAt": "2023-05-24T09:42:40.000-08:00",
}
]
}
Diagram

Report

Report diagram.

Structure table.

Report:

Field
Required
Description
Notes
status
true
Enumerable action status
inprogress, failed, complete, terminated,
startedAt
true
Timestamp when action started
completedAt
false
Timestamp when action completed
steps
false
Array of steps
*see additional information in next table

Steps:

Field
Required
Description
Notes
title
true
Unique title name
status
true
Enumerable step status
inprogress, failed, complete, terminated,
startedAt
true
Timestamp when step started
completedAt
false
Timestamp when step completed
logs
false
Array of string

Updating progress status.

To update the progress status of an action, perform the following steps:
  • Include the c8-report-token to validate the request.
  • Obtain the c8-report-token from the first request to your system when you run the action.
  • Provide the desired updates for the main status and steps in the request body.
  • Ensure each step title is unique. Steps that are already in the "Complete" status do not need to be included in subsequent requests, as new incoming steps will be added based on the uniqueness of the step title.
Body example:
{
"status": "inprogress",
"startedAt": "2023-05-10T15:35:42.714+00:00",
"steps": [
{
"title": "Set up job",
"status": "complete",
"startedAt": "2023-05-10T15:35:42.714+00:00",
"completedAt": "2023-05-10T15:35:43.714+00:00"
},
{
"title": "Run actions/checkout@v2",
"status": "complete",
"startedAt": "2023-05-10T15:35:43.714+00:00",
"completedAt": "2023-05-10T15:35:44.625+00:00",
"logs": [
"Current runner version: 1.0.0",
"Prepare workflow directory",
"Download action repository",
"Complete job name: Do the job on the runner"
]
}
]
}
Please note that each step title should be unique. You don't need to send the same step with each request if it's already in the "Complete" status. New incoming steps will be added based on the uniqueness of the step title.

Security

Encryption Mechanisms for Sensitive Data

At Configure8, we prioritize the security and protection of your sensitive data. To ensure the confidentiality and integrity of your information, we employ robust encryption mechanisms. All sensitive data is encrypted.
When your data is stored within our systems, it is encrypted. This ensures that even in the unlikely event of unauthorized access to our storage infrastructure, your data remains secure and inaccessible without the proper decryption keys.
We continuously monitor and update our security measures to stay up-to-date with the latest industry practices and standards. By leveraging encryption mechanisms, we aim to provide a secure environment for your sensitive data within the Configure8 platform.

Data Privacy and Access Control

At Configure8, we prioritize data privacy and strictly enforce access controls to ensure that your action details are protected. We understand the importance of maintaining the confidentiality of your organization's information and take the following measures to safeguard your data:
  • Access Restrictions: Customers from other organizations are strictly prohibited from reading, sharing, or managing the details of your actions. Our access control mechanisms ensure that each organization's data is isolated and accessible only to authorized users within the respective organization.
  • User Roles and Permissions: Configure8 employs a role-based access control (RBAC) system that allows organizations to define granular access permissions for their users. This ensures that only authorized personnel within your organization can access and manage the actions and associated information.
By implementing stringent access controls, user authentication mechanisms, and data segregation practices, Configure8 ensures that your action details are kept confidential and secure. We are committed to maintaining the privacy and security of your organization's data throughout our platform.
Copyright © 2023 configure8, Inc. All rights reserved.