Self-Service Actions

Self-service actions empower users to create and execute actions within the configure8 developer portal. These actions allow users to create new items, 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 by following these steps:

Here, you can also see a full example, including the back-end sample code.

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 an 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 of a new cloud resource

    • Modify the 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 broken/obsolete tests

Self-Service Action Types

  • Day 2: These actions are designed to manage existing resources or perform organizational maintenance tasks.

  • 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 incoming webhook request triggers the action.

How does it work?

  • A user acts on the 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.

  • If an approval procedure needs to be performed, we leverage your existing approval process, blocking or releasing the workflow on the result.

  • 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 A Self-Service Action

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 lets you 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.

You can find all available user inputs on the User Input Types page.

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:

FieldDescriptionNotes

id

Auto generated. Unique identifier for action

Name

Required. Human-readable name for the action

Type

Required. Dropdown with supported action types. Options :Day2, Create, Delete

Logo

Required. Logo icon

Status

Required. Options: Active or Draft

Draft actions cannot be run

Description

Optional. Human-readable description for the action

Owners

Required. Who owns this action (see RBAC)

User who is creating is the default owner

Visibility control

Required. Dropdown with supported visibility control (see RBAC)

Default is the same as company level visibility control

Viewers

Optional. Who can see the results of this action (see RBAC)

Allowed People

Optional. Who can run this action (see RBAC)

Applies to

Optional. Dropdown with items this actions applies to Options :Application, Service, Resource

User inputs*

Optional. Array of user inputs

In case of input is provided it is assumed as required.

Method

Required. Dropdown with supported method types Options : Webhook

Limited options currently available

HTTP Method

Required. Dropdown with supported http methods Options : POST

Limited options currently available

Webhook URL

Required. URL to your backend and its logic implementation

Query Parameters

Optional. Additional query parameters

Parameters assuming not to be changeable from different executions

Headers

Optional. Additional header parameters

Payload

Optional. Additional payload object

You can find all available user inputs on the User Input Types page.

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 the additional key c8-report-token. You can include a token in the action payload using a placeholder {{c8ReportToken }}. In this case, additional keys 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 one day. After this period, if the action is not in the "Pending Approval", "Rejected", "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 specifically. In payload, you can specify the structure that can be sent, and if you need to specify the value provided in user inputs, you can use the following 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 do not provide related payloadName in user inputs and use its payload, we will send a string instead of replacing the placeholder.

It can be replaced only once, so if you use it multiple times, it will be replaced only for the first match.

Run actions

Webhook type

Run Action

When an action is created, the blueprint is provided at the action level, and each user with an ADMIN role can execute(run) an action. Each action can have multiple executions, which can differ with user inputs or be a new execution.

To run an action of the webhook type, follow these steps:

  • Go to configure8 application and open self-service action in the top menu

  • In the "Actions" section, choose the action you want to execute and click on the "three dots" or press the 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 the 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:

FieldDescriptionNotes

status

Required. Action status Options : inprogress, failed, complete, terminated, pending-approval , rejected

Actions not completed within one day are automatically terminated

startedAt

Required. Timestamp when action started

completedAt

Optional. Timestamp when action completed

steps

Optional. Array of steps

*see additional information in next table

Steps:

FieldDescriptionNotes

title

Required. Unique title name

status

Required. Step status Options : inprogress, failed, complete, terminated, pending-approval , rejected

startedAt

Required. Timestamp when step started

completedAt

Optional. Timestamp when step completed

logs

Optional. Array of string

Updating progress status.

To update the progress status of an action, perform the following steps:

  • When you run the action, obtain the c8-report-token from the first request to your system and send a POST request with c8-report-token: RECEIVED_TOKEN in the header to the https://app.configure8.io/self-service/api/v1/reports/webhook endpoint.

  • Include the c8-report-token to validate the request.

  • When you run the action, obtain the c8-report-token from the first request to your system.

  • Provide the desired updates for the main status and steps in the request body.

  • Ensure each step title is unique. Steps 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 the title of each step 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. We employ robust encryption mechanisms to ensure your information's confidentiality and integrity. 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 protect your action details. 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.

Last updated

Copyright © 2023 configure8, Inc. All rights reserved.