All pages
Powered by GitBook
1 of 18

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

List Workflows

Get all workflows and certification status

Returns a list of all workflows, including query details and creator information.

Method
syntax

GET

{{base_url}}/api/preview/awf/workflows

Examples

Request

curl '{{VEZA_URL}}/api/preview/awf/workflows' \
  -H 'authorization: Bearer '$token

Response

A successful response will include the Workflow details.

{
    "values": [
        {
            "workflow_id": "b9dc2586-5f30-4462-b6be-53f62debc40f",
            "name": "demo",
            "description": "demo",
            "owner": {
                "user_type": "localCookieUser",
                "id": "e3ac5e6a-1946-4688-82a7-8a607133a1c8",
                "email": "cookie@cookie.ai",
                "name": "earlypreview-auth0"
            },
            "notes": "",
            "query": {
                "raw_permissions": null,
                "effective_permissions": null,
                "source_node_types": {
                    "nodes": [
                        {
                            "node_type": "GoogleWorkspaceUser",
                            "tags": [],
                            "conditions": [],
                            "condition_expression": null,
                            "node_id": "",
                            "excluded_tags": [],
                            "count_conditions": [],
                            "direct_relationship_only": false,
                            "node_type_grouping_constraint": null
                        }
                    ],
                    "nodes_operator": "AND"
                },
                "required_intermediate_node_types": {
                    "nodes": [],
                    "nodes_operator": "AND"
                },
                "avoided_intermediate_node_types": {
                    "nodes": [],
                    "nodes_operator": "AND"
                },
                "destination_node_types": {
                    "nodes": [
                        {
                            "node_type": "GoogleCloudProject",
                            "tags": [],
                            "conditions": [],
                            "condition_expression": null,
                            "node_id": "",
                            "excluded_tags": [],
                            "count_conditions": [],
                            "direct_relationship_only": false,
                            "node_type_grouping_constraint": null
                        }
                    ],
                    "nodes_operator": "AND"
                },
                "no_relation": false,
                "snapshot_id": "1690354800",
                "waypoint_node_types": {
                    "nodes": [
                        {
                            "node_type": "GoogleCloudIamRoleBinding",
                            "tags": [],
                            "conditions": [],
                            "condition_expression": null,
                            "node_id": "",
                            "excluded_tags": [],
                            "count_conditions": [],
                            "direct_relationship_only": false,
                            "node_type_grouping_constraint": null
                        }
                    ],
                    "nodes_operator": "AND"
                },
                "path_summary_node_types": null,
                "node_relationship_type": "CONFIGURED",
                "include_all_source_tags_in_results": true,
                "include_all_destination_tags_in_results": false,
                "page_size": "0",
                "page_token": ""
            },
            "creator": {
                "user_type": "localCookieUser",
                "id": "e3ac5e6a-1946-4688-82a7-8a607133a1c8",
                "email": "cookie@cookie.ai",
                "name": "earlypreview-auth0"
            },
            "created_at": "2023-07-27T03:34:56.166550127Z"
        },
        {
            "workflow_id": "baecbd47-bd3d-4d52-acb8-34840a8973b2",
            "name": "Azure PS",
            "description": "",
            "owner": {
                "user_type": "localCookieUser",
                "id": "e3ac5e6a-1946-4688-82a7-8a607133a1c8",
                "email": "cookie@cookie.ai",
                "name": "earlypreview-auth0"
            },
            "notes": "",
            "query": {
                "raw_permissions": null,
                "effective_permissions": null,
                "source_node_types": {
                    "nodes": [
                        {
                            "node_type": "Principal",
                            "tags": [],
                            "conditions": [],
                            "condition_expression": null,
                            "node_id": "",
                            "excluded_tags": [],
                            "count_conditions": [],
                            "direct_relationship_only": false,
                            "node_type_grouping_constraint": null
                        }
                    ],
                    "nodes_operator": "AND"
                },
                "required_intermediate_node_types": {
                    "nodes": [],
                    "nodes_operator": "AND"
                },
                "avoided_intermediate_node_types": {
                    "nodes": [],
                    "nodes_operator": "AND"
                },
                "destination_node_types": {
                    "nodes": [
                        {
                            "node_type": "AzureDataLakeFilesystem",
                            "tags": [],
                            "conditions": [],
                            "condition_expression": null,
                            "node_id": "",
                            "excluded_tags": [],
                            "count_conditions": [],
                            "direct_relationship_only": false,
                            "node_type_grouping_constraint": null
                        }
                    ],
                    "nodes_operator": "AND"
                },
                "no_relation": false,
                "snapshot_id": "1675900800",
                "waypoint_node_types": null,
                "path_summary_node_types": {
                    "nodes": [
                        {
                            "node_type": "AzureADGroup",
                            "tags": [],
                            "conditions": [],
                            "condition_expression": null,
                            "node_id": "",
                            "excluded_tags": [],
                            "count_conditions": [],
                            "direct_relationship_only": false,
                            "node_type_grouping_constraint": null
                        },
                        {
                            "node_type": "ActiveDirectoryGroup",
                            "tags": [],
                            "conditions": [],
                            "condition_expression": null,
                            "node_id": "",
                            "excluded_tags": [],
                            "count_conditions": [],
                            "direct_relationship_only": false,
                            "node_type_grouping_constraint": null
                        },
                        {
                            "node_type": "AzureRoleAssignment",
                            "tags": [],
                            "conditions": [],
                            "condition_expression": null,
                            "node_id": "",
                            "excluded_tags": [],
                            "count_conditions": [],
                            "direct_relationship_only": false,
                            "node_type_grouping_constraint": null
                        },
                        {
                            "node_type": "AzureAssignmentPermissions",
                            "tags": [],
                            "conditions": [],
                            "condition_expression": null,
                            "node_id": "",
                            "excluded_tags": [],
                            "count_conditions": [],
                            "direct_relationship_only": false,
                            "node_type_grouping_constraint": null
                        }
                    ],
                    "nodes_operator": "AND"
                },
                "node_relationship_type": "CONFIGURED",
                "include_all_source_tags_in_results": false,
                "include_all_destination_tags_in_results": false,
                "page_size": "0",
                "page_token": ""
            },
            "creator": {
                "user_type": "localCookieUser",
                "id": "e3ac5e6a-1946-4688-82a7-8a607133a1c8",
                "email": "cookie@cookie.ai",
                "name": "earlypreview-auth0"
            },
            "created_at": "2023-02-09T03:07:24.458473708Z"
        }
    ]
}

See for additional details on the complete workflow object.

Workflow Parameters

Workflow Parameters Reference

Workflows, certifications, and result details

This page describes common properties for listing workflows, certifications, and certification results:

Workflow Properties

Certification Properties

Note that to maintain certification integrity, some properties are immutable and can't be modified, while other values system-updated. Mutable fields such as "name," "notes," "reviewers" and "due date" can be changed by operators and admins using the Veza UI:

Internal fields are updated by the workflow service to store important metadata:

States can be:

  • CERT_STATE_SEARCHING // The query is still running

  • CERT_STATE_IN_PROGRESS // the certification is being reviewed

  • CERT_STATE_COMPLETED // the review of the certification is complete

Result Properties

Valid decisions are:

  1. RESULT_DECISION_NONE // No decision has been made

  2. RESULT_DECISION_ACCEPTED // The access described in the result row is acceptable

  3. RESULT_DECISION_REJECTED // The access described in the result row isn't correct

  4. RESULT_DECISION_FIXED // The access was rejected, but has been fixed

Both the number or string value for the decision are allowed, for example "decision": 4 or "decision": RESULT_DECISION_FIXED.

ResultNode

Shows source, destination, or intermediate entity details for a query result:

WorkflowUser

  • When assigning reviewers using preview Workflows APIs, requested users are validated before assigning them to a certification result, and not assigned when the user can’t be found. Assignee id and user_type are required to identify reviewers. name and email are optional but if provided must match the Veza user record.

ActionLog

Results contain a record of all prior actions on a certification result.

Possible actions are:

  • NOTE_ADDED

  • REVIEWER_ASSIGNED

  • DECISION

The response will include the type, id, email, and name of the user who made the change:

ReviewerAssignmentInstructions

The reviewer_assignment specifies how reviewers should be assigned to rows, during initial certification create or when reviewers are re-assigned by smart action.

users_manager and resource_managers assigns reviewers based on Global IdP settings.

reviewers is a way to specify one or more reviewers to apply to every row. fallback_reviewers is one or more reviewers that to assign to rows if auto assign by user or resource manager fails for any reason

Update Certification Result

Add decisions and notes to a certification result

Apply a decision, note, sign-off, or reviewer change to a numbered certification result.

Each row of the certification results can be annotated, marked as ACCEPTED, or REJECTED, signed-off, or assigned to a different reviewer.

Parameters

value must include the result_id and any mutable fields to update:

Valid decisions are:

  • NONE // No decision has been made

  • ACCEPTED // The access described in the result row is acceptable

  • REJECTED // The access described in the result row isn't correct

  • FIXED // The access was rejected but has been fixed

Re-assigning reviewers

A result’s reviewer can be reassigned by updating the reviewers field with a list of one or more Access Workflow User objects:

Examples

Reject with note

Change the reviewer to a Custom IdP user

Assign a local user as a reviewer

Response

A successful response will be empty: {}.

List Certification Results

Get results for workflow certifications

Returns the results of the certification query, including any special properties, decisions, and notes.

Parameters

Examples

Request

Provide the UUID of the certification to get results. You can page through responses by providing a starting result number, and setting the maximum results to return.

Response

Each row in a certification describes an identity and resource entity pair, connected by a set of concrete and abstract permissions. Responses can be partial, depending on the page_size. You can get the next set of results by requesting a valid next_page_token as the page_token.

Force Update Result

Update a single result with escalated privileges

ForceUpdateAwfResults allows administrators to modify results more than normally allowed, such as changing sign-off status, or changing a row's decision after a certification expires.

A forced update request:

  • Can undo sign-off of a row.

  • On an expired or completed certification, during the grace period, rows can be modified as normal (Assuming they're no longer signed off).

    • The grace period for changes is 7 days after certification completion or expiration

  • Can't undo sign-off of a row.

  • On an expired certification, during the grace period, a rejected row can be marked as fixed by admin/operator.

Parameters

Sample Request

Sample Response

A successful response will be empty:

Access Reviews APIs

Methods for interacting with workflows and certifications

These endpoints enable listing workflows, listing certifications, getting certification results, and updating certifications. They can be used to programmatically retrieve workflow and certification details, and update certification rows with a decision or note, such as ticket number.

These endpoints also provide utility functionality, such as managing the reviewer deny list, populating results with webhook response info, and customizing quick filters, smart actions, and help pages.

APIs for Veza Access Reviews are subject to change, and as such are provided with the /preview API collection. Use the appropriate prefix when calling the API, for example, your-org.vezacloud.com/api/preview/.

Quick start

Get all workflows and IDs:

Use a workflow id to get active and pending certifications for that workflow:

The response will include certification details, including the certification ids.

Using a certification id, you can get results for the certification, including entity attributes:

Update a certification result row with a note:

When , all Veza Workflows are returned within a values array. Each has the properties:

Name
Type
Description

returns all Certifications for a workflow, within a values array.

Name
Type
Description

See for more details on query construction.

Name
Type
Description

include a numeric ID, the query details, and any decisions and notes. Each result includes entity details for the source -> destination nodes and the cumulative permissions under review:

Name
Type
Description

The notes field will always contain the most recent note. Previous notes can be reviewed in the using the List Cert Results API.

Name
type
Description

Reviewer details, typically a Veza user account. If are configured, the user type and id refer to Veza graph entities:

Name
Type
Description

You can get details for a local Veza user from Administration > User Management. For graph entities (identities from an external identity provider), inspect the entity details using Access Search or the Entities page. will return all users for a given certification.

Name
Type
Description
Method
syntax
Name
Type
In
Description
Name
Type
Req.
Description

Adding a note overwrites the previous value. Historical notes are included in the action log when . When viewing the row in the UI, only the most recent note is shown.

Name
Type
Req.
Description

Note that all fields are required when assigning a reviewer. As of the current release, there is no customer-facing API to get local user ids. For this reason, API-based reviewer reassignment is recommended only when a graph IdP is configured as the , and you can programmatically retrieve required identifiers such as user "name," "id," and "email."

Method
syntax
Name
Type
Req.
Description

See for more details on the Certification Result object.

Method
syntax

The API token used for this request must be created for a user with the role.

A :

Field
In
Value

First, save your and Veza base URL as environment variables:

type

string

Entity type

name

string

Entity name

id

string

Entity UID

properties

key:value pair

Entity properties

user_type

string

SSO entity type or localCookieUser

id

string

User GUID

email

string

User email address

name

string

Full username

{
  "entries": [
    {
      "action": "REVIEWER_ASSIGNED",
      "user": {
        "user_type": "localCookieUser",
        "id": "e5aeaaf6-5d7a-4982-aa61-d0e6dea612a5",
        "email": "cookie@cookie.ai",
        "name": "preview-auth0"
      },
      "time": "2022-09-20T17:50:06.939577367Z",
      "reviewer_detail": {
        "old_reviewers": [],
        "new_reviewers": [
          {
            "user_type": "localCookieUser",
            "id": "299d63c2-8edb-4ed1-a725-e56d84d956b7",
            "email": "aallen@veza.com",
            "name": "docs"
          }
        ]
      }
    },
    {
      "action": "DECISION",
      "user": {
        "user_type": "localCookieUser",
        "id": "e5aeaaf6-5d7a-4982-aa61-d0e6dea612a5",
        "email": "cookie@cookie.ai",
        "name": "preview-auth0"
      },
      "time": "2022-09-20T17:50:21.424281596Z",
      "decision_detail": {
        "decision": "RESULT_DECISION_ACCEPTED",
        "note": "OK"
      }
    },
    {
      "action": "DECISION",
      "user": {
        "user_type": "localCookieUser",
        "id": "e5aeaaf6-5d7a-4982-aa61-d0e6dea612a5",
        "email": "cookie@cookie.ai",
        "name": "preview-auth0"
      },
      "time": "2022-09-20T17:50:44.381372987Z",
      "decision_detail": {
        "decision": "RESULT_DECISION_FIXED",
        "note": ""
      }
    },
    {
      "action": "NOTE_ADDED",
      "user": {
        "user_type": "localCookieUser",
        "id": "e5aeaaf6-5d7a-4982-aa61-d0e6dea612a5",
        "email": "cookie@cookie.ai",
        "name": "preview-auth0"
      },
      "time": "2022-09-20T17:52:14.773114900Z",
      "note": "updating the note"
    }
  ]
}
{
    "reviewer_assignment": {
        "fallback_reviewers": [
            {
                "email": "string",
                "id": "string",
                "name": "string",
                "user_type": "string"
            }
        ],
        "resource_managers": true,
        "reviewers": [
            {
                "email": "string",
                "id": "string",
                "name": "string",
                "user_type": "string"
            }
        ],
        "users_manager": true
    }
}

PUT

{{base_url}}/api/preview/awf/certifications/{certification_id}/results

cert_id

string

path

id of the certification to update

value

object

body

Mutable fields to update

curl -X PUT '{{baseurl}}/api/preview/awf/certifications/{{cert_id}}/results' \
-H 'authorization: Bearer ' $TOKEN \
 --data-raw '{"value": {"result_id": 0,"reviewers": [{"user_type": "CustomIDPUser", "id": "125", "email": "cookiedemo@cookie.ai", "name": "Valid Reviewer"}]}}'
curl -X PUT '{{baseurl}}/api/preview/awf/certifications/f9123002-f056-491f-978f-f203bc9885ed/results' \
  -H 'authorization: Bearer '$token \
  --data-raw '{
  "value": {
    "result_id": 0,
    "decision": "REJECTED",
    "notes": "Over-privileged"
  }
}'
curl -X PUT '{{baseurl}}/api/preview/awf/certifications/{{cert_id}}/results' \
-H 'authorization: Bearer ' $TOKEN \
 --data-raw '{"value": {"result_id": 0,"reviewers": [{"user_type": "CustomIDPUser", "id": "125", "email": "cookiedemo@cookie.ai", "name": "Valid Reviewer"}]}}'
curl -X PUT '{{baseurl}}/api/preview/awf/certifications/{{cert_id}}/results' \
-H 'authorization: Bearer ' $TOKEN \
--data-raw '{"value": {"result_id": 0,"reviewers": [{"user_type": "localCookieUser", "id": "0ffcfbc7-6339-4aed-afa4-ff3bea505485", "email": "cookie@cookie.ai", "name": "demo-auth0"}]}}'

GET

{{base_url}}/api/preview/awf/certifications/{certification_id}/results

certification_id

string

Y

Certification id

page_token

int

N

next_page_token to list results from

page_size

int

N

Max results to return per page (default 100, minimum 1, maximum 2,000)

paginate_direction_backwards

boolean

N

When true, use reverse order from the last page of results

curl '{{VEZA_URL}}/api/preview/awf/certifications/f9123002-f056-491f-978f-f203bc9885ed/results?page_token=0&page_size=1' \
  -H 'authorization: Bearer '$token
{
    "values": [
        {
            "result_id": 0,
            "source": {
                "aliases": [],
                "created_at": "2023-05-03T14:25:43Z",
                "datasource_id": "datasource:google_cloud_workspace",
                "email_addresses": [
                    "jdoe@cookiebeta.ai",
                    "jdoe@cookiebeta.ai.test-google-a.com",
                    "jdoe@veza.com"
                ],
                "full_admin": false,
                "google_cloud_organization_name": "organizations/123456789012",
                "guest": false,
                "id": "datasource:112655590859538682841",
                "idp_unique_id": "jdoe@cookiebeta.ai",
                "is_active": true,
                "last_login_at": "2023-05-10T15:25:04Z",
                "location_areas": [],
                "mfa_enabled": false,
                "name": "jdoe@cookiebeta.ai",
                "organization_names": [],
                "provider_id": "datasource",
                "suspended": false,
                "type": "GoogleWorkspaceUser"
            },
            "destination": {
                "created_at": "2021-11-01T14:23:35Z",
                "datasource_id": "datasource:google_cloud_iam",
                "google_cloud_organization_name": "organizations/123456789012",
                "id": "projects/743979515322",
                "name": "Dev GCP Project",
                "parent_id": "organizations/123456789012",
                "project_id": "striped-graph-330814",
                "provider_id": "datasource",
                "type": "GoogleCloudProject",
                "updated_at": "2022-04-07T22:08:48Z"
            },
            "accumulated_effective_permissions": [],
            "accumulated_raw_permissions": [
                "bigquery.datasets.get",
                "bigquery.datasets.getIamPolicy",
                "bigquery.tables.get",
                "bigquery.tables.getIamPolicy",
                "bigquery.tables.list",
                "iam.roles.get",
                "iam.roles.list",
                "iam.serviceAccounts.create",
                "iam.serviceAccounts.list",
                "resourcemanager.folders.create",
                "resourcemanager.folders.delete",
                "resourcemanager.folders.get",
                "resourcemanager.folders.getIamPolicy",
                "resourcemanager.folders.list",
                "resourcemanager.folders.move",
                "resourcemanager.folders.setIamPolicy",
                "resourcemanager.folders.undelete",
                "resourcemanager.organizations.get",
                "resourcemanager.organizations.getIamPolicy",
                "resourcemanager.organizations.setIamPolicy",
                "resourcemanager.projects.create",
                "resourcemanager.projects.delete",
                "resourcemanager.projects.get",
                "resourcemanager.projects.getIamPolicy",
                "resourcemanager.projects.list",
                "resourcemanager.projects.move",
                "resourcemanager.projects.setIamPolicy",
                "resourcemanager.projects.update",
                "storage.buckets.create",
                "storage.buckets.createTagBinding",
                "storage.buckets.delete",
                "storage.buckets.deleteTagBinding",
                "storage.buckets.get",
                "storage.buckets.getIamPolicy",
                "storage.buckets.list",
                "storage.buckets.listTagBindings",
                "storage.buckets.setIamPolicy",
                "storage.buckets.update"
            ],
            "updated_at": null,
            "updated_by": null,
            "signed_off_at": null,
            "signed_off_by": null,
            "notification_response_infos": [],
            "notification_status": "UNKNOWN",
            "waypoint": {
                "id": "organizations/123456789012_policy_role_binding0",
                "name": "CookieAIDevServicePrincipalRole",
                "type": "GoogleCloudIamRoleBinding"
            },
            "action_log_entries": [],
            "decision": "NONE",
            "notes": "",
            "reviewers": [
                {
                    "user_type": "localCookieUser",
                    "id": "e3ac5e6a-1946-4688-82a7-8a607133a1c8",
                    "email": "cookie@cookie.ai",
                    "name": "External User"
                }
            ],
            "signed_off_state": "NOT_SIGNED_OFF",
            "reviewer_assignment": null
        },
        {
            "result_id": 1,
            "source": {
                "aliases": [],
                "created_at": "2023-05-03T14:25:43Z",
                "datasource_id": "datasource:google_cloud_workspace",
                "email_addresses": [
                    "jdoe@cookiebeta.ai",
                    "jdoe@cookiebeta.ai.test-google-a.com",
                    "jdoe@veza.com"
                ],
                "full_admin": false,
                "google_cloud_organization_name": "organizations/123456789012",
                "guest": false,
                "id": "datasource:112655590859538682841",
                "idp_unique_id": "jdoe@cookiebeta.ai",
                "is_active": true,
                "last_login_at": "2023-05-10T15:25:04Z",
                "location_areas": [],
                "mfa_enabled": false,
                "name": "jdoe@cookiebeta.ai",
                "organization_names": [],
                "provider_id": "datasource",
                "suspended": false,
                "type": "GoogleWorkspaceUser"
            },
            "destination": {
                "created_at": "2021-11-01T14:23:35Z",
                "datasource_id": "datasource:google_cloud_iam",
                "google_cloud_organization_name": "organizations/123456789012",
                "id": "projects/743979515322",
                "name": "Dev GCP Project",
                "parent_id": "organizations/123456789012",
                "project_id": "striped-graph-330814",
                "provider_id": "datasource",
                "type": "GoogleCloudProject",
                "updated_at": "2022-04-07T22:08:48Z"
            },
            "accumulated_effective_permissions": [],
            "accumulated_raw_permissions": [
                "cloudkms.cryptoKeyVersions.create",
                "cloudkms.cryptoKeyVersions.destroy",
                "cloudkms.cryptoKeyVersions.get",
                "cloudkms.cryptoKeyVersions.list",
                "cloudkms.cryptoKeyVersions.restore",
                "cloudkms.cryptoKeyVersions.update",
                "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation",
                "cloudkms.cryptoKeyVersions.useToEncryptViaDelegation",
                "cloudkms.cryptoKeys.create",
                "cloudkms.cryptoKeys.get",
                "cloudkms.cryptoKeys.getIamPolicy",
                "cloudkms.cryptoKeys.list",
                "cloudkms.cryptoKeys.setIamPolicy",
                "cloudkms.cryptoKeys.update",
                "cloudkms.keyRings.create",
                "cloudkms.keyRings.createTagBinding",
                "cloudkms.keyRings.deleteTagBinding",
                "cloudkms.keyRings.get",
                "cloudkms.keyRings.getIamPolicy",
                "cloudkms.keyRings.list",
                "cloudkms.keyRings.listTagBindings",
                "cloudkms.keyRings.setIamPolicy",
                "cloudkms.locations.get",
                "cloudkms.locations.list",
                "resourcemanager.projects.get"
            ],
            "updated_at": null,
            "updated_by": null,
            "signed_off_at": null,
            "signed_off_by": null,
            "notification_response_infos": [],
            "notification_status": "UNKNOWN",
            "waypoint": {
                "id": "organizations/123456789012_policy_role_binding11",
                "name": "cloudkms.admin",
                "type": "GoogleCloudIamRoleBinding"
            },
            "action_log_entries": [],
            "decision": "NONE",
            "notes": "",
            "reviewers": [
                {
                    "user_type": "localCookieUser",
                    "id": "e3ac5e6a-1946-4688-82a7-8a607133a1c8",
                    "email": "cookie@cookie.ai",
                    "name": "External User"
                }
            ],
            "signed_off_state": "NOT_SIGNED_OFF",
            "reviewer_assignment": null
        }
    ],
    "next_page_token": "EAI=",
    "has_more": true,
    "has_previous": false
}

POST

/api/preview/awf/certifications/{certification_id}/results:force_update

curl '{{VEZA_URL}}/api/preview/awf/certifications/f9123002-978f-f203bc9885ed/results:force_update' \
  -H 'authorization: Bearer '$token \
  -D '{"value": {"result_id": 0,"signed_off_state":"NOT_SIGNED_OFF"}}'
{}
export VEZA_TOKEN=APIKEY
export VEZA_URL=https://preview.vezacloud.com
curl "$BASE_URL/api/preview/awf/workflows" \
  -H "authorization: Bearer $VEZA_TOKEN"
curl "$BASE_URL/api/preview/awf/certifications?workflow_id=b9dc2586-5f30-4462-b6be-53f62debc40f" \
  -H "authorization: Bearer $VEZA_TOKEN"
curl "$BASE_URL/api/preview/awf/certifications/b2562ef3-a4b3-4b30-8a45-1ba36f945d10/results?offset=0&size=30" \
  -H "authorization: Bearer $VEZA_TOKEN"
curl -X PUT "$BASE_URL/api/preview/awf/certifications/b2562ef3-a4b3-4b30-8a45-1ba36f945d10/results" \
  -H "authorization: Bearer $VEZA_TOKEN" \
  -d '{"value": {"result_id": 0,"decisions": "REJECTED", "notes": "Over-privileged"}}'
listing access workflows
Listing access certifications
Query Builder API
Certification results
action log
global IdP settings
List Reviewer Infos
Listing Certification Results
admin
standard update request
List Workflows
List Certifications
List Certification Results
Update Certification Result
Force Update Result
Update Webhook Info
Get Certification Result
Manage Reviewer Deny List
Workflow Parameters
Quick Filters
Help Page Templates
Smart Action Definitions
Delegate Reviewers
List Reviewer Infos
API key
List Workflows
List Certifications
List Certification Results
Update Certification Result
Workflow Parameters

workflow_id

string

Workflow GUID

name

string

Workflow display name

description

string

Extended description

owner

Owner user details

notes

string

Workflow notes

query

WorkflowQuery object

Workflow search conditions

creator

Creator user details

created_at

string (RFC 3339 timestamp)

Creation date

certification_id

string

Certification GUID

workflow_id

string

Workflow GUID

query_used

WorkflowQuery

The query for the workflow (immutable).

name

string

Certification name (not used)

notes

string

Certification notes

due_date

string (RFC 3339 timestamp)

Due date timestamp

reviewers

List of reviewers

state

AccessCertState

Certification status

snapshot_time

string (RFC 3339 timestamp)

Date of graph snapshot at certification creation

started_at

string (RFC 3339 timestamp)

Certification creation date

query_completed_at

string (RFC 3339 timestamp)

Timestamp indicating when certification results were generated

completed_at

string (RFC 3339 timestamp)

Certification completion date

created_by

Certification creator details

completed_by

User who marked certification as complete

total_result_count

int

Total query results

results_updated_at

string (RFC 3339 timestamp)

Timestamp

results_updated_by

User details

total_complete_count

int

Number or result rows with an accept, reject, or fixed decision

creator

User details

created_at

string (RFC 3339 timestamp)

Timestamp

updated_at

string (RFC 3339 timestamp)

Timestamp

updated_by

User details

error_reason

string

Error message, if the workflow query failed

expired_at

string (RFC 3339 timestamp)

Timestamp

total_result_count

int

Total number of results

total_complete_count

int

Results with a final decision

total_rejected_count

int

Results with a "reject" decision

total_accepted_count

int

Results with an "accept" decision

total_fixed_count

int

Results that have been "marked as fixed"

accumulated_effective_permissions

string list

Cumulative canonical (C/R/U/D) permissions to the resource

accumulated_raw_permissions

string list

List of concrete system permissions to the resource

action_log_entries

Log of previous actions on the result

decision

string

Row decision

destination

The result destination (typically a resource)

notes

string

The most recent note applied to the result

notification_response_infos

array

notification_status

string

Whether the integration triggered successfully

result_id

int

Result unique identifier for the certification

reviewers

Reviewer details

reviewer_assignment

ReviewerAssignmentInstructions object

Instructions for fallback and auto-assigned reviewers

signed_off_at

string (RFC 3339 timestamp)

signed_off_by

Details for a single reviewer

signed_off_state

string

UNKNOWN_SIGNED_OFF NOT_SIGNED_OFF SIGNED_OFF

source

Result source (typically a principal)

updated_at

string (RFC 3339 timestamp)

updated_by

waypoint

Related intermediate entity details, if specified by the workflow query

action

string

Action log event type

user

Reviewer details

time

string

RFC 3339 timestamp

decision_detail

object

Decision type and any notes

result_id

int

Y

certification result number to update

decision

enum

N

The decision to apply to the result

notes

string

N

Send an empty string " " to clear the current note

signed_off_state

string

N

Can be: NOT_SIGNED_OFF, SIGNED_OFF

reviewers

N

Contains Workflow User details for assigned reviewers

user_type

string

Y

id

string

Y

email

string

Y

Must match the email property on the local user or graph node.

name

string

Y

Must match the name property on the local user or graph node.

certification_id

path

ID of the certification containing the result to alter

value

body

Contains a single certification result and keys to update

result_id

body

Numeric result id to update (min 0)

decision

body

Result decision(NONE, REJECTED, ACCEPTED, FIXED)

notes

body

reviewers

body

signed_off_state

body

Sign-off status (NOT_SIGNED_OFF, SIGNED_OFF)

notification_status

body

Integration status (UNKNOWN, PENDING, SUCCEED, FAILED)

List Certifications

Get pending and completed certifications for a workflow

Returns all certifications for an access workflow.

Method
syntax

GET

{{base_url}}/api/preview/awf/certifications

Parameters

Name
type
Req.
Description

workflow_id

string

Y

Workflow to get certifications for

Examples

Request

curl '{{VEZA_URL}}/api/preview/awf/certifications?workfow_id=17ce79c7-a2e6-4baf-87ff-f386764c9659' \
  -H 'authorization: Bearer '$token

Response

values will contain all workflow details. The response may be paginated:

Name
type
Description

has_more

bool

Indicates if additional results are available.

total_result_count

int

The total number of results.

values

AccessCertResult

Sample response:

{
  "values": [
      {
          "certification_id": "b2562ef3-a4b3-4b30-8a45-1ba36f945d10",
          "workflow_id": "b9dc2586-5f30-4462-b6be-53f62debc40f",
          "query_used": {
              "raw_permissions": null,
              "effective_permissions": null,
              "source_node_types": {
                  "nodes": [
                      {
                          "node_type": "GoogleWorkspaceUser",
                          "tags": [],
                          "conditions": [],
                          "condition_expression": null,
                          "node_id": "",
                          "excluded_tags": [],
                          "count_conditions": [],
                          "direct_relationship_only": false,
                          "node_type_grouping_constraint": null
                      }
                  ],
                  "nodes_operator": "AND"
              },
              "required_intermediate_node_types": {
                  "nodes": [],
                  "nodes_operator": "AND"
              },
              "avoided_intermediate_node_types": {
                  "nodes": [],
                  "nodes_operator": "AND"
              },
              "destination_node_types": {
                  "nodes": [
                      {
                          "node_type": "GoogleCloudProject",
                          "tags": [],
                          "conditions": [],
                          "condition_expression": null,
                          "node_id": "",
                          "excluded_tags": [],
                          "count_conditions": [],
                          "direct_relationship_only": false,
                          "node_type_grouping_constraint": null
                      }
                  ],
                  "nodes_operator": "AND"
              },
              "no_relation": false,
              "snapshot_id": "1690354800",
              "waypoint_node_types": {
                  "nodes": [
                      {
                          "node_type": "GoogleCloudIamRoleBinding",
                          "tags": [],
                          "conditions": [],
                          "condition_expression": null,
                          "node_id": "",
                          "excluded_tags": [],
                          "count_conditions": [],
                          "direct_relationship_only": false,
                          "node_type_grouping_constraint": null
                      }
                  ],
                  "nodes_operator": "AND"
              },
              "path_summary_node_types": null,
              "node_relationship_type": "CONFIGURED",
              "include_all_source_tags_in_results": true,
              "include_all_destination_tags_in_results": false,
              "page_size": "0",
              "page_token": ""
          },
          "name": "demo",
          "notes": "",
          "due_date": "2023-07-30T03:44:00Z",
          "reviewers": [],
          "state": "IN_PROGRESS",
          "snapshot_time": "2023-07-26T07:00:00Z",
          "started_at": "2023-07-27T03:44:27.260812616Z",
          "query_completed_at": "2023-07-27T03:44:31.410373279Z",
          "completed_at": null,
          "created_by": {
              "user_type": "localCookieUser",
              "id": "e3ac5e6a-1946-4688-82a7-8a607133a1c8",
              "email": "cookie@cookie.ai",
              "name": "earlypreview-auth0"
          },
          "completed_by": null,
          "results_updated_at": "2023-07-27T03:44:31.410373665Z",
          "results_updated_by": {
              "user_type": "localCookieUser",
              "id": "e3ac5e6a-1946-4688-82a7-8a607133a1c8",
              "email": "cookie@cookie.ai",
              "name": "earlypreview-auth0"
          },
          "updated_at": "2023-07-27T03:44:31.410413829Z",
          "updated_by": {
              "user_type": "localCookieUser",
              "id": "e3ac5e6a-1946-4688-82a7-8a607133a1c8",
              "email": "cookie@cookie.ai",
              "name": "earlypreview-auth0"
          },
          "error_reason": "",
          "expired_at": null,
          "version": 1,
          "total_result_count": 2433,
          "total_complete_count": 0,
          "total_rejected_count": 0,
          "total_accepted_count": 0,
          "total_fixed_count": 0
      }
  ]
}

Quick Filters

Customizing saved filters for certification reviewers.

List, create, and delete saved filters, globally or for a single workflow. Reviewers can pick from available quick filters under Certification Filters > Saved Filters.

Method
Syntax

GET, POST, DELETE

{Veza URL}/api/preview/awf/quick_filters

Examples

Add a quick filter

Add a quick filter by specifying an optional workflow_id and a single source or destination node property, corresponding to a Review interface column.

Valid filter operators are:

  • co "contains"

  • eq "equals"

  • ne "not equals"

  • sw "starts with"

  • ew "ends with"

With a workflow_id specified, the filter will only apply to certifications on that workflow. Otherwise, reviewers can apply the quick filter to any certification:

POST {Veza URL}/api/preview/awf/quick_filters
{
    "name": "custom filter",
    "filter": "source.type co \"admin\"",
    "workflow_id": "ad78350a-bfe5-4eff-a160-dccbe28c6961"
}

A successful response will contain the filter id, for example:

{
    "id": "41761624-cb9c-4668-be69-3b0f359a45e3"
}

List all quick filters

GET {Veza URL}/api/preview/awf/quick_filters

Including a workflow_id in the query returns quick filters with a matching workflow_id and quick filters with no workflow_id:

GET {Veza URL}/api/preview/awf/quick_filters?workflow_id=78be0b3d-d6f4-4e5d-98c4-7b1db1a88575

Example response:

{
    "values": [
        {
            "id": "4a1dbf1a-282f-4faf-81f2-6ee3752b5cb2",
            "name": "User type = admin",
            "workflow_id": "78be0b3d-d6f4-4e5d-98c4-7b1db1a88575",
            "filter": "source.type eq \"admin\""
        },
        {
            "id": "69b131b0-8af5-4ab1-9099-91c03ca54555",
            "name": "abstract permissions include delete",
            "workflow_id": "",
            "filter": "abstract_permissions co \"Delete\""
        },
        {
            "id": "88e5d197-6555-4e3f-a48d-43713b340a2c",
            "name": "destination org filter",
            "workflow_id": "",
            "filter": "destination.google_cloud_organization_name eq \"acme\""
        },
        {
            "id": "df944da1-76fe-42e0-829e-b8bf0a200f39",
            "name": "concrete permissions include abort multipart upload",
            "workflow_id": "78be0b3d-d6f4-4e5d-98c4-7b1db1a88575",
            "filter": "concrete_permissions co \"s3:AbortMultipartUpload\""
        },
        {
            "id": "f722936d-a8f7-4b38-acb2-a41e12ec2673",
            "name": "User type is AwsIamUser",
            "workflow_id": "78be0b3d-d6f4-4e5d-98c4-7b1db1a88575",
            "filter": "source.type co \"AwsIamUser\""
        }
    ]
}

Remove quick filter by quick filter id

DELETE {Veza URL}/api/preview/awf/quick_filters/d31cfa3f-1999-4789-8ec1-a844c03dd622

Delegate Reviewers

Configure delegate Veza users who will be assigned as certification reviewers whenever a specified user would have been assigned.

  • Any certification items assigned to the original reviewer are also assigned to the delegated reviewer.

  • Delegate reviewers are notified of the assignment and receive notifications in place of the original reviewer. They can review and sign-off on any results assigned to the original reviewer.

  • The original reviewer can still act on results, but will not receive assignment or reminder emails.

Examples

Add user delegations

Add delegation for Veza system users:

A successful response will be empty.

Add delegation for Okta users (with IdP settings configured):

List user delegations

A successful response will list all configured delegations, contained in a values array:

Remove user delegations

To remove delegations, post the configuration to /api/preview/awf/delegation/users:remove.

A successful response will be empty.

Smart Action Definitions

Define filter-based actions that reviewers can apply to certifications results with a matching attribute or status.

Reviewers can view and apply custom actions from the Review interface by clicking Smart Action > Prepared Actions.

Add smart action definition

Create a smart action definition, globally or for a single Workflow.

Example request:

The filter can apply to any source or destination node property.

When apply_to_all_rows is true and no other filter criteria is specified, the action will run on all certification results.

Mutable fields and mutable filters

Mutable fields contain result attributes that are not sourced from Authorization Graph data. Use mutable_fields to apply changes to a result, and mutable_filter to filter results based on decision or sign-off state:

Remove a smart action definition

Delete a prepared action by definition id.

List smart action definitions

Returns an array of smart action definitions. By default, this endpoint lists all definitions. If a workflow_id is specified, only definitions for that workflow are included in the response.

Update a smart action definition

Alter a smart action definition by specifying the id and an array of values to change.

List Reviewer Infos

Get all reviewers and details by certification

Returns information about all users assigned to a certification and its results. This will include the users' email and ID, along with their progress on the certification (row_stats listing actions counts by type).

Parameters

Examples

Request

Response

A successful response returns AccessReviewerInfo objects within a values array:

Get Access Graph

Detailed graph relationships for certification results

Returns authorization graph relationships for a certification result, including intermediate role details and accumulated permissions.

Parameters

Omit snapshot_id to get the most recent access graph. Specify the snapshot_id of the original certification to show relationships at the time of certification.

Examples

Request

Response

The out_edges of each node will contain the IDs of other directly connected nodes. For example, if "OktaUser" is connected to two "OktaGroup" nodes G1 and G2, the user's out-edges will be [{G1}, {G2}]. The node id for each connected node will be included in the response, as well as the status of the relevant data sources, for example:

Update Webhook Info

Update status info for custom webhooks

Updates webhook status and details for a certification result.

If you have configured a custom webhook to conduct automated access removal or another form of remediation, you can update Veza with the notification status.

Your application can use this endpoint to send a POST request updating the webhook state, visible to other reviewers from Veza's Certification UI.

Path parameters

certification_id - id of the certification containing the result to update.

Body

The request body must include the id of the result to update. Valid notification_status are:

  • PENDING

  • SUCCEED

  • FAILED

Webhook_info strings can contain up to 255 bytes.

Response

A successful response will be empty {}

Global Settings APIs

API operations for customizing the behavior and functionality of Veza Access Reviews.

At present, the settings that can be configured by a Veza administrator are:

  • Auto-completion: Automatically complete reviews once all rows have a signed-off decision, or a non-rejected signed-off decision.

  • Completion requirements: Enable review completion at any time, or only when all rows are signed off with a non-rejected decision.

  • Data Source Status Acknowledgement: Require review creators to view and acknowledge the data source status shown at review creation.

  • Overdue Review Expiration: Enable or disable expiration of overdue reviews.

  • Review Expiration Behavior: Reject and sign off incomplete rows when a review expires.

  • Self Review Prevention: Prevent users from being assigned as reviewers for rows that relate to their own access and permissions.

  • Column Customization: Configure default columns which reviewers will see when they open a review.

  • UI Customization: Set whether notes are required when approving or rejecting access.

  • Sort Order: Set the default sort order and sorting column when opening a review.

  • Predefined Decision Notes: Add suggested notes as menu options when reviewers approve or reject rows.

For each endpoint, a GET request returns the current setting, and a PUT request updates the setting. Use your unique Veza URL and API key in your request, for example:

Optionally, you can use the Postman collection linked below to customize Access Reviews global settings:

Review Completion Allowed Settings

Customize the requirements for completing a review.

Example:

An Admin or Operator user can complete a review by clicking the "Complete Review" button.

Once a review is marked as "completed," it becomes read-only and is no longer visible to reviewers. By default, a review can be completed when all rows have a signed-off decision.

This API allows you to modify this behavior, enabling a review to be completed at any time, or only when all rows are signed off with a non-rejected decision. The latter option is useful if your organization prefers to complete reviews only after all rejected access has been remediated.

Possible values are:

  • COMPLETION_ALLOWED_UNKNOWN = 0

  • COMPLETION_ALLOWED_ALL_ROWS_HAVE_DECISION = 1 (Review can be completed only when all result rows have a decision)

  • COMPLETION_ALLOWED_ANYTIME = 2 (Review can be completed any time)

Get Review Completion Allowed Settings

Set Review Completion Allowed Settings

Review Auto-Complete Settings

Enable or disable the "auto-complete" feature. When auto-complete is enabled, a review will automatically be completed once all rows have a signed-off decision, or a non-rejected signed-off decision, depending on the "Completion Allowed Settings."

Possible values are:

  • AUTO_COMPLETE_UNKNOWN

  • AUTO_COMPLETE_ENABLED

  • AUTO_COMPLETE_DISABLED

Example:

Get Review Auto-Complete Settings

Set Review Auto-Complete Settings

Self Review Prevention

Enable or disable self-review prevention. When self-review prevention is enabled, users are prevented from being assigned as reviewers for rows that relate to their own access and permissions.

The value can be:

  • SELF_REVIEWER_CHECKING_UNKNOWN = 0

  • SELF_REVIEWER_CHECKING_DISABLED = 1

  • SELF_REVIEWER_CHECKING_ENABLED = 2

Review UI Customizations

By default, when a reviewer approves a row, a "notes" pop-up appears, allowing the user to optionally add a note explaining their decision. When a reviewer rejects a row, the "notes" pop-up appears, and adding a note is required. This API allows you to customize this behavior. For example, you can choose to disable the pop-up when a row is approved and make the notes pop-up optional when a row is rejected.

Additionally, this API can enable the historical "Approve & Signoff" action in the reviewer experience when multiple rows are selected. Note: It is recommended that this feature remains disabled to ensure a more streamlined reviewer experience.

Example:

accept_notes_behavior can be:

  • NOTES_BEHAVIOR_UNKNOWN = 0

  • NO_POP_UP = 1

  • POP_UP_OPTIONAL = 2

  • POP_UP_REQUIRED = 3

reject_notes_behavior can be:

  • NOTES_BEHAVIOR_UNKNOWN = 0

  • NO_POP_UP = 1

  • POP_UP_OPTIONAL = 2

  • POP_UP_REQUIRED = 3

approve_and_sign_off_button_behavior can be:

  • HIDE_OR_SHOW_BEHAVIOR_UNKNOWN = 0

  • SHOW = 1

  • HIDE = 2

Review Column Defaults

This API configures the default columns which reviewers will see when they open a review. If workflow_id is specified then the configuration will only be applied to reviews related to the particular Review Configuration identified by workflow_id.

The valid values to show entity attributes include:

  • source.ATTR

  • destination.ATTR

  • waypoint.ATTR

  • path_summary.ATTR

  • idp.ATTR

Where ATTR is an attribute name such as “id” or “name”.

The following column values are also valid:

  • status

  • abstract_permissions

  • concrete_permissions

  • updated_at

  • notes

  • reviewers

  • decision

  • decision_by

  • decision_by_id

  • decision_by_name

  • decision_by_email

  • decision_at

  • marked_fixed_by_id

  • marked_fixed_by_name

  • marked_fixed_by_email

  • marked_fixed_at

  • signed_off_state

  • signed_off_by_id

  • signed_off_by_name

  • signed_off_by_email

  • signed_off_at

  • notification_status

  • automation_run_ids

  • no_decision_or_decision_by

  • Is_signed_off

Example:

Review Default Sort Order

Configure the default order in which review rows are displayed. Note: Users can later sort the rows as they prefer.

The order is specified using a SCIM "order by" expression. The default value is source.type asc.

Valid values include:

  • source.ATTR

  • destination.ATTR

  • waypoint.ATTR

  • idp.ATTR

Where ATTR is an attribute name such as “id” or “name”.

Example

Expire Overdue Reviews

This setting is configurable on the Access Reviews > Settings page. Enable Auto-Expire overdue reviews to automatically expire reviews that aren't completed by the due date.

Enables or disable expiration of overdue reviews. By default, overdue reviews are not expired and remain available to reviewers. When expiration is enabled, the review will be “expired” when it becomes overdue. An expired review is read-only and is not shown to reviewers.

The value can be True or False.

Review Expiration Behavior

This setting is configurable on the Access Reviews > Settings page. Enable Reject incomplete rows to reject and sign off on undecided rows when a review expires.

This API allows you to change the behavior when a review expires (which can be enabled in Review Auto-Complete Settings). Depending on the behavior, incomplete rows can be auto-rejected when the review deadline passes.

Possible values are:

  • DO_NOTHING: No action is made on incomplete rows (default).

  • AUTO_REJECT_INCOMPLETE_RESULTS: Reject and sign-off any results that are incomplete when the review expires.

Review expiration behavior can be configured globally, or for all reviews for a single Review, specified by workflow_id in the request.

Get Review Expiration Behavior

Set Review Expiration Behavior

Data Source Acknowledgement Settings

By default, when a review is created, a user can optionally view the status of the data sources involved in the review. This API allows the behavior to change, requiring that the data source status is shown to the user and acknowledged during review creation.

Possible values are:

  • DATASOURCE_ACKNOWLEDGEMENT_UNKNOWN = 0

  • DATASOURCE_ACKNOWLEDGEMENT_NOT_SHOWN = 1

  • DATASOURCE_ACKNOWLEDGEMENT_REQUIRED = 2

Predefined Decision Notes

Configure predefined notes as menu options when reviewers approve or reject rows. This feature can be configured globally for all reviews or specifically for individual review configurations. When configured for a specific review configuration (using workflow_id), those settings override any global predefined notes.

The predefined notes appear as selectable options in the notes dialog when making decisions, suggesting standardized responses alongside free-form text entry.

Example request body:

The request body accepts:

  • reject_notes: Array of predefined note options shown when rejecting rows

  • accept_notes: Array of predefined note options shown when approving rows

  • workflow_id: (Optional) Specific review configuration ID to override global settings

Get Predefined Notes Settings

Retrieve the current predefined notes settings. Include the optional workflow_id query parameter to get settings for a specific review configuration.

Global Settings Request:

Configuration-Specific Request:

Example response:

Set Predefined Notes Settings

Update the predefined notes settings globally or for a specific review configuration.

Configuration-Specific Request:

object

object

object

object

object

object

object

object

array

object

Error message and status for Webhook integrations, pushed with

Array of

object

object

object

object

object

array

Must be the same user_type as configured for the . Typical values are OktaUser, CustomIDPUser, or AzureADUser.

The user_identity_property set when configuring the workflows IdP is used to validate a Workflow Reviewer's identity. For an Okta user, this would be an id such as 00upa6s0hSGtl1eGL5d5. For a Custom IdP user, this will typically be the IdP users set within the OAA payload.

string of most recent row

object

You can use to retrieve all valid workflow IDs.

Contains details for each certification (see ).

Requests require a for authentication.

Filters can also apply to abstract_permissions or concrete_permissions (see example response).

Method
Operation
syntax

Administrators can configure delegate reviewers for who would otherwise be assigned or auto-assigned to certification results. Specifying a delegate reviewer for another Veza user allows them to fulfill the responsibilities of that user — for example, if a manager is on leave, out-of-office, or otherwise unavailable.

The JSON payload contain pairs of original and delegate . You can use to get all the required details for reviewers assigned to a certification.

You can map both local Veza users and identities from an .

Note that this assumes the IdP setting are configured to use "idp_unique_id" to correlate identities, as in the Okta example .

A certification includes all source and destination node properties discovered or added by Veza. You can specify a SCIM filter to select the results to affect, for example:

Mutable field
Value
Method
syntax
Name
Type
Description
Req.
Method
syntax
Name
Type
Description
Req.
Method
syntax

These endpoints can be called by providing a Veza admin user API key. See to generate a bearer token for use in requests. Note that API operations in the private namespace are subject to change as features are added or modified.

Use these APIs to configure for Veza Access Reviews.

UpdateWebhookInfo
List Workflows
Veza API key
WorkflowUser
WorkflowUser
WorkflowUser
WorkflowUser
WorkflowUser
WorkflowUser
WorkflowUser
WorkflowUser
ActionLog
ResultNode
WorkflowUsers
WorkflowUser
ResultNode
WorkflowUser
ResultNode
WorkflowUser
notes
WorkflowUser
Reviewers
List Quick Filters

GET

List User Delegations

/api/preview/awf/delegation/users

POST

Add User Delegations

/api/preview/awf/delegation/users:add

POST

Remove User Delegations

/api/preview/awf/delegation/users:remove

curl -X POST 'https://{{VezaURL}}/api/preview/awf/delegation/users:add' \
-H 'authorization: Bearer '$TOKEN \
-d @configuration.json
{
  "values": [
    {
      "original_user": {
        "user_type": "localCookieUser",
        "id": "2cdfb6e9-6f20-4198-925c-a045a3d690a0",
        "email": "original_reviewer@veza.com",
        "name": "External User"
      },
      "delegate_user": {
        "user_type": "localCookieUser",
        "id": "b8678b1b-0f31-40e4-9842-47b272694354",
        "email": "delegate_reviewer@veza.com",
        "name": "External User"
      }
    }
  ]
}
{
  "values": [
    {
      "original_user": {
        "user_type": "OktaUser",
        "id": "00upa6s0hSGtl1eGL5d5",
        "email": "Abel_Maclead@veza.com",
        "name": "Abel_Maclead@veza.com"
      },
      "delegate_user": {
        "user_type": "OktaUser",
        "id": "00u6h8rl61RiosYzi5d7",
        "email": "adam_lee@veza.com",
        "name": "adam_lee@veza.com"
      }
    }
  ]
}
curl 'https://{{VezaURL}}/api/preview/awf/delegation/users' \
-H 'authorization: Bearer '$TOKEN
{
  "values": [
    {
      "original_user": {
        "user_type": "localCookieUser",
        "id": "2cdfb6e9-6f20-4198-925c-a045a3d690a0",
        "email": "original_reviewer@veza.com",
        "name": "Resource Manager"
      },
      "delegate_user": {
        "user_type": "localCookieUser",
        "id": "52c38da6-3b2e-44e9-9787-88ffa5ef398c",
        "email": "delegate_reviewer@veza.com",
        "name": "Backup Manager"
      }
    }
  ]
}
curl -X POST 'https://{{VezaURL}}/api/preview/awf/delegation/users:remove' \
-H 'authorization: Bearer '$TOKEN \
-d @configuration/to/remove.json
curl -X POST "https://{{veza_url}}/api/preview/awf/smart_action_definitions" \
-H 'authorization: Bearer {{access_token}}' \
-d '{
  "apply_to_all_rows": "false",
  "description": "Reject users where the user `is active` value is not `true`",
  "filter": "source.is_active ne \"true\"",
  "mutable_fields": {
    "decision": "RESULT_DECISION_REJECTED"
  },
  "mutable_filter": "",
  "name": "Reject inactive users",
  "workflow_id": ""
}'
{
  "apply_to_all_rows": "false",
  "description": "Sign off on all rejected rows",
  "filter": "",
  "mutable_fields": {
    "signed_off_state": "SIGNED_OFF"
  },
  "mutable_filter": "decision eq \"RESULT_DECISION_REJECTED\"",
  "name": "Sign off rejected rows",
  "workflow_id": ""
}

decision

One of: "RESULT_DECISION_UNKNOWN" "RESULT_DECISION_NONE" "RESULT_DECISION_ACCEPTED" "RESULT_DECISION_REJECTED" "RESULT_DECISION_FIXED"

notes

string

signed_off_state

One of: "UNKNOWN" "NOT_SIGNED_OFF" "SIGNED_OFF"

GET

/api/preview/awf/certifications/{certification_id}/reviewer_infos

certification_id

string

ID of a workflow certification

Y

curl 'https://{{VezaURL}}/api/preview/awf/certifications/abe5c346-84ad-49b0-bafc-614a8365c883/reviewer_infos' \
-H 'authorization: Bearer '$TOKEN
{
  "values": [
    {
      "reviewer": {
        "user_type": "localCookieUser",
        "id": "dcadfc95-29f5-4130-b715-5476d40a5811",
        "email": "reviewer@veza.com",
        "name": "Access Reviewer"
      },
      "row_stats": {
        "total": "1",
        "no_decision": "0",
        "accepted": "1",
        "rejected": "0",
        "fixed": "0",
        "signed_off": "1"
      }
    }
  ]
}

GET

/api/preview/awf/access_graph

certification_id

string

ID of a workflow certification

Y

result_id

int

Certification result number to get access for

Y

snapshot_id

string

Graph snapshot to get results from

N

curl 'https://{{VezaURL}}/api/preview/awf/access_graph' \
-H 'authorization: Bearer '$TOKEN \
-G -d 'certification_id=abe5c346-84ad-49b0-bafc-614a8365c883' \
-d 'result_id=1'
{
  "nodes": [
    {
      "properties": {
        "id": "arn:aws:iam::973979857296:role/FederatedS3",
        "name": "FederatedS3",
        "type": "AwsIamRole"
      },
      "out_edges": [
        {
          "destination_node_id": "arn:aws:iam::973979857296:role/FederatedS3::eperm::877042069677/S3Bucket/2ce2cbf45bcc5d748c800358d9932a251d670509"
        }
      ]
    },
    {
      "properties": {
        "id": "0bba9374-d4f5-4c77-93d2-7dfde581fa8a",
        "name": "Abel_Maclead",
        "type": "AzureADUser"
      },
      "out_edges": [
        {
          "destination_node_id": "arn:aws:iam::973979857296:role/FederatedS3"
        }
      ]
    },
    {
      "properties": {
        "id": "arn:aws:iam::973979857296:role/FederatedS3::eperm::877042069677/S3Bucket/2ce2cbf45bcc5d748c800358d9932a251d670509",
        "name": "Read",
        "type": "AwsIamEffectivePermission"
      },
      "out_edges": [
        {
          "destination_node_id": "arn:aws:s3:::cct-cct02-finance"
        }
      ]
    },
    {
      "properties": {
        "id": "arn:aws:s3:::cct-cct02-finance",
        "name": "cct-cct02-finance",
        "type": "S3Bucket"
      },
      "out_edges": []
    }
  ],
  "accumulated_effective_permissions": [
    "Read"
  ],
  "accumulated_raw_permissions": [
    "s3:GetObject"
  ],
  "datasource_infos": [
        {
            "datasource_id": "160e97cf-4b8a-4841-800b-49f8d6fa17ef",
            "external_id": "160e97cf-4b8a-4841-800b-49f8d6fa17ef",
            "name": "",
            "last_sync_time": "2022-09-12T22:15:34.874682421Z",
            "agent_type": "",
            "has_error": false,
            "is_deleted": false,
            "reason": "",
            "last_error_message": "",
            "has_warning": false
        },
        {
            "datasource_id": "",
            "external_id": "",
            "name": "",
            "last_sync_time": "2022-09-12T22:09:47.245436023Z",
            "agent_type": "",
            "has_error": false,
            "is_deleted": false,
            "reason": "",
            "last_error_message": "",
            "has_warning": false
        }
  ]
}

POST

/api/preview/awf/certifications/{certification_id}/results:update_webhook_info

{
  "result_id": "0",
  "notification_status": "FAILED",
  "webhook_info": "Ticket could not be created"
}
```bash
curl -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/cert_completion_settings' \
-H 'authorization: Bearer mZ1eqKMACtP...'
-d '{"value": "AUTO_COMPLETE_DISABLED"}
{
    "value": "COMPLETION_ALLOWED_ALL_ROWS_HAVE_DECISION"
}
{
    "value": "DATASOURCE_ACKNOWLEDGEMENT_NOT_SHOWN"
}
{
    "value": "SELF_REVIEWER_CHECKING_DISABLED"
}
{
    "value": {
        "diff_dropdown_behavior": "ALWAYS_HIDE_FOR_ACCESS_REVIEWER_ROLE",
        "accept_notes_behavior": "NO_POP_UP",
        "reject_notes_behavior": "POP_UP_REQUIRED",
        "approve_and_sign_off_button_behavior": "SHOW"
    }
}
{
  "value": {
    "default_ordered_columns": [
      "source.name",
      "source.department",
      "source.customprop_worker_status",
      "source.tags",
      "path_summary.name",
      "concrete_permissions",
      "destination.name",
      "destination.customprop_display_name",
      "reviewers"
    ]
  },
  "workflow_id": "002063d2-7898-4183-b5fb-1192758fdec7"
}
{
    "value": {
        "order_by": "destination.name desc"
    }
}
{
    "value": {
        "reject_notes": [
            "Rotate now",
            "Delete secret"
        ],
        "accept_notes": []
    },
    "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264"  // Optional
}
curl -L 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/predefined_decision_notes' \
-H 'Authorization: Bearer YOUR_API_KEY'
curl -L 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/predefined_decision_notes?workflow_id=8ae1c414-3a76-46cb-950a-925316b3f264' \
-H 'Authorization: Bearer YOUR_API_KEY'
{
    "value": {
        "reject_notes": [
            "Rotate now",u
            "Delete secret"
        ],
        "accept_notes": []
    }
}
curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/predefined_decision_notes' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
    "value": {
        "reject_notes": [
            "Rotate now",
            "Delete secret"
        ],
        "accept_notes": []
    },
    "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264"
}'
Authentication
workflow parameters
managers
integrated identity provider
result
global settings
List Reviewer Infos
Workflow Users
Add smart action definition
Mutable fields and mutable filters
Remove a smart action definition
List smart action definitions
Update a smart action definition
Global Workflows IdP
primary workflows Identity Provider
here
identity

Manage Reviewer Deny List

Prevent auto assignment for specific users

View or change the deny list for reviewer auto assignment.

Adding a user to the deny list will prevent that user from being auto assigned as a reviewer. That user will also be prevented from appearing in the drop-down menu when manually reassigning a user.

If a user's manager is on the deny list when auto assignment occurs, the certification will be assigned to the that manager's manager. If both the manager and the manager's manger are on the deny list, the result will be assigned to the workflow creator.

Get Deny List

Returns the current denied users.

Method
syntax

get

/api/preview/workflows/deny_list/users

Example response:

{
  "users": [
    {
      "user_type": "OktaUser",
      "id": "123456",
      "email": "mhines@cookie.ai",
      "name": "Marilyn Hines"
    }
  ]
}

Add User

Note: To get the user_type for a Veza system user, as well as the user_id, email, and name, view network traffic in the browser while while searching for the user in a reviewer selection drop-down.

Method
syntax

post

/api/preview/workflows/deny_list/users:add

Example body:

{
  "users": [
    {
      "user_type": "OktaUser",
      "id": "123456",
      "email": "mhines@cookie.ai",
      "name": "Marilyn Hines"
    }
  ]
}

Remove User

Delete an entry on the deny list.

Method
syntax

post

/api/preview/workflows/deny_list/users:remove

Example body:

{
  "users": [
    {
      "user_type": "OktaUser",
      "id": "123456",
      "email": "mhines@cookie.ai",
      "name": "Marilyn Hines"
    }
  ]
}

Get Certification Result

Return a single certification result

Returns result details by id, including any special properties, decisions, and notes.

Method
syntax

GET

/api/preview/awf/certifications/{certification_id}/results/{result_id}

Parameters

Name
Type
Req.
Description

certification_id

string

Y

Certification id

result_id

string

Y

Result number to retrieve

Examples

Request

curl '{{VEZA_URL}}/api/preview/awf/certifications/f9123002-978f-f203bc9885ed/results/0' \
  -H 'authorization: Bearer '$token

Response

{
    "value": {
        "result_id": 0,
        "source": {
            "aliases": [],
            "created_at": "2023-05-03T14:25:43Z",
            "datasource_id": "datasource:google_cloud_workspace",
            "email_addresses": [
                "jdoe@cookiebeta.ai",
                "jdoe@cookiebeta.ai.test-google-a.com",
                "jdoe@veza.com"
            ],
            "full_admin": false,
            "google_cloud_organization_name": "organizations/123456789012",
            "guest": false,
            "id": "datasource:112655590859538682841",
            "idp_unique_id": "jdoe@cookiebeta.ai",
            "is_active": true,
            "last_login_at": "2023-05-10T15:25:04Z",
            "location_areas": [],
            "mfa_enabled": false,
            "name": "jdoe@cookiebeta.ai",
            "organization_names": [],
            "provider_id": "datasource",
            "suspended": false,
            "type": "GoogleWorkspaceUser"
        },
        "destination": {
            "created_at": "2021-11-01T14:23:35Z",
            "datasource_id": "datasource:google_cloud_iam",
            "google_cloud_organization_name": "organizations/123456789012",
            "id": "projects/743979515322",
            "name": "Dev GCP Project",
            "parent_id": "organizations/123456789012",
            "project_id": "striped-graph-330814",
            "provider_id": "datasource",
            "type": "GoogleCloudProject",
            "updated_at": "2022-04-07T22:08:48Z"
        },
        "accumulated_effective_permissions": [],
        "accumulated_raw_permissions": [
            "bigquery.datasets.get",
            "bigquery.datasets.getIamPolicy",
            "bigquery.tables.get",
            "bigquery.tables.getIamPolicy",
            "bigquery.tables.list",
            "iam.roles.get",
            "iam.roles.list",
            "iam.serviceAccounts.create",
            "iam.serviceAccounts.list",
            "resourcemanager.folders.create",
            "resourcemanager.folders.delete",
            "resourcemanager.folders.get",
            "resourcemanager.folders.getIamPolicy",
            "resourcemanager.folders.list",
            "resourcemanager.folders.move",
            "resourcemanager.folders.setIamPolicy",
            "resourcemanager.folders.undelete",
            "resourcemanager.organizations.get",
            "resourcemanager.organizations.getIamPolicy",
            "resourcemanager.organizations.setIamPolicy",
            "resourcemanager.projects.create",
            "resourcemanager.projects.delete",
            "resourcemanager.projects.get",
            "resourcemanager.projects.getIamPolicy",
            "resourcemanager.projects.list",
            "resourcemanager.projects.move",
            "resourcemanager.projects.setIamPolicy",
            "resourcemanager.projects.update",
            "storage.buckets.create",
            "storage.buckets.createTagBinding",
            "storage.buckets.delete",
            "storage.buckets.deleteTagBinding",
            "storage.buckets.get",
            "storage.buckets.getIamPolicy",
            "storage.buckets.list",
            "storage.buckets.listTagBindings",
            "storage.buckets.setIamPolicy",
            "storage.buckets.update"
        ],
        "updated_at": null,
        "updated_by": null,
        "signed_off_at": null,
        "signed_off_by": null,
        "notification_response_infos": [],
        "notification_status": "UNKNOWN",
        "waypoint": {
            "id": "organizations/123456789012_policy_role_binding0",
            "name": "CookieAIDevServicePrincipalRole",
            "type": "GoogleCloudIamRoleBinding"
        },
        "action_log_entries": [],
        "decision": "NONE",
        "notes": "",
        "reviewers": [
            {
                "user_type": "localCookieUser",
                "id": "e3ac5e6a-1946-4688-82a7-8a607133a1c8",
                "email": "cookie@cookie.ai",
                "name": "External User"
            }
        ],
        "signed_off_state": "NOT_SIGNED_OFF",
        "reviewer_assignment": null
    }
}

Add a user, either a or an identity from a .

For more information about the Result object see .

Veza system user
configured graph Identity Provider
Workflows Parameters

Automations API

Get, create, update, delete, and attach Intelligent Automations.

Use these operations to manage Access Review Automations and associate them with individual workflows.

Automations apply changes (such as approve, sign-off, add a note, or apply visual indicators) to Certification rows based on historical certification data, or a filter on the current results. They can run by default or on an opt-in basis when a certification is created.

Example Automations

{
  "id": "e48dd2c8-3633-463b-a477-0177a942b5a6",
  "name": "Highlight inactive sources",
  "description": "Highlight rows where the source account is inactive",
  "priority": 0,
  "attachment_behavior": {
    "attach_to_new_workflows": true,
    "opt_in": true
  },
  "criteria": {
    "filter": "source.is_active eq false",
    "mutable_filter": ""
  },
  "action": {
    "display_style": "HIGHLIGHT",
    "display_text": "Source account is inactive"
  }
}
{
  "id": "f59ee3d9-4744-574c-b588-1288b0942c7c",
  "name": "Reject privileged account access",
  "description": "Suggest reject for admin or root accounts",
  "priority": 0,
  "attachment_behavior": {
    "attach_to_new_workflows": true,
    "opt_in": true
  },
  "criteria": {
    "filter": "(destination.name eq \"admin\") OR (source.name eq \"root\")",
    "mutable_filter": ""
  },
  "action": {
    "display_style": "SUGGEST_REJECT",
    "display_text": "Privileged account detected - review carefully"
  }
}

You will need an API token with root team or administrator permissions to manage Automations.

Error handling and conflicts

The following rules apply when an Automation run encounters an issue:

  • If Automation processing fails for any result, the Automation run stops and no further Automations are applied.

  • When Automations fail, the Certification is still considered complete and non-errored. The Automation run will have an error status and message.

Results are considered the same when the entities and relationships are exactly equal (including data source IDs). If a conflict occurs with Automations trying to change the same mutable field:

  • Each change must update the field to the same value. The action log entry will contain notes (if supplied) for each action.

  • Automations changing a field to differing values are unresolvable conflicts and skipped, but will not interrupt the Automation run.

Automation Object Schema

An Automation consists of attachment_behavior rules, filter criteria, and an action to apply:

{
  "id": "string",
  "name": "string",
  "description": "string",
  "priority": 0,
  "attachment_behavior": {
    "attach_to_new_workflows": boolean,
    "opt_in": boolean
  },
  "criteria": {
    "filter": "string",
    "mutable_filter": "string"
  },
  "action": {
    // For modification actions:
    "decision": "string",
    "signed_off_state": "string",
    "notes": "string",
    "reviewer_assignment": null,

    // OR for display actions:
    "display_style": "string",
    "display_text": "string"
  }
}

Each Automation object has the fields:

  • id (String): Unique identifier for the Automation.

  • name (String): Name of the Automation.

  • description (String): A brief description of the Automation.

  • priority (Integer): Priority value of the Automation (not currently supported).

attachment_behavior (Object)

Defines if the Automation is available for all workflows, and whether it is optional:

  • attach_to_new_workflows (Boolean): Indicates whether to automatically attach to new and existing workflows.

  • opt_in (Boolean): If true Operators can pick the automation when creating a Workflow. If false the automation is enabled by default.

criteria (Object)

Specifies filters for conditionally updating results:

  • filter (String): A SCIM filter specifying a source or destination attribute with support for complex expressions using AND, OR, and parentheses for grouping. Examples:

    • Simple filter: source.is_active eq false

    • Complex filter: (source.name sw "A" OR source.name sw "B") AND destination.is_active eq true

  • mutable_filter (String): A filter on a previous result mutable field using the syntax previous.attribute. Example: "previous.decision eq "RESULT_DECISION_ACCEPTED""

Similarly to Smart Actions, Automations can update results based on a source or destination attribute (such as activity status). Filters use the syntax source.attribute or destination.attribute.

Mutable filters in Automations use the syntax previous.decision, previous.notes and previous.signed_off_state to refer to historical row data. The possible values are:

  • decision:

    • "RESULT_DECISION_UNKNOWN"

    • "RESULT_DECISION_NONE"

    • "RESULT_DECISION_ACCEPTED"

    • "RESULT_DECISION_REJECTED"

    • "RESULT_DECISION_FIXED"

  • notes: string

  • signed_off_state:

    • "UNKNOWN"

    • "NOT_SIGNED_OFF"

    • "SIGNED_OFF"

action (Object)

Action the Automation will apply to matching results:

  • decision (String): Decision code for the action.

  • signed_off_state (String): Sign off state code.

  • notes (String): Notes the automation will apply.

  • display_style (String): Visual indicator to apply to matching rows:

    • HIGHLIGHT: Highlight the row

    • SUGGEST_ACCEPT: Mark the row as suggested for acceptance

    • SUGGEST_REJECT: Mark the row as suggested for rejection

  • display_text (String): Custom message to show when display_style is set

Note: When using display_style actions, you cannot set decision, signed_off_state, notes, or reviewer_assignment fields.

Possible decisions and numeric codes are:

  • UNKNOWN (0)

  • NONE (1)

  • ACCEPTED (2)

  • REJECTED (3)

  • FIXED (4)

Signed Off State can be:

  • UNKNOWN_SIGNED_OFF = 0;

  • NOT_SIGNED_OFF = 1;

  • SIGNED_OFF = 2;

reviewer_assignment (Object)

The preview API does not currently support Reviewer assignment.

Preview API Documentation

Use the endpoints documented below to create and manage automations:

List Automations

  • Endpoint: /api/preview/awf/automations

  • Method: GET

  • Description: Returns all Automations and configuration details.

Update Automation

  • Endpoint: /api/preview/awf/automations

  • Method: PUT

  • Description: Updates an existing Automation. The full Automation object is required.

Create Automation

  • Endpoint: /api/preview/awf/automations

  • Method: POST

  • Description: Creates a new Automation.

Get Automation

  • Endpoint: /api/preview/awf/automations/{id}

  • Method: GET

  • Description: Get details for a single Automation by ID.

Delete Automation

  • Endpoint: /api/preview/awf/automations/{id}

  • Method: DELETE

  • Description: Deletes a specific Automation by its ID.

Attach Automations

  • Endpoint: /api/preview/awf/automations:attach

  • Method: POST

  • Description: Enable an Automation for a specific workflow, or all workflows.

Attach one or all Automations to a single workflow by specifying the:

  • id (String): Single Automation ID.

  • workflow_id (String): ID of the workflow to associate Automations with.

  • all (boolean): If True, attaches all existing Automations to the Workflow.

  • opt_in (boolean): If False the Automation can be selected when creating a certification. Otherwise, operators can enable it when creating certifications.

List attached Workflow Automations

  • Endpoint: /api/preview/awf/automations:attached/{workflow_id}

  • Method: GET

  • Description: Returns all Automations eligible to run on Certifications for a given Workflow id.

Detach Automations

  • Endpoint: /api/preview/awf/automations:detach

  • Method: POST

  • Description: Detach one or all Automations from an Access Review Workflow.

Help Page Templates

Manage custom help pages for Veza Access Reviews.

Use these operations to add and manage help pages for access reviewers, and customize pop-up messages when a review starts, or when rows are signed off.

Create help page

Add custom help messages for reviewers by providing the plain text template_body, name, and an existing workflow_id and usage where the template will apply. All reviews (certifications) for the configuration (workflow) will use the new template.

Template usage

The usage field determines how and when the help page will be visible to users. It must be one of the following values:

  • HELP_PAGE: Reviewers can access help pages from reviewer's interface by clicking the User Guide icon. The help page will also appear when viewing the review for the first time.

  • REVIEW_START: Opens when reviewers start a review.

  • SIGN_OFF: Opens whenever a row or multiple rows are signed off by a reviewer.

Only one help page can exist at a time for a given workflow and usage. You can manage global help pages by using 00000000-0000-0000-0000-000000000000 as the workflow_id. Global help pages for each usage will apply to all reviews for all configurations.

Template formatting

The template can use markdown and placeholders, for example:

Example request:

List help pages

Get all configured help page templates.

Example response:

Get help page

Returns the current help page template for an existing workflow_id and usage.

  • The usage parameter must be specified. For the existing help page template, the usage value should be HELP_PAGE.

  • To retrieve the tenant-wide default template (if it was set), use an all-zero UUID (00000000-0000-0000-0000-000000000000) for the workflow_id.

Example request:

Get review help page

Returns the current template for a given certification id.

Example request:

Example response:

Delete help page

Permanently remove the help page template for a workflow_id and usage. It will no longer apply to reviews for using the configuration, specified by workflow_id.

  • The usage parameter must be specified. For the existing help page template, the usage value should be HELP_PAGE.

  • To clear the tenant-wide default template, use an all-zero UUID for the workflow_id: 00000000-0000-0000-0000-000000000000.

Example request:

Update help page

PUT {{veza_url}}/api/preview/awf/help_page_templates

Update the help page for the specified workflow_id and usage:

  • To add a tenant-wide default template, use an all-zero UUID for the workflow_id: 00000000-0000-0000-0000-000000000000.

  • Updating a template now uses a plain text template_body, instead of a base64-encoded string.

Example request:

For more information about this feature see .

Returns all in a values array.

Operation
Method
Syntax

See for more information about placeholders.

Intelligent Automations
Automations
# Help for {{WORKFLOW_NAME}}

## Formatting

Formatting text in Markdown:

- *Italic text*
- **Bold text**
- `Code block`
- [Link text](https://example.com)

## Bullet Lists

Bullet lists in Markdown:

- Item 1
- Item 2
- Item 3

## Numbered Lists

Numbered lists in Markdown:

1. First item
2. Second item
3. Third item

## Placeholders

The following placeholders are available:

- {{WORKFLOW_NAME}}
- {{WORKFLOW_URL}}
- {{WORKFLOW_TIME}}
- {{WORKFLOW_OWNER}}
- {{WORKFLOW_DESCRIPTION}}
- {{WORKFLOW_CERT_STARTED_ON_DATE}}
- {{WORKFLOW_CERT_STARTED_ON_TIME}}
- {{WORKFLOW_CERT_CREATED_BY}}
- {{WORKFLOW_CERT_LAST_UPDATED_ON_DATE}}
- {{WORKFLOW_CERT_LAST_UPDATED_ON_TIME}}
- {{WORKFLOW_CERT_LAST_UPDATED_BY}}
- {{WORKFLOW_CERT_COMPLETED_ON_DATE}}
- {{WORKFLOW_CERT_COMPLETED_ON_TIME}}
- {{WORKFLOW_CERT_COMPLETED_BY}}
- {{WORKFLOW_CERT_LAST_ACTIVITY_ON_DATE}}
- {{WORKFLOW_CERT_LAST_ACTIVITY_ON_TIME}}
- {{WORKFLOW_CERT_LAST_ACTIVITY_BY}}
- {{WORKFLOW_CERT_DUE_ON_DATE}}
- {{WORKFLOW_CERT_REVIEWERS}}
POST {{veza_url}}/api/preview/awf/help_page_templates
{
  "value": {
    "workflow_id": "bc2b2daa-3508-4c0c-a0f2-8a2fb0ef59d9",
    "name": "Review Help",
    "template_body": "# {{WORKFLOW_NAME}} Review Guide\n\nWelcome to the {{WORKFLOW_NAME}} review process. Please follow the steps below:\n\n## Review Steps\n\n",
    "usage": "HELP_PAGE"
  }
}
GET {{veza_url}}/api/preview/awf/help_page_templates
{
    "values": [
        {
            "workflow_id": "8c1772da-a7c3-4dc7-8b09-b900af011ee5",
            "name": "Review Start Popup",
            "usage": "REVIEW_START"
        }
    ]
}
GET {{veza_url}}/api/preview/awf/help_page_templates/{{workflow_id}}/{{usage}}
GET {{veza_url}}/api/preview/awf/certification_help_page?certification_id={{cert_id}}
{
    "content": "# Help for Reviewers\n\n## Instructions:\n\n"
}
DELETE {{veza_url}}/api/preview/awf/help_page_templates/{{workflow_id}}/{{usage}}
{
  "value": {
    "name": "Global Sign Off Confirmation",
    "template_body": "string",
    "workflow_id": "00000000-0000-0000-0000-000000000000",
    "usage": "SIGN_OFF"
  }
}
Notification Templates

POST

{veza_url}/api/preview/awf/help_page_templates

GET

{veza_url}/api/preview/awf/help_page_templates

GET

{veza_url}/api/preview/awf/help_page_templates/{workflow_id}/{usage}

GET

{veza_url}/api/preview/awf/certification_help_page?certification_id={cert_id}

DELETE

{veza_url}/api/preview/awf/help_page_templates/{workflow_id}/{usage}

PUT

{veza_url}/api/preview/awf/help_page_templates

Create Help Page
List Help Pages
Get Help Page
Get Review Help Page
Delete help page
Update workflow help page
46KB
access-reviews-global-settings.postman_collection.json
3KB
Help_Page_Templates_postman_collection.json
delete
Authorizations
Path parameters
idstringRequired
Responses
200
A successful response.
application/json
Responseobject
401
Authorization information is missing or invalid.
403
Returned when the user does not have permission to access the resource.
application/json
404
Returned when the resource does not exist.
500
Server error
502
Returned when the service is temporarily unavailable.
503
Returned when the resource is temporarily unavailable.
delete
DELETE /api/preview/awf/smart_action_definitions/{id} HTTP/1.1
Host: 
Bearer: YOUR_API_KEY
Accept: */*
{}
get
Authorizations
Query parameters
workflow_idstringOptional

If no value is passed for workflow_id, all smart actions will be returned. If workflow_id is not "", smart actions with a matching workflow_id or with an empty workflow_id will be returned.

Responses
200
A successful response.
application/json
401
Authorization information is missing or invalid.
403
Returned when the user does not have permission to access the resource.
application/json
404
Returned when the resource does not exist.
500
Server error
502
Returned when the service is temporarily unavailable.
503
Returned when the resource is temporarily unavailable.
get
GET /api/preview/awf/smart_action_definitions HTTP/1.1
Host: 
Bearer: YOUR_API_KEY
Accept: */*
{
  "values": [
    {
      "id": "text",
      "description": "text",
      "name": "text",
      "workflow_id": "text",
      "filter": "text",
      "mutable_fields": {
        "decision": "RESULT_DECISION_UNKNOWN",
        "notes": "text",
        "updated_at": "2025-05-09T12:22:39.036Z",
        "updated_by": {
          "user_type": "text",
          "id": "text",
          "email": "text",
          "name": "text"
        },
        "notification_infos": {
          "values": [
            {
              "notification_type": "WEBHOOK",
              "webhook_type": "GENERIC",
              "status": "UNKNOWN",
              "error_message": "text",
              "updated_at": "2025-05-09T12:22:39.036Z",
              "snow_info": {
                "ticket_number": "text",
                "sys_id": "text"
              },
              "webhook_info": {
                "info": "text"
              }
            }
          ]
        },
        "notification_status": "UNKNOWN",
        "reviewers": [
          {
            "user_type": "text",
            "id": "text",
            "email": "text",
            "name": "text"
          }
        ],
        "signed_off_state": "UNKNOWN",
        "signed_off_at": "2025-05-09T12:22:39.036Z",
        "signed_off_by": {
          "user_type": "text",
          "id": "text",
          "email": "text",
          "name": "text"
        },
        "action_log": {
          "entries": [
            {
              "action": "UNKNOWN",
              "user": {
                "user_type": "text",
                "id": "text",
                "email": "text",
                "name": "text"
              },
              "time": "2025-05-09T12:22:39.036Z",
              "note": "text",
              "reviewer_detail": {
                "old_reviewers": [
                  {
                    "user_type": "text",
                    "id": "text",
                    "email": "text",
                    "name": "text"
                  }
                ],
                "new_reviewers": [
                  {
                    "user_type": "text",
                    "id": "text",
                    "email": "text",
                    "name": "text"
                  }
                ]
              },
              "decision_detail": {
                "decision": "RESULT_DECISION_UNKNOWN",
                "note": "text"
              }
            }
          ]
        },
        "reviewer_assignment": {
          "users_manager": true,
          "resource_managers": true,
          "reviewers": [
            {
              "user_type": "text",
              "id": "text",
              "email": "text",
              "name": "text"
            }
          ],
          "fallback_reviewers": [
            {
              "user_type": "text",
              "id": "text",
              "email": "text",
              "name": "text"
            }
          ]
        },
        "automation_run_ids": [
          "text"
        ]
      },
      "mutable_filter": "text",
      "apply_to_all_rows": true
    }
  ]
}
post
Authorizations
Body
namestringOptional
descriptionstringOptional
workflow_idstringOptional
filterstringOptional
mutable_filterstringOptional
apply_to_all_rowsbooleanOptional
Responses
200
A successful response.
application/json
401
Authorization information is missing or invalid.
403
Returned when the user does not have permission to access the resource.
application/json
404
Returned when the resource does not exist.
500
Server error
502
Returned when the service is temporarily unavailable.
503
Returned when the resource is temporarily unavailable.
post
POST /api/preview/awf/smart_action_definitions HTTP/1.1
Host: 
Bearer: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 1500

{
  "name": "text",
  "description": "text",
  "workflow_id": "text",
  "filter": "text",
  "mutable_fields": {
    "decision": "RESULT_DECISION_UNKNOWN",
    "notes": "text",
    "updated_at": "2025-05-09T12:22:39.036Z",
    "updated_by": {
      "user_type": "text",
      "id": "text",
      "email": "text",
      "name": "text"
    },
    "notification_infos": {
      "values": [
        {
          "notification_type": "WEBHOOK",
          "webhook_type": "GENERIC",
          "status": "UNKNOWN",
          "error_message": "text",
          "updated_at": "2025-05-09T12:22:39.036Z",
          "snow_info": {
            "ticket_number": "text",
            "sys_id": "text"
          },
          "webhook_info": {
            "info": "text"
          }
        }
      ]
    },
    "notification_status": "UNKNOWN",
    "reviewers": [
      {
        "user_type": "text",
        "id": "text",
        "email": "text",
        "name": "text"
      }
    ],
    "signed_off_state": "UNKNOWN",
    "signed_off_at": "2025-05-09T12:22:39.036Z",
    "signed_off_by": {
      "user_type": "text",
      "id": "text",
      "email": "text",
      "name": "text"
    },
    "action_log": {
      "entries": [
        {
          "action": "UNKNOWN",
          "user": {
            "user_type": "text",
            "id": "text",
            "email": "text",
            "name": "text"
          },
          "time": "2025-05-09T12:22:39.036Z",
          "note": "text",
          "reviewer_detail": {
            "old_reviewers": [
              {
                "user_type": "text",
                "id": "text",
                "email": "text",
                "name": "text"
              }
            ],
            "new_reviewers": [
              {
                "user_type": "text",
                "id": "text",
                "email": "text",
                "name": "text"
              }
            ]
          },
          "decision_detail": {
            "decision": "RESULT_DECISION_UNKNOWN",
            "note": "text"
          }
        }
      ]
    },
    "reviewer_assignment": {
      "users_manager": true,
      "resource_managers": true,
      "reviewers": [
        {
          "user_type": "text",
          "id": "text",
          "email": "text",
          "name": "text"
        }
      ],
      "fallback_reviewers": [
        {
          "user_type": "text",
          "id": "text",
          "email": "text",
          "name": "text"
        }
      ]
    },
    "automation_run_ids": [
      "text"
    ]
  },
  "mutable_filter": "text",
  "apply_to_all_rows": true
}
{
  "id": "text"
}
put
Authorizations
Body
Responses
200
A successful response.
application/json
Responseobject
401
Authorization information is missing or invalid.
403
Returned when the user does not have permission to access the resource.
application/json
404
Returned when the resource does not exist.
500
Server error
502
Returned when the service is temporarily unavailable.
503
Returned when the resource is temporarily unavailable.
put
PUT /api/preview/awf/smart_action_definitions HTTP/1.1
Host: 
Bearer: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 1522

{
  "value": {
    "id": "text",
    "description": "text",
    "name": "text",
    "workflow_id": "text",
    "filter": "text",
    "mutable_fields": {
      "decision": "RESULT_DECISION_UNKNOWN",
      "notes": "text",
      "updated_at": "2025-05-09T12:22:39.036Z",
      "updated_by": {
        "user_type": "text",
        "id": "text",
        "email": "text",
        "name": "text"
      },
      "notification_infos": {
        "values": [
          {
            "notification_type": "WEBHOOK",
            "webhook_type": "GENERIC",
            "status": "UNKNOWN",
            "error_message": "text",
            "updated_at": "2025-05-09T12:22:39.036Z",
            "snow_info": {
              "ticket_number": "text",
              "sys_id": "text"
            },
            "webhook_info": {
              "info": "text"
            }
          }
        ]
      },
      "notification_status": "UNKNOWN",
      "reviewers": [
        {
          "user_type": "text",
          "id": "text",
          "email": "text",
          "name": "text"
        }
      ],
      "signed_off_state": "UNKNOWN",
      "signed_off_at": "2025-05-09T12:22:39.036Z",
      "signed_off_by": {
        "user_type": "text",
        "id": "text",
        "email": "text",
        "name": "text"
      },
      "action_log": {
        "entries": [
          {
            "action": "UNKNOWN",
            "user": {
              "user_type": "text",
              "id": "text",
              "email": "text",
              "name": "text"
            },
            "time": "2025-05-09T12:22:39.036Z",
            "note": "text",
            "reviewer_detail": {
              "old_reviewers": [
                {
                  "user_type": "text",
                  "id": "text",
                  "email": "text",
                  "name": "text"
                }
              ],
              "new_reviewers": [
                {
                  "user_type": "text",
                  "id": "text",
                  "email": "text",
                  "name": "text"
                }
              ]
            },
            "decision_detail": {
              "decision": "RESULT_DECISION_UNKNOWN",
              "note": "text"
            }
          }
        ]
      },
      "reviewer_assignment": {
        "users_manager": true,
        "resource_managers": true,
        "reviewers": [
          {
            "user_type": "text",
            "id": "text",
            "email": "text",
            "name": "text"
          }
        ],
        "fallback_reviewers": [
          {
            "user_type": "text",
            "id": "text",
            "email": "text",
            "name": "text"
          }
        ]
      },
      "automation_run_ids": [
        "text"
      ]
    },
    "mutable_filter": "text",
    "apply_to_all_rows": true
  }
}
{}
get
Authorizations
Responses
200
OK
application/json
default
Default error response
application/json
get
GET /api/preview/awf/automations HTTP/1.1
Host: 
Authorization: Bearer Bearer <API key>
Accept: */*
{
  "values": [
    {
      "id": "text",
      "name": "text",
      "description": "text",
      "priority": 1,
      "attachment_behavior": {
        "attach_to_new_workflows": true,
        "opt_in": true
      },
      "criteria": {
        "filter": "text",
        "mutable_filter": "text"
      },
      "action": {
        "decision": 1,
        "signed_off_state": 1,
        "notes": "text",
        "reviewer_assignment": {
          "users_manager": true,
          "resource_managers": true,
          "reviewers": [
            {
              "user_type": "text",
              "id": "text",
              "email": "text",
              "name": "text"
            }
          ],
          "fallback_reviewers": [
            {
              "user_type": "text",
              "id": "text",
              "email": "text",
              "name": "text"
            }
          ],
          "reviewers_managers_for_approval_levels": [
            1
          ]
        },
        "display_style": 1,
        "display_text": "text"
      }
    }
  ]
}
get
Authorizations
Path parameters
idstringRequired
Responses
200
OK
application/json
default
Default error response
application/json
get
GET /api/preview/awf/automations/{id} HTTP/1.1
Host: 
Authorization: Bearer Bearer <API key>
Accept: */*
{
  "value": {
    "id": "text",
    "name": "text",
    "description": "text",
    "priority": 1,
    "attachment_behavior": {
      "attach_to_new_workflows": true,
      "opt_in": true
    },
    "criteria": {
      "filter": "text",
      "mutable_filter": "text"
    },
    "action": {
      "decision": 1,
      "signed_off_state": 1,
      "notes": "text",
      "reviewer_assignment": {
        "users_manager": true,
        "resource_managers": true,
        "reviewers": [
          {
            "user_type": "text",
            "id": "text",
            "email": "text",
            "name": "text"
          }
        ],
        "fallback_reviewers": [
          {
            "user_type": "text",
            "id": "text",
            "email": "text",
            "name": "text"
          }
        ],
        "reviewers_managers_for_approval_levels": [
          1
        ]
      },
      "display_style": 1,
      "display_text": "text"
    }
  }
}
delete
Authorizations
Path parameters
idstringRequired
Responses
200
OK
application/json
Responseobject
default
Default error response
application/json
delete
DELETE /api/preview/awf/automations/{id} HTTP/1.1
Host: 
Authorization: Bearer Bearer <API key>
Accept: */*
{}
get
Authorizations
Path parameters
workflow_idstringRequired
Responses
200
OK
application/json
default
Default error response
application/json
get
GET /api/preview/awf/automations:attached/{workflow_id} HTTP/1.1
Host: 
Authorization: Bearer Bearer <API key>
Accept: */*
{
  "values": [
    {
      "automation": {
        "id": "text",
        "name": "text",
        "description": "text",
        "priority": 1,
        "attachment_behavior": {
          "attach_to_new_workflows": true,
          "opt_in": true
        },
        "criteria": {
          "filter": "text",
          "mutable_filter": "text"
        },
        "action": {
          "decision": 1,
          "signed_off_state": 1,
          "notes": "text",
          "reviewer_assignment": {
            "users_manager": true,
            "resource_managers": true,
            "reviewers": [
              {
                "user_type": "text",
                "id": "text",
                "email": "text",
                "name": "text"
              }
            ],
            "fallback_reviewers": [
              {
                "user_type": "text",
                "id": "text",
                "email": "text",
                "name": "text"
              }
            ],
            "reviewers_managers_for_approval_levels": [
              1
            ]
          },
          "display_style": 1,
          "display_text": "text"
        }
      },
      "opt_in": true
    }
  ]
}

Get Completion Allowed Settings

get
Authorizations
Header parameters
AcceptstringOptionalExample: application/json
Responses
200
OK
application/json
Responseobject
get
GET /api/private/workflows/access/global_settings/cert_completion_settings HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

OK

{
  "value": "COMPLETION_ALLOWED_ALL_ROWS_HAVE_DECISION"
}

Get Auto-Complete Settings

get
Authorizations
Header parameters
AcceptstringOptionalExample: application/json
Responses
200
OK
application/json
Responseobject
get
GET /api/private/workflows/access/global_settings/cert_auto_complete_settings HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

OK

{
  "value": "AUTO_COMPLETE_DISABLED"
}

Get Self-Reviewer Settings

get
Authorizations
Header parameters
AcceptstringOptionalExample: application/json
Responses
200
OK
application/json
Responseobject
get
GET /api/private/workflows/access/global_settings/self_reviewer_settings HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

OK

{
  "value": "SELF_REVIEWER_CHECKING_DISABLED"
}

Get Review Customization Settings

get
Authorizations
Header parameters
AcceptstringOptionalExample: application/json
Responses
200
OK
application/json
Responseobject
get
GET /api/private/workflows/access/global_settings/ui_customization_settings HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

OK

{
  "value": {
    "diff_dropdown_behavior": "ALWAYS_HIDE_FOR_ACCESS_REVIEWER_ROLE",
    "accept_notes_behavior": "NO_POP_UP",
    "reject_notes_behavior": "POP_UP_REQUIRED",
    "approve_and_sign_off_button_behavior": "SHOW"
  }
}

Get Review Columns

get
Authorizations
Header parameters
AcceptstringOptionalExample: application/json
Responses
200
OK
application/json
Responseobject
get
GET /api/private/workflows/access/global_settings/ui_column_settings HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

OK

{
  "value": {
    "default_ordered_columns": [
      "source.name",
      "source.identity_unique_id",
      "concrete_permissions",
      "idp.on_premises_distinguished_name",
      "idp.name",
      "destination.name",
      "destination.type",
      "reviewers",
      "notes",
      "decision_by",
      "decision_at",
      "notification_status",
      "automation_run_ids"
    ]
  }
}

Get All Column Customizations

get
Authorizations
Header parameters
AcceptstringOptionalExample: application/json
Responses
200
OK
application/json
Responseobject
500
Internal Server Error
application/json
get
GET /api/private/workflows/access/global_settings/ui_column_settings:list_all HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "global_settings": {
    "default_ordered_columns": [
      "source.name",
      "source.identity_unique_id",
      "concrete_permissions",
      "idp.on_premises_distinguished_name",
      "idp.name",
      "destination.name",
      "destination.type",
      "reviewers",
      "notes",
      "decision_by",
      "decision_at",
      "notification_status",
      "automation_run_ids"
    ]
  },
  "workflow_settings": [
    {
      "workflow_id": "002063d2-7898-4183-b5fb-1192758fdec7",
      "settings": {
        "default_ordered_columns": [
          "source.name",
          "source.department",
          "source.customprop_worker_status",
          "source.tags",
          "path_summary.name",
          "concrete_permissions",
          "destination.name",
          "destination.type",
          "destination.customprop_display_name",
          "reviewers",
          "notes"
        ]
      }
    },
    {
      "workflow_id": "84459ad9-3976-4f21-9d56-fa9c0694a8a7",
      "settings": {
        "default_ordered_columns": [
          "source.aws_userid",
          "source.name",
          "source.identity_unique_id",
          "concrete_permissions",
          "destination.name",
          "destination.type",
          "reviewers",
          "notes",
          "decision_by",
          "decision_at",
          "notification_status",
          "automation_run_ids"
        ]
      }
    }
  ]
}

Get Review Sort Settings

get
Authorizations
Header parameters
AcceptstringOptionalExample: application/json
Responses
200
OK
application/json
Responseobject
get
GET /api/private/workflows/access/global_settings/view_sort_settings HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

OK

{
  "value": {
    "order_by": "source.type asc"
  }
}

Get Expire Overdue Certifications Setting

get
Authorizations
Header parameters
AcceptstringOptionalExample: application/json
Responses
200
OK
application/json
Responseobject
get
GET /api/private/workflows/access/global_settings/expire_overdue_certifications HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

OK

{
  "value": false
}

Get Review Expiration Settings

get
Authorizations
Query parameters
workflow_idstringOptionalExample: <string>
Header parameters
AcceptstringOptionalExample: application/json
Responses
200
OK
application/json
Responseobject
get
GET /api/private/workflows/access/global_settings/review_expiration_behavior HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

OK

{
  "value": "DO_NOTHING"
}

Get Data Source Acknowledgement Settings

get
Authorizations
Header parameters
AcceptstringOptionalExample: application/json
Responses
200
OK
application/json
Responseobject
get
GET /api/private/workflows/access/global_settings/datasource_acknowledgement HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

OK

{
  "value": "DATASOURCE_ACKNOWLEDGEMENT_REQUIRED"
}
put
Authorizations
Body
Responses
200
OK
application/json
Responseobject
default
Default error response
application/json
put
PUT /api/preview/awf/automations HTTP/1.1
Host: 
Authorization: Bearer Bearer <API key>
Content-Type: application/json
Accept: */*
Content-Length: 569

{
  "value": {
    "id": "text",
    "name": "text",
    "description": "text",
    "priority": 1,
    "attachment_behavior": {
      "attach_to_new_workflows": true,
      "opt_in": true
    },
    "criteria": {
      "filter": "text",
      "mutable_filter": "text"
    },
    "action": {
      "decision": 1,
      "signed_off_state": 1,
      "notes": "text",
      "reviewer_assignment": {
        "users_manager": true,
        "resource_managers": true,
        "reviewers": [
          {
            "user_type": "text",
            "id": "text",
            "email": "text",
            "name": "text"
          }
        ],
        "fallback_reviewers": [
          {
            "user_type": "text",
            "id": "text",
            "email": "text",
            "name": "text"
          }
        ],
        "reviewers_managers_for_approval_levels": [
          1
        ]
      },
      "display_style": 1,
      "display_text": "text"
    }
  }
}
{}
post
Authorizations
Body
namestringOptional
descriptionstringOptional
priorityinteger · int32Optional
Responses
200
OK
application/json
default
Default error response
application/json
post
POST /api/preview/awf/automations HTTP/1.1
Host: 
Authorization: Bearer Bearer <API key>
Content-Type: application/json
Accept: */*
Content-Length: 547

{
  "name": "text",
  "description": "text",
  "priority": 1,
  "attachment_behavior": {
    "attach_to_new_workflows": true,
    "opt_in": true
  },
  "criteria": {
    "filter": "text",
    "mutable_filter": "text"
  },
  "action": {
    "decision": 1,
    "signed_off_state": 1,
    "notes": "text",
    "reviewer_assignment": {
      "users_manager": true,
      "resource_managers": true,
      "reviewers": [
        {
          "user_type": "text",
          "id": "text",
          "email": "text",
          "name": "text"
        }
      ],
      "fallback_reviewers": [
        {
          "user_type": "text",
          "id": "text",
          "email": "text",
          "name": "text"
        }
      ],
      "reviewers_managers_for_approval_levels": [
        1
      ]
    },
    "display_style": 1,
    "display_text": "text"
  }
}
{
  "id": "text"
}
post
Authorizations
Body

Attaches an automation to one or all workflows Attach will succeeds if the automation is already attached and will update the "opt_in" if necessary

idstringOptional
workflow_idstringOptional
allbooleanOptional
opt_inbooleanOptional
Responses
200
OK
application/json
Responseobject
default
Default error response
application/json
post
POST /api/preview/awf/automations:attach HTTP/1.1
Host: 
Authorization: Bearer Bearer <API key>
Content-Type: application/json
Accept: */*
Content-Length: 59

{
  "id": "text",
  "workflow_id": "text",
  "all": true,
  "opt_in": true
}
{}
post
Authorizations
Body

Detaches an automation from one or all workflows

idstringOptional
workflow_idstringOptional
allbooleanOptional
Responses
200
OK
application/json
Responseobject
default
Default error response
application/json
post
POST /api/preview/awf/automations:detach HTTP/1.1
Host: 
Authorization: Bearer Bearer <API key>
Content-Type: application/json
Accept: */*
Content-Length: 45

{
  "id": "text",
  "workflow_id": "text",
  "all": true
}
{}

Set Certification Completion Allowed Settings

put
Authorizations
Header parameters
Content-TypestringOptionalExample: application/json
AcceptstringOptionalExample: application/json
Body
objectOptionalExample: {"value":"<integer>"}
Responses
200
OK
application/json
Responseobject
put
PUT /api/private/workflows/access/global_settings/cert_completion_settings HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 21

{
  "value": "<integer>"
}
200

OK

{
  "value": "COMPLETION_ALLOWED_ALL_ROWS_HAVE_DECISION"
}

Set Auto-Complete Settings

put
Authorizations
Header parameters
Content-TypestringOptionalExample: application/json
AcceptstringOptionalExample: application/json
Body
objectOptionalExample: {"value":"<integer>"}
Responses
200
OK
application/json
Responseobject
put
PUT /api/private/workflows/access/global_settings/cert_auto_complete_settings HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 21

{
  "value": "<integer>"
}
200

OK

{
  "value": "AUTO_COMPLETE_DISABLED"
}

Set Self-Reviewer Settings

put
Authorizations
Header parameters
Content-TypestringOptionalExample: application/json
AcceptstringOptionalExample: application/json
Body
objectOptionalExample: {"value":"<integer>"}
Responses
200
OK
application/json
Responseobject
put
PUT /api/private/workflows/access/global_settings/self_reviewer_settings HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 21

{
  "value": "<integer>"
}
200

OK

{
  "value": "SELF_REVIEWER_CHECKING_DISABLED"
}

Set Review Customization Settings

put
Authorizations
Header parameters
Content-TypestringOptionalExample: application/json
AcceptstringOptionalExample: application/json
Body
objectOptionalExample: {"value":{"diff_dropdown_behavior":"<integer>","accept_notes_behavior":"<integer>","reject_notes_behavior":"<integer>","approve_and_sign_off_button_behavior":"<integer>"}}
Responses
200
OK
application/json
Responseobject
put
PUT /api/private/workflows/access/global_settings/ui_customization_settings HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 171

{
  "value": {
    "diff_dropdown_behavior": "<integer>",
    "accept_notes_behavior": "<integer>",
    "reject_notes_behavior": "<integer>",
    "approve_and_sign_off_button_behavior": "<integer>"
  }
}
200

OK

{
  "value": {
    "diff_dropdown_behavior": "ALWAYS_HIDE_FOR_ACCESS_REVIEWER_ROLE",
    "accept_notes_behavior": "NO_POP_UP",
    "reject_notes_behavior": "POP_UP_REQUIRED",
    "approve_and_sign_off_button_behavior": "SHOW"
  }
}

Set Review Columns

put
Authorizations
Header parameters
Content-TypestringOptionalExample: application/json
AcceptstringOptionalExample: application/json
Body
objectOptionalExample: {"value":{"default_ordered_columns":["source.name","source.identity_unique_id","concrete_permissions","idp.on_premises_distinguished_name","idp.name","destination.name","destination.type","reviewers","notes","decision_by","decision_at","notification_status","automation_run_ids"]}}
Responses
200
OK
application/json
Responseobject
put
PUT /api/private/workflows/access/global_settings/ui_column_settings HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 281

{
  "value": {
    "default_ordered_columns": [
      "source.name",
      "source.identity_unique_id",
      "concrete_permissions",
      "idp.on_premises_distinguished_name",
      "idp.name",
      "destination.name",
      "destination.type",
      "reviewers",
      "notes",
      "decision_by",
      "decision_at",
      "notification_status",
      "automation_run_ids"
    ]
  }
}
200

OK

{
  "value": {
    "default_ordered_columns": [
      "source.name",
      "source.identity_unique_id",
      "concrete_permissions",
      "idp.on_premises_distinguished_name",
      "idp.name",
      "destination.name",
      "destination.type",
      "reviewers",
      "notes",
      "decision_by",
      "decision_at",
      "notification_status",
      "automation_run_ids"
    ]
  }
}

Set Review Sort Settings

put
Authorizations
Header parameters
Content-TypestringOptionalExample: application/json
AcceptstringOptionalExample: application/json
Body
objectOptionalExample: {"value":{"order_by":"<string>"}}
Responses
200
OK
application/json
Responseobject
put
PUT /api/private/workflows/access/global_settings/view_sort_settings HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 33

{
  "value": {
    "order_by": "<string>"
  }
}
200

OK

{
  "value": {
    "order_by": "source.type asc"
  }
}

Set Expire Overdue Certifications Setting

put
Authorizations
Header parameters
Content-TypestringOptionalExample: application/json
AcceptstringOptionalExample: application/json
Body
objectOptionalExample: {"value":"<boolean>"}
Responses
200
OK
application/json
Responseobject
put
PUT /api/private/workflows/access/global_settings/expire_overdue_certifications HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 21

{
  "value": "<boolean>"
}
200

OK

{
  "value": false
}

Set Review Expiration Settings

put
Authorizations
Header parameters
Content-TypestringOptionalExample: application/json
AcceptstringOptionalExample: application/json
Body
objectOptionalExample: {"value":"<integer>","workflow_id":"<string>"}
Responses
200
OK
application/json
Responseobject
put
PUT /api/private/workflows/access/global_settings/review_expiration_behavior HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 46

{
  "value": "<integer>",
  "workflow_id": "<string>"
}
200

OK

{
  "value": "AUTO_REJECT_INCOMPLETE_RESULTS"
}

Set Data Source Acknowledgement Settings

put
Authorizations
Header parameters
Content-TypestringOptionalExample: application/json
AcceptstringOptionalExample: application/json
Body
objectOptionalExample: {"value":"<integer>"}
Responses
200
OK
application/json
Responseobject
put
PUT /api/private/workflows/access/global_settings/datasource_acknowledgement HTTP/1.1
Host: {{baseurl}}
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 21

{
  "value": "<integer>"
}
200

OK

{
  "value": "DATASOURCE_ACKNOWLEDGEMENT_REQUIRED"
}