arrow-left

All pages
gitbookPowered by GitBook
1 of 39

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

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.

hashtag
Get Deny List

Returns the current denied users.

Method
syntax

Example response:

hashtag
Add User

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

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

Example body:

hashtag
Remove User

Delete an entry on the deny list.

Method
syntax

Example body:

Review Auto-Complete Settings

Enable or disable automatic review completion once all rows have decisions.

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."

hashtag
Parameters

Possible values are:

  • AUTO_COMPLETE_UNKNOWN

  • AUTO_COMPLETE_ENABLED

  • AUTO_COMPLETE_DISABLED

hashtag
Example

hashtag
Get Review Auto-Complete Settings

hashtag
Set Review Auto-Complete Settings

get

/api/preview/workflows/deny_list/users

post

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

post

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

Veza system user
configured graph Identity Provider
{
  "users": [
    {
      "user_type": "OktaUser",
      "id": "123456",
      "email": "[email protected]",
      "name": "Marilyn Hines"
    }
  ]
}
{
  "users": [
    {
      "user_type": "OktaUser",
      "id": "123456",
      "email": "[email protected]",
      "name": "Marilyn Hines"
    }
  ]
}
{
  "users": [
    {
      "user_type": "OktaUser",
      "id": "123456",
      "email": "[email protected]",
      "name": "Marilyn Hines"
    }
  ]
}

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.

Method
syntax

POST

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

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

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

A :

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

  • On an expired or completed certification, during the grace period, the following updates are allowed for admin, Access Reviews Admin, and operator roles:

    • Mark a rejected row as Fixed

hashtag
Parameters

Field
In
Value

hashtag
Sample Request

hashtag
Sample Response

A successful response will be empty:

{
    "value": "AUTO_COMPLETE_DISABLED"
}
Update row notes
  • Update webhook notification status and details (see Update Webhook Info)

  • body

    Numeric result id to update (min 0)

    decision

    body

    Result decision(NONE, REJECTED, ACCEPTED, FIXED)

    notes

    body

    string of most recent row

    reviewers

    body

    object

    signed_off_state

    body

    Sign-off status (NOT_SIGNED_OFF, SIGNED_OFF)

    notification_status

    body

    Integration status (UNKNOWN, PENDING, SUCCEED, FAILED)

    certification_id

    path

    ID of the certification containing the result to alter

    value

    body

    Contains a single certification result and keys to update

    admin
    standard update request

    result_id

    Delegate Reviewers

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

    Method
    Operation
    syntax

    GET

    List User Delegations

    /api/preview/awf/delegation/users

    POST

    Add User Delegations

    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.

    • 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.

    hashtag
    Examples

    hashtag
    Add user delegations

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

    Add delegation for Veza system users:

    A successful response will be empty.

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

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

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

    hashtag
    List user delegations

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

    hashtag
    Remove user delegations

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

    A successful response will be empty.

    Review Sort Order

    Set default sort order for review rows.

    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.

    hashtag
    Valid Values

    Valid values include:

    • source.ATTR

    • destination.ATTR

    • waypoint.ATTR

    • idp.ATTR

    Where ATTR is an attribute name such as "id" or "name".

    hashtag
    Example

    hashtag
    Get Review Sort Order

    hashtag
    Set Review Sort Order

    Review UI Customizations

    Customize notes behavior and UI elements for reviewers.

    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.

    hashtag
    Parameters

    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"}}'
    {}
    notes
    WorkflowUser

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

    POST

    Remove User Delegations

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

    managers
    Workflow Users
    List Reviewer Infos
    integrated identity provider
    here
    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": "[email protected]",
            "name": "External User"
          },
          "delegate_user": {
            "user_type": "localCookieUser",
            "id": "b8678b1b-0f31-40e4-9842-47b272694354",
            "email": "[email protected]",
            "name": "External User"
          }
        }
      ]
    }
    {
      "values": [
        {
          "original_user": {
            "user_type": "OktaUser",
            "id": "00upa6s0hSGtl1eGL5d5",
            "email": "[email protected]",
            "name": "[email protected]"
          },
          "delegate_user": {
            "user_type": "OktaUser",
            "id": "00u6h8rl61RiosYzi5d7",
            "email": "[email protected]",
            "name": "[email protected]"
          }
        }
      ]
    }
    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": "[email protected]",
            "name": "Resource Manager"
          },
          "delegate_user": {
            "user_type": "localCookieUser",
            "id": "52c38da6-3b2e-44e9-9787-88ffa5ef398c",
            "email": "[email protected]",
            "name": "Backup Manager"
          }
        }
      ]
    }
    curl -X POST 'https://{{VezaURL}}/api/preview/awf/delegation/users:remove' \
    -H 'authorization: Bearer '$TOKEN \
    -d @configuration/to/remove.json
    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

    diff_dropdown_behavior can be:

    • NORMAL = 1 (Enables all users to see decisions and access changes from previous reviews for the same configuration)

    • ALWAYS_HIDE_FOR_ACCESS_REVIEWER_ROLE = 2 (Prevents users with the "Access Reviewer" role from accessing this option)

    hashtag
    Example

    hashtag
    Get Review UI Customizations

    hashtag
    Set Review UI Customizations

    List Reviewer Infos

    Get all reviewers and details by certification

    Method
    syntax

    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).

    Review Expiration Behavior

    Configure what happens when reviews expire.

    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.

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

    {
        "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": {
            "order_by": "destination.name desc"
        }
    }
    hashtag
    Parameters
    Name
    Type
    Description
    Req.

    certification_id

    string

    ID of a workflow certification

    Y

    hashtag
    Examples

    hashtag
    Request

    hashtag
    Response

    A successful response returns AccessReviewerInfo objects within a values array:

    GET

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

    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": "[email protected]",
            "name": "Access Reviewer"
          },
          "row_stats": {
            "total": "1",
            "no_decision": "0",
            "accepted": "1",
            "rejected": "0",
            "fixed": "0",
            "signed_off": "1"
          }
        }
      ]
    }
    hashtag
    Request Structure

    The request body must include a setting object with the following structure:

    hashtag
    Parameters

    Where:

    • workflow_id (string, optional): Specific review configuration ID. If omitted, applies globally to all reviews.

    • setting.behavior (integer): The expiration behavior mode:

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

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

    • setting.note_to_add (string, optional): Note to be added when auto-rejecting incomplete results

    hashtag
    Example

    Example request:

    hashtag
    Get Review Expiration Behavior

    hashtag
    Set Review Expiration Behavior

    Alternate Reviewer Settings

    Configure the fallback reviewer selection methods used when a valid reviewer cannot be assigned.

    circle-exclamation

    Early Access Feature: The Alternate Reviewer Settings API endpoint is currently in Early Access as part of the private API namespace. The endpoint is subject to change as features are added or modified.

    Configure the ordered list of fallback selection methods that Veza uses when a valid reviewer cannot be assigned. When all specified reviewers are prevented from assignment (due to self-review prevention, the reviewer deny list, or missing managers/owners), Veza evaluates each selection method in order until an allowed alternate reviewer is found.

    For more information, see Reviewer Selection Methods.

    hashtag
    Parameters

    The selection_methods array accepts integer or string values representing fallback methods to enable. Enabled methods are evaluated in the specified order.

    Integer
    String Value
    Description

    hashtag
    Example request body (PUT)

    This enables all four fallback methods in order: reviewer's manager, then fallback reviewers, then workflow creator, then admin.

    For example, to enable only the first two methods:

    With this configuration, Veza will not fall back to the workflow creator or a system administrator. Rows are left unassigned if no valid manager or fallback reviewer exists.

    hashtag
    Get Alternate Reviewer Settings

    Retrieve current alternate reviewer selection method settings:

    Example response:

    hashtag
    Set Alternate Reviewer Settings

    Update the alternate reviewer selection methods. The order of values in the selection_methods array determines the evaluation order.

    Using integer values:

    Column Name Overrides

    Customize column display names in the access review interface.

    Use column name overrides to customize the display names of columns in the reviewer interface. For example, you can rename source.department to "Business Unit" or destination.name to "Application" to better match your organization's terminology.

    Overrides can be configured globally (applying to all reviews) or scoped to a specific review configuration by providing a workflow_id. Workflow-specific overrides take precedence over global overrides.

    circle-info

    Allowed roles: admin, access_reviews_admin, operator

    hashtag
    Parameters

    Name
    Type
    Required
    In
    Description

    hashtag
    Get Column Name Overrides

    GET /api/private/workflows/access/global_settings/column_name_overrides

    hashtag
    Get Global Overrides

    hashtag
    Get Workflow-Scoped Overrides

    hashtag
    Example Response

    hashtag
    Set Column Name Overrides

    PATCH /api/private/workflows/access/global_settings/column_name_overrides

    hashtag
    Example: Set Global Overrides

    hashtag
    Example: Set Workflow-Scoped Overrides

    hashtag
    Response

    hashtag
    Clear Column Name Overrides

    DELETE /api/private/workflows/access/global_settings/column_name_overrides

    Remove column name overrides. Optionally specify field_names to clear specific overrides, or omit to clear all overrides for the given scope.

    hashtag
    Clear All Global Overrides

    hashtag
    Clear Specific Overrides

    hashtag
    Response

    circle-info

    Column name overrides affect the display names shown in the reviewer interface. The underlying field names used in API requests, filters, and column configuration remain unchanged. When configured for a specific review configuration (using workflow_id), those overrides take precedence over any global overrides for reviews created from that configuration.

    Access Review Settings

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

    circle-exclamation

    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.

    The settings that can be configured by a Veza administrator are:

    {
      "workflow_id": "string",
      "setting": {
        "behavior": 0,
        "note_to_add": "string"
      }
    }
    {
      "workflow_id": "string",
      "setting": {
        "behavior": 1,
        "note_to_add": "Rejected incomplete result due to review expiration."
      }
    }

    object

    Yes

    body

    A map of field_name to display_name pairs. Each key is a column field name and each value is the custom display name to show in the reviewer interface.

    workflow_id

    string

    No

    body/query

    The review configuration ID to scope the overrides to. If omitted, overrides apply globally.

    column_name_overrides

    curl 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/column_name_overrides' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer YOUR_BEARER_TOKEN'
    curl 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/column_name_overrides?workflow_id=8ae1c414-3a76-46cb-950a-925316b3f264' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer YOUR_BEARER_TOKEN'
    {
      "column_name_overrides": {
        "source.department": "Business Unit",
        "destination.name": "Application",
        "concrete_permissions": "Access Level"
      }
    }
    curl -X PATCH 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/column_name_overrides' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer YOUR_BEARER_TOKEN' \
        -d '{
          "column_name_overrides": {
            "source.department": "Business Unit",
            "destination.name": "Application",
            "concrete_permissions": "Access Level"
          }
        }'
    curl -X PATCH 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/column_name_overrides' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer YOUR_BEARER_TOKEN' \
        -d '{
          "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264",
          "column_name_overrides": {
            "source.department": "Business Unit",
            "destination.name": "Application"
          }
        }'
    {}
    curl -X DELETE 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/column_name_overrides' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer YOUR_BEARER_TOKEN'
    curl -X DELETE 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/column_name_overrides?workflow_id=8ae1c414-3a76-46cb-950a-925316b3f264&field_names=source.department&field_names=destination.name' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer YOUR_BEARER_TOKEN'
    {}

    WORKFLOW_CREATOR

    Assign to the workflow creator

    4

    ADMIN

    Assign to an arbitrary local Veza admin user

    1

    REVIEWERS_MANAGER

    Assign the manager of the prevented candidate

    2

    CERTIFICATION_ALTERNATE_REVIEWERS

    Assign to the first valid fallback reviewer

    3

    Review Auto-Complete Settings: Automatically complete reviews once all rows have a signed-off decision, or a non-rejected signed-off decision.

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

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

  • Expire Overdue Reviews: 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.

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

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

  • Review 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.

  • Review Row Grouping: Configure default grouping behavior for review rows to organize data by column values.

  • Outlier Detection: Configure outlier detection to identify anomalous access patterns by comparing users to peer groups (Early Access, API-only).

  • Reviewer Export Settings: Control whether reviewers can export review data to CSV or PDF formats.

  • Reviewer Bulk Actions Settings: Control which bulk actions (approve, reject, sign off, clear decisions, add note, reassign) are available to reviewers.

  • Mandatory Due Date Settings: Configure whether due dates are required when creating or editing access reviews.

  • Column Name Overrides: Customize column display names in the reviewer interface to match your organization's terminology.

  • Alternate Reviewer Settings: Configure the fallback reviewer selection methods used when a valid reviewer cannot be assigned (Early Access).

  • Action Allow List: Restrict which users can delete in-progress reviews or modify their due dates, independent of their Veza role.

  • 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 (see Authentication) in your request, for example:

    hashtag
    Postman Collection

    Use the Postman collection as an alternative to cURL commands for testing and configuring Veza Access Reviews global settings:

    hashtag
    Import Instructions

    To import the collection into Postman:

    1. Open Postman and click Import in the sidebar

    2. In the Import modal, click Choose Files

    3. Select the access-reviews-global-settings.postman_collection.json file

    4. Click Import to complete the process

    5. The collection appears in your Collections tab

    1. Download the collection file to your computer

    2. Drag and drop the .json file directly into the Postman interface

    3. The collection is automatically imported and appears in your Collections tab

    hashtag
    Configure Variables

    Before using the collection, configure these required variables on the Variables tab:

    Variable
    Description
    Example

    baseUrl

    Your Veza instance URL

    https://your-organization.vezacloud.com

    apiToken

    Veza admin user API key

    mZ1eqKMACtP...

    The collection uses Bearer token authentication. Your apiToken variable automatically populates the Authorization header for all requests.

    circle-exclamation

    Important: Use HTTPS (not HTTP) for your baseUrl to avoid redirect issues that can drop request bodies in PUT/POST operations.

    Authentication
    Access Reviews Settings
    file-download
    53KB
    access-reviews-global-settings.postman_collection.json
    arrow-up-right-from-squareOpen
    {
      "value": {
        "selection_methods": ["REVIEWERS_MANAGER", "CERTIFICATION_ALTERNATE_REVIEWERS", "WORKFLOW_CREATOR", "ADMIN"]
      }
    }
    {
      "value": {
        "selection_methods": [1, 2]
      }
    }
    curl -L 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/alternate_reviewer_settings' \
    -H 'Authorization: Bearer YOUR_API_KEY'
    {
      "value": {
        "selection_methods": [
          "REVIEWERS_MANAGER",
          "CERTIFICATION_ALTERNATE_REVIEWERS",
          "WORKFLOW_CREATOR",
          "ADMIN"
        ]
      }
    }
    curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/alternate_reviewer_settings' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -d '{
      "value": {
        "selection_methods": [1, 2, 3, 4]
      }
    }'
    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"}'

    Workflow ID

    Specific review configuration ID (optional)

    8ae1c414-3a76-46cb-950a-925316b3f264

    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.

    Operation
    Method
    Syntax

    POST

    {veza_url}/api/preview/awf/help_page_templates

    hashtag
    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.

    hashtag
    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

    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.

    hashtag
    Template formatting

    The template can use markdown and placeholders, for example:

    See for more information about placeholders.

    Example request:

    hashtag
    List help pages

    Get all configured help page templates.

    Example response:

    hashtag
    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:

    hashtag
    Get review help page

    Returns the current template for a given certification id.

    Example request:

    Example response:

    hashtag
    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:

    hashtag
    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:

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

    List Help Pages

    GET

    {veza_url}/api/preview/awf/help_page_templates

    Get Help Page

    GET

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

    Get Review Help Page

    GET

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

    Delete help page

    DELETE

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

    Update workflow help page

    PUT

    {veza_url}/api/preview/awf/help_page_templates

    file-download
    3KB
    Help_Page_Templates_postman_collection.json
    arrow-up-right-from-squareOpen
    notification-templates
    Create Help Page
    # 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"
      }
    }

    Create Certification

    Create a new access review certification from a workflow

    Create a new access review certification from an existing workflow.

    hashtag
    Overview

    Use dynamic_information to filter certification results to specific identities at creation time. This enables you to use a broad query at the workflow level, and then scope individual reviews to certain identities when creating the certification.

    Identity IDs and types are sourced from the Veza Authorization Graph and must match existing graph node values from your integrated identity providers.

    hashtag
    Endpoint

    POST /api/preview/awf/certifications

    hashtag
    Request Body

    Field
    Type
    Required
    Description

    hashtag
    Dynamic Information

    The dynamic_information parameter allows you to filter certification results to specific user identities at creation time.

    Field
    Type
    Required
    Description

    hashtag
    Identity Object

    Field
    Type
    Required
    Description

    hashtag
    Reviewer Assignment

    The reviewer_assignment and reviewer_assignment_second_level objects configure how reviewers are assigned to certification rows.

    Field
    Type
    Description

    hashtag
    Response

    hashtag
    Examples

    hashtag
    Basic Certification

    Create a certification using the latest data:

    hashtag
    Dynamic Filtering (Joiner/Mover/Leaver)

    Use dynamic_information to scope a certification to specific identities. For mover scenarios, include previous_manager_id:

    hashtag
    Multi-Level Review

    Create a certification with multi-level approval requirements:

    hashtag
    Identity Types

    Use the graph node type that corresponds to your integrated IdP:

    Integration
    Identity Type

    Identity IDs and types must match the values stored in the Veza Authorization Graph. You can find these values by querying the graph or viewing entity details in the Veza UI.

    hashtag
    See Also

    • - Get workflow IDs

    • - View created certifications

    • - Complete parameter reference

    Expire Overdue Reviews

    Auto-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.

    hashtag
    Parameters

    Data source type: 0 (current), 1 (most recent snapshot), 2 (specified snapshot)

    snapshot_id

    integer

    Conditional

    Required when data_source is 2

    name

    string

    No

    Name for the certification

    notes

    string

    No

    Additional notes or context

    reviewer_assignment

    object

    No

    First-level reviewer assignment configuration

    reviewer_assignment_second_level

    object

    No

    Second-level reviewer assignment configuration

    automation_ids

    array

    No

    IDs of automations to run during creation

    final_approval_level

    integer

    No

    Final approval level required

    dynamic_information

    object

    No

    Dynamic identity filtering (see below)

    The identity type (e.g., "OktaUser", "AzureADUser")

    previous_manager_id

    string

    No

    Previous manager ID for mover scenarios

    array

    List of specific users to always assign

    fallback_reviewers

    array

    Users to assign when auto-assignment cannot determine a reviewer

    workflow_id

    string

    Yes

    The ID of the workflow to create a certification from

    data_source

    integer

    identities

    array

    Yes

    List of identity objects to filter by

    id

    string

    Yes

    The identity ID from Veza Graph (e.g., IdP user ID)

    type

    string

    users_manager

    boolean

    Assign the user's manager as reviewer

    resource_managers

    boolean

    Assign resource owners as reviewers

    Okta

    OktaUser

    Azure AD

    AzureADUser

    Active Directory

    ActiveDirectoryUser

    Google Workspace

    List Workflows
    List Certifications
    Workflow Parameters

    No

    Yes

    reviewers

    GoogleWorkspaceUser

    {
      "certification_id": "b2562ef3-a4b3-4b30-8a45-1ba36f945d10"
    }
    curl -X POST "$VEZA_URL/api/preview/awf/certifications" \
      -H "authorization: Bearer $VEZA_TOKEN" \
      -H "content-type: application/json" \
      -d '{
        "workflow_id": "b9dc2586-5f30-4462-b6be-53f62debc40f",
        "name": "Q4 2025 Access Review",
        "data_source": 0
      }'
    curl -X POST "$VEZA_URL/api/preview/awf/certifications" \
      -H "authorization: Bearer $VEZA_TOKEN" \
      -H "content-type: application/json" \
      -d '{
        "workflow_id": "b9dc2586-5f30-4462-b6be-53f62debc40f",
        "name": "Department Transfer Review",
        "data_source": 0,
        "dynamic_information": {
          "identities": [
            {
              "id": "00u1a2b3c4d5e6f7g8h9",
              "type": "OktaUser",
              "previous_manager_id": "00umgr123456789"
            }
          ]
        }
      }'
    curl -X POST "$VEZA_URL/api/preview/awf/certifications" \
      -H "authorization: Bearer $VEZA_TOKEN" \
      -H "content-type: application/json" \
      -d '{
        "workflow_id": "b9dc2586-5f30-4462-b6be-53f62debc40f",
        "name": "High-Risk Access Review",
        "data_source": 0,
        "reviewer_assignment": {
          "resource_managers": true
        },
        "reviewer_assignment_second_level": {
          "users_manager": true
        },
        "final_approval_level": 2
      }'
    The value can be True or False.

    hashtag
    Get Expire Overdue Reviews Setting

    hashtag
    Set Expire Overdue Reviews Setting

    Reviewer Export Settings

    Control export permissions for reviewers.

    Control whether reviewers can view and export access review data. This setting provides granular control over different export formats, allowing administrators to enable or disable CSV and PDF exports independently based on organizational security policies.

    When enabled, reviewers can export review data in the allowed formats for offline analysis or reporting. When disabled, the corresponding export options are hidden from the reviewer interface, ensuring review data remains within the Veza platform.

    The default setting disables both CSV and PDF exports for security. This setting can be configured globally for all reviews or for specific review configurations using the workflow_id parameter.

    hashtag

    Parameters

    The request body accepts:

    • allow_csv_exports (boolean) - Enable or disable CSV export functionality for reviewers

    • allow_pdf_exports (boolean) - Enable or disable PDF export functionality for reviewers

    • workflow_id (optional string) - Specific review configuration ID to override global settings

    hashtag
    Example

    Example request body:

    hashtag
    Get Reviewer Export Settings

    Retrieve the current reviewer export permission settings. Include the optional workflow_id query parameter to get settings for a specific review configuration.

    Global Settings Request:

    Configuration-Specific Request:

    Example response:

    hashtag
    Set Reviewer Export Settings

    Update the reviewer export permission settings globally or for a specific review configuration.

    Global Settings Request:

    Configuration-Specific Request:

    Example response:

    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

    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.

    This endpoint can also be called during the 7-day grace period after a certification completes or expires. Calls during the grace period require the admin, Access Reviews Admin, or operator role.

    Method
    syntax
    get
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    put
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Body
    selection_methodsinteger · enum[]Optional
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    chevron-right
    default

    Default error response

    application/json
    {
      "value": {
        "allow_csv_exports": true,
        "allow_pdf_exports": false
      },
      "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264"  // Optional
    }
    curl -L 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/allow_reviewer_exports' \
    -H 'Authorization: Bearer YOUR_API_KEY'
    curl -L 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/allow_reviewer_exports?workflow_id=8ae1c414-3a76-46cb-950a-925316b3f264' \
    -H 'Authorization: Bearer YOUR_API_KEY'
    {
      "value": {
        "allow_csv_exports": false,
        "allow_pdf_exports": false
      }
    }
    curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/allow_reviewer_exports' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -d '{
      "value": {
        "allow_csv_exports": true,
        "allow_pdf_exports": false
      }
    }'
    curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/allow_reviewer_exports' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -d '{
      "value": {
        "allow_csv_exports": true,
        "allow_pdf_exports": false
      },
      "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264"
    }'
    {}
    Requests require a Veza API key for authentication.

    hashtag
    Examples

    hashtag
    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.

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

    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:

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

    hashtag
    List all quick filters

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

    Example response:

    hashtag
    Remove quick filter by quick filter id

    GET, POST, DELETE

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

    POST

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

    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 {}

    {
      "result_id": "0",
      "notification_status": "FAILED",
      "webhook_info": "Ticket could not be created"
    }
    POST {Veza URL}/api/preview/awf/quick_filters
    {
        "name": "custom filter",
        "filter": "source.type co \"admin\"",
        "workflow_id": "ad78350a-bfe5-4eff-a160-dccbe28c6961"
    }
    {
        "id": "41761624-cb9c-4668-be69-3b0f359a45e3"
    }
    GET {Veza URL}/api/preview/awf/quick_filters
    GET {Veza URL}/api/preview/awf/quick_filters?workflow_id=78be0b3d-d6f4-4e5d-98c4-7b1db1a88575
    {
        "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\""
            }
        ]
    }
    DELETE {Veza URL}/api/preview/awf/quick_filters/d31cfa3f-1999-4789-8ec1-a844c03dd622
    Responses
    chevron-right
    200

    OK

    application/json
    selection_methodsinteger · enum[]Optional
    chevron-right
    default

    Default error response

    application/json
    get
    /api/private/workflows/access/global_settings/alternate_reviewer_settings
    put
    /api/private/workflows/access/global_settings/alternate_reviewer_settings
    get
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Query parameters
    workflow_idstringOptional
    Responses
    chevron-right
    200

    OK

    application/json
    allow_csv_exportsbooleanOptional
    allow_pdf_exportsbooleanOptional
    allow_xlsx_exportsbooleanOptional
    workflow_idstringOptional
    chevron-right
    default

    Default error response

    application/json
    get
    /api/private/workflows/access/global_settings/allow_reviewer_exports
    put
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Body
    allow_csv_exportsbooleanOptional
    allow_pdf_exportsbooleanOptional
    allow_xlsx_exportsbooleanOptional
    workflow_idstringOptional
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    chevron-right
    default

    Default error response

    application/json
    put
    /api/private/workflows/access/global_settings/allow_reviewer_exports

    Mandatory Due Date Settings

    Configure whether due dates are required when creating or editing access reviews.

    Configure whether due dates are required when creating or editing access reviews. When enabled, review creators must specify a due date before creating a review.

    This setting can be configured globally or per-workflow. When a workflow-specific setting is applied, it overrides the global setting for reviews created from that Review Configuration.

    hashtag
    Parameters

    The setting accepts an object with boolean fields for each review level:

    Field
    Type
    Description

    hashtag
    Examples

    Enable mandatory due dates for first-level reviews only:

    Enable mandatory due dates for all review levels:

    Example cURL request (global setting):

    Example cURL request (workflow-specific setting):

    hashtag
    Get Mandatory Due Date Settings

    hashtag
    Set Mandatory Due Date Settings

    Data Source Acknowledgement

    Require data source status acknowledgement during review creation.

    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.

    hashtag
    Parameters

    Possible values are:

    • DATASOURCE_ACKNOWLEDGEMENT_UNKNOWN = 0

    • DATASOURCE_ACKNOWLEDGEMENT_NOT_SHOWN = 1

    • DATASOURCE_ACKNOWLEDGEMENT_REQUIRED = 2

    hashtag
    Get Data Source Acknowledgement Setting

    hashtag
    Set Data Source Acknowledgement Setting

    Review Completion Settings

    Customize the requirements for completing a review.

    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.

    hashtag
    Parameters

    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)

    hashtag
    Example

    hashtag
    Get Review Completion Settings

    hashtag
    Set Review Completion Settings

    hashtag
    Get Auto-Complete Settings

    get
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Header parameters
    AcceptstringOptionalExample: application/json
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    get
    /api/private/workflows/access/global_settings/cert_auto_complete_settings

    hashtag
    Set Auto-Complete Settings

    put
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Header parameters
    Content-TypestringOptionalExample: application/json
    AcceptstringOptionalExample: application/json
    Body
    objectOptionalExample: {"value":"<integer>"}
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    put
    /api/private/workflows/access/global_settings/cert_auto_complete_settings

    hashtag
    Get Review Sort Settings

    get
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Header parameters
    AcceptstringOptionalExample: application/json
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    get
    /api/private/workflows/access/global_settings/view_sort_settings
    200

    OK

    hashtag
    Set Review Sort Settings

    put
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Header parameters
    Content-TypestringOptionalExample: application/json
    AcceptstringOptionalExample: application/json
    Body
    objectOptionalExample: {"value":{"order_by":"<string>"}}
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    put
    /api/private/workflows/access/global_settings/view_sort_settings

    hashtag
    Get Review Customization Settings

    get
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Header parameters
    AcceptstringOptionalExample: application/json
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    get
    /api/private/workflows/access/global_settings/ui_customization_settings
    200

    hashtag
    Set Review Customization Settings

    put
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    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
    chevron-right
    200

    OK

    application/json
    objectOptional
    put
    /api/private/workflows/access/global_settings/ui_customization_settings

    hashtag
    Get Review Expiration Settings

    get
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Query parameters
    workflow_idstringOptionalExample: <string>
    Header parameters
    AcceptstringOptionalExample: application/json
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    get
    /api/private/workflows/access/global_settings/review_expiration_behavior

    hashtag
    Set Review Expiration Settings

    put
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Header parameters
    Content-TypestringOptionalExample: application/json
    AcceptstringOptionalExample: application/json
    Body
    workflow_idstringOptional

    Optional workflow ID for configuration-specific settings

    behaviorintegerRequired

    Expiration behavior: 0 = DO_NOTHING, 1 = AUTO_REJECT_INCOMPLETE_RESULTS

    note_to_addstringOptional

    Note to add when auto-rejecting incomplete results

    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    put
    /api/private/workflows/access/global_settings/review_expiration_behavior

    hashtag
    Get Expire Overdue Certifications Setting

    get
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Header parameters
    AcceptstringOptionalExample: application/json
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    get
    /api/private/workflows/access/global_settings/expire_overdue_certifications

    hashtag
    Set Expire Overdue Certifications Setting

    put
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Header parameters
    Content-TypestringOptionalExample: application/json
    AcceptstringOptionalExample: application/json
    Body
    objectOptionalExample: {"value":"<boolean>"}
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    put
    /api/private/workflows/access/global_settings/expire_overdue_certifications

    Review Row Grouping

    Configure default grouping behavior for review rows to organize data by column values.

    Configure default grouping behavior for access review rows. When enabled, review rows are automatically organized by the specified column values, making it easier for reviewers to process large datasets by grouping related items together.

    The setting allows admins to configure a default group by column and collapsed/expanded behavior, either globally or per-workflow.

    hashtag
    Parameters

    Name

    Predefined Decision Notes

    Add suggested notes for reviewer decisions.

    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.

    hashtag
    Parameters

    GET /api/private/workflows/access/global_settings/alternate_reviewer_settings HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    PUT /api/private/workflows/access/global_settings/alternate_reviewer_settings HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 35
    
    {
      "value": {
        "selection_methods": [
          1
        ]
      }
    }
    200

    OK

    200

    OK

    200

    OK

    OK

    200

    OK

    200

    OK

    200

    OK

    200

    OK

    200

    OK

    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

    hashtag
    Example

    Example request body:

    hashtag
    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:

    hashtag
    Set Predefined Notes Settings

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

    Configuration-Specific Request:

    {
      "value": {
        "selection_methods": [
          1
        ]
      }
    }
    {}
    {
      "value": {
        "allow_csv_exports": true,
        "allow_pdf_exports": true,
        "allow_xlsx_exports": true
      },
      "workflow_id": "text"
    }
    {}
    GET /api/private/workflows/access/global_settings/allow_reviewer_exports HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    PUT /api/private/workflows/access/global_settings/allow_reviewer_exports HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 108
    
    {
      "value": {
        "allow_csv_exports": true,
        "allow_pdf_exports": true,
        "allow_xlsx_exports": true
      },
      "workflow_id": "text"
    }
    {
      "value": "AUTO_COMPLETE_DISABLED"
    }
    {
      "value": "AUTO_COMPLETE_DISABLED"
    }
    GET /api/private/workflows/access/global_settings/cert_auto_complete_settings HTTP/1.1
    Host: {{baseurl}}
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    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>"
    }
    {
      "value": {
        "order_by": "source.type asc"
      }
    }
    {
      "value": {
        "order_by": "source.type asc"
      }
    }
    GET /api/private/workflows/access/global_settings/view_sort_settings HTTP/1.1
    Host: {{baseurl}}
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    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>"
      }
    }
    {
      "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": {
        "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 /api/private/workflows/access/global_settings/ui_customization_settings HTTP/1.1
    Host: {{baseurl}}
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    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>"
      }
    }
    {
      "value": "AUTO_REJECT_INCOMPLETE_RESULTS",
      "setting": {
        "behavior": 0,
        "note_to_add": "Rejected incomplete result due to review expiration."
      }
    }
    {
      "value": "AUTO_REJECT_INCOMPLETE_RESULTS",
      "setting": {
        "behavior": 1,
        "note_to_add": "Rejected incomplete result due to review expiration."
      }
    }
    GET /api/private/workflows/access/global_settings/review_expiration_behavior HTTP/1.1
    Host: {{baseurl}}
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    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: 118
    
    {
      "workflow_id": "string",
      "setting": {
        "behavior": 1,
        "note_to_add": "Rejected incomplete result due to review expiration."
      }
    }
    {
      "value": false
    }
    {
      "value": false
    }
    GET /api/private/workflows/access/global_settings/expire_overdue_certifications HTTP/1.1
    Host: {{baseurl}}
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    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>"
    }
    {
        "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",
                "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"
    }'

    Require due date for third-level reviews

    mandatory_for_first_level

    boolean

    Require due date for first-level (primary) reviews

    mandatory_for_second_level

    boolean

    Require due date for second-level reviews

    mandatory_for_third_level

    hashtag
    Get Mandatory Due Date Settings

    get
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.

    hashtag
    Set Mandatory Due Date Settings

    put
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.

    boolean

    Type
    Required
    In
    Description

    workflow_id

    string

    No

    body

    The workflow ID to apply the setting to

    value.group_by_column

    string

    Yes

    body

    The column to group rows by (e.g. destination.veza_unique_name, source.veza_unique_name, status, risk_level). Must be a valid column name (same as in CreateAccessResultsGroupCollection). If empty or unset, grouping is disabled.

    value.expand_groups_by_default

    hashtag
    Get Row Grouping Settings

    GET /api/private/workflows/access/global_settings/rows_group_by_setting

    hashtag
    Get Global Setting

    hashtag
    Get Workflow-Scoped Setting

    hashtag
    Example Response

    hashtag
    Set Row Grouping Settings

    PUT /api/private/workflows/access/global_settings/rows_group_by_setting

    hashtag
    Example: Set Global Setting

    hashtag
    Example: Set Workflow-Scoped Setting

    hashtag
    Response

    hashtag
    Common Column Examples

    • destination.veza_unique_name - Group by resource name

    • source.veza_unique_name - Group by identity name

    • status - Group by review status

    • risk_level - Group by risk level

    • destination.type - Group by resource type

    • decision - Group by decision status

    circle-info

    Row grouping settings apply when reviewers first load a review. Users can manually change grouping options in the review interface regardless of these default settings. When configured for a specific review configuration (using workflow_id), those settings override any global grouping settings for reviews created from that configuration.

    Grouping helps organize large reviews by collecting related rows together, making it easier to identify patterns and make decisions efficiently. Common grouping strategies include grouping by department, resource type, permission level, or risk assessment.

    hashtag
    Get Data Source Acknowledgement Settings

    get
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.

    hashtag
    Set Data Source Acknowledgement Settings

    put
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.

    hashtag
    Get Completion Allowed Settings

    get
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.

    hashtag
    Set Certification Completion Allowed Settings

    put
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.

    Self Review Prevention

    Prevent users from being assigned as reviewers for rows that relate to their own access and permissions.

    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.

    hashtag
    Parameters

    The value can be either an integer or string:

    {
        "value": {
            "mandatory_for_first_level": true,
            "mandatory_for_second_level": false,
            "mandatory_for_third_level": false
        }
    }
    {
        "value": {
            "mandatory_for_first_level": true,
            "mandatory_for_second_level": true,
            "mandatory_for_third_level": true
        }
    }
    curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/mandatory_due_date_for_review_settings' \
      -H 'Authorization: Bearer YOUR_SECRET_TOKEN' \
      -H 'Content-Type: application/json' \
      -d '{
        "value": {
            "mandatory_for_first_level": true,
            "mandatory_for_second_level": false,
            "mandatory_for_third_level": false
        }
      }'
    curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/mandatory_due_date_for_review_settings' \
      -H 'Authorization: Bearer YOUR_SECRET_TOKEN' \
      -H 'Content-Type: application/json' \
      -d '{
        "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264",
        "value": {
            "mandatory_for_first_level": true,
            "mandatory_for_second_level": true,
            "mandatory_for_third_level": false
        }
      }'
    curl 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/rows_group_by_setting' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer YOUR_BEARER_TOKEN'
    curl 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/rows_group_by_setting?workflow_id=01983256-911c-7906-9d75-d69871c877fd' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer YOUR_BEARER_TOKEN'
    {
      "value": {
        "group_by_column": "status",
        "expand_groups_by_default": true
      }
    }
    curl -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/rows_group_by_setting' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer YOUR_BEARER_TOKEN' \
        -d '{
          "value": {
            "group_by_column": "destination.veza_unique_name",
            "expand_groups_by_default": false
          }
        }'
    curl -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/rows_group_by_setting' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer YOUR_BEARER_TOKEN' \
        -d '{
          "workflow_id": "01983256-911c-7906-9d75-d69871c877fd",
          "value": {
            "group_by_column": "destination.veza_unique_name",
            "expand_groups_by_default": false
          }
        }'
    {}  // Empty on success
    {
        "value": "COMPLETION_ALLOWED_ALL_ROWS_HAVE_DECISION"
    }

    bool

    Yes

    body

    When set to true, row groups will be expanded by default when the review loads; if false, they'll be collapsed. This flag is ignored when group_by_column is empty.

    Query parameters
    workflow_idstringOptional

    Optional workflow ID to get workflow-specific settings

    Example: 8ae1c414-3a76-46cb-950a-925316b3f264
    Header parameters
    AcceptstringOptionalExample: application/json
    Responses
    chevron-right
    200

    OK

    application/json
    mandatory_for_first_levelbooleanOptional

    Require due date for first-level reviews

    mandatory_for_second_levelbooleanOptional

    Require due date for second-level reviews

    mandatory_for_third_levelbooleanOptional

    Require due date for third-level reviews

    get
    /api/private/workflows/access/global_settings/mandatory_due_date_for_review_settings
    200

    OK

    Header parameters
    Content-TypestringOptionalExample: application/json
    AcceptstringOptionalExample: application/json
    Body
    workflow_idstringOptional

    Optional workflow ID for workflow-specific settings

    mandatory_for_first_levelbooleanRequired

    Require due date for first-level reviews

    mandatory_for_second_levelbooleanOptional

    Require due date for second-level reviews

    mandatory_for_third_levelbooleanOptional

    Require due date for third-level reviews

    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    put
    /api/private/workflows/access/global_settings/mandatory_due_date_for_review_settings
    200

    OK

    Header parameters
    AcceptstringOptionalExample: application/json
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    get
    /api/private/workflows/access/global_settings/datasource_acknowledgement
    200

    OK

    Header parameters
    Content-TypestringOptionalExample: application/json
    AcceptstringOptionalExample: application/json
    Body
    objectOptionalExample: {"value":"<integer>"}
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    put
    /api/private/workflows/access/global_settings/datasource_acknowledgement
    200

    OK

    Header parameters
    AcceptstringOptionalExample: application/json
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    get
    /api/private/workflows/access/global_settings/cert_completion_settings
    200

    OK

    Header parameters
    Content-TypestringOptionalExample: application/json
    AcceptstringOptionalExample: application/json
    Body
    objectOptionalExample: {"value":"<integer>"}
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    put
    /api/private/workflows/access/global_settings/cert_completion_settings
    200

    OK

    SELF_REVIEWER_CHECKING_DISABLED = 1 (or "SELF_REVIEWER_CHECKING_DISABLED" as string)
  • SELF_REVIEWER_CHECKING_ENABLED = 2 (or "SELF_REVIEWER_CHECKING_ENABLED" as string)

  • An optional workflow_id parameter allows configuring self-review prevention per review configuration, overriding the global setting for that configuration. When workflow_id is omitted, the request reads or writes the global setting.

    hashtag
    Examples

    Example using string value (global):

    Example using integer value (global):

    Example enabling self-review prevention for a specific review configuration:

    When a workflow_id is provided on a GET request, Veza returns the configuration-specific setting if one exists, or falls back to the global setting.

    Example GET request (per review configuration):

    Example cURL request (global):

    Example cURL request (per review configuration):

    hashtag
    Get Self Review Settings

    hashtag
    Set Self Review Settings

    Get Access Graph

    Detailed graph relationships for certification results

    Method
    syntax

    GET

    /api/preview/awf/access_graph

    Returns Access Graph relationships for a certification result, including intermediate role details and accumulated permissions.

    Parameters

    Name
    Type
    Description
    Req.

    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.

    hashtag
    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:

    Review Column Defaults

    Configure default columns and visibility for reviewers.

    This API configures the default columns which reviewers will see when they open a review, as well as columns that should be hidden from reviewers but visible to administrators. 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 request body includes two main fields:

    • default_ordered_columns: Array of column names that will be visible to all users (reviewers, administrators, and operators)

    • hide_from_reviewers_columns: Array of column names that will be hidden from users with the reviewer role but remain visible to administrators and operators

    hashtag
    Validation Rules

    Important validation rules:

    • Column names cannot appear in both default_ordered_columns and hide_from_reviewers_columns simultaneously

    • Column names cannot be empty strings

    • Column names cannot contain spaces or commas

    hashtag
    Valid Column Values

    The valid values to show entity attributes include:

    • source.ATTR

    • destination.ATTR

    • waypoint.ATTR

    Where ATTR is an attribute name such as "id" or "name".

    The following column values are also valid:

    • status

    • abstract_permissions

    • concrete_permissions

    hashtag
    Example

    This example configuration shows sensitive identity information (unique IDs and distinguished names) to administrators while hiding them from reviewers, allowing for better security and privacy control in access reviews.

    hashtag
    Get Review Column Defaults

    hashtag
    Set Review Column Defaults

    hashtag
    List All Column Settings

    Reviewer Reassignment Setting

    Control whether assigned reviewers can reassign rows to other reviewers.

    Controls whether users acting as assigned reviewers can reassign rows to other reviewers.

    • When enabled (the default), any user assigned as a reviewer on specific rows can reassign those rows.

    • When disabled, assigned reviewers cannot reassign rows.

    • Administrators, Operators, and Reassigners always retain reassignment privileges, regardless of this setting.

    This setting can be configured globally for all reviews, or for specific review configurations by workflow_id parameter.

    The fallback precedence is:

    • configuration-specific setting → global setting → default (ALLOWED).

    hashtag
    Parameters

    The request body accepts:

    • value (string) — ALLOWED or NOT_ALLOWED

    • workflow_id (optional string) — Specific review configuration ID to override global settings

    Value
    Description

    hashtag
    Examples

    Example request to disable reviewer reassignment globally:

    Example request to disable reviewer reassignment for a specific review configuration:

    hashtag
    Get Reviewer Reassignment Setting

    Retrieve the current reviewer reassignment setting. Include the optional workflow_id query parameter to get the setting for a specific review configuration.

    Global Settings Request:

    Configuration-Specific Request:

    Example response:

    hashtag
    Set Reviewer Reassignment Setting

    Update the reviewer reassignment setting globally or for a specific review configuration. Requires Admin or Operator role.

    Global Settings Request:

    Configuration-Specific Request:

    Example response:

    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.

    hashtag
    Core Workflow Operations

    GET /api/private/workflows/access/global_settings/mandatory_due_date_for_review_settings HTTP/1.1
    Host: {{baseurl}}
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    PUT /api/private/workflows/access/global_settings/mandatory_due_date_for_review_settings HTTP/1.1
    Host: {{baseurl}}
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 166
    
    {
      "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264",
      "value": {
        "mandatory_for_first_level": true,
        "mandatory_for_second_level": false,
        "mandatory_for_third_level": false
      }
    }
    GET /api/private/workflows/access/global_settings/datasource_acknowledgement HTTP/1.1
    Host: {{baseurl}}
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    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>"
    }
    GET /api/private/workflows/access/global_settings/cert_completion_settings HTTP/1.1
    Host: {{baseurl}}
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    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>"
    }
    {
        "value": "SELF_REVIEWER_CHECKING_DISABLED"
    }
    {
        "value": 1
    }
    {
        "value": "SELF_REVIEWER_CHECKING_ENABLED",
        "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264"
    }
    curl -L -X GET 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/self_reviewer_settings?workflow_id=8ae1c414-3a76-46cb-950a-925316b3f264' \
      -H 'Authorization: Bearer YOUR_SECRET_TOKEN'
    curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/self_reviewer_settings' \
      -H 'Authorization: Bearer YOUR_SECRET_TOKEN' \
      -H 'Content-Type: application/json' \
      -d '{
        "value": 1
      }'
    curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/self_reviewer_settings' \
      -H 'Authorization: Bearer YOUR_SECRET_TOKEN' \
      -H 'Content-Type: application/json' \
      -d '{
        "value": 2,
        "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264"
      }'

    snapshot_id

    string

    Graph snapshot to get results from

    N

    certification_id

    string

    ID of a workflow certification

    Y

    result_id

    int

    Certification result number to get access for

    Y

    ALLOWED

    Assigned reviewers can reassign rows (default)

    NOT_ALLOWED

    Assigned reviewers cannot reassign rows

    List Workflows

  • Update Review Configurationarrow-up-right

  • Create Certification

  • List Certifications

  • List Certification Results

  • Update Certification Result

  • Force Update Result

  • Get Certification Result

  • Access Review Exports

  • Update Webhook Info

  • Manage Reviewer Deny List

  • Workflow Parameters

  • Quick Filters

  • Help Page Templates

  • Smart Action Definitions

  • Delegate Reviewers

  • List Reviewer Infos

  • 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/.

    hashtag
    Quick start

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

    List Workflows

    Get all workflows and IDs:

    List Certifications

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

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

    List Certification Results

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

    Update Certification Result

    Update a certification result row with a note:

    {
      "value": {
        "mandatory_for_first_level": false,
        "mandatory_for_second_level": false,
        "mandatory_for_third_level": false
      }
    }
    {}
    {
      "value": "DATASOURCE_ACKNOWLEDGEMENT_REQUIRED"
    }
    {
      "value": "DATASOURCE_ACKNOWLEDGEMENT_REQUIRED"
    }
    {
      "value": "COMPLETION_ALLOWED_ALL_ROWS_HAVE_DECISION"
    }
    {
      "value": "COMPLETION_ALLOWED_ALL_ROWS_HAVE_DECISION"
    }
    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
            }
      ]
    }
    {
      "value": "NOT_ALLOWED"
    }
    {
      "value": "NOT_ALLOWED",
      "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264"
    }
    curl -L 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/allow_reviewers_to_reassign_rows' \
    -H 'Authorization: Bearer YOUR_API_KEY'
    curl -L 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/allow_reviewers_to_reassign_rows?workflow_id=8ae1c414-3a76-46cb-950a-925316b3f264' \
    -H 'Authorization: Bearer YOUR_API_KEY'
    {
      "value": "ALLOWED"
    }
    curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/allow_reviewers_to_reassign_rows' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -d '{
      "value": "NOT_ALLOWED"
    }'
    curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/allow_reviewers_to_reassign_rows' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -d '{
      "value": "NOT_ALLOWED",
      "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264"
    }'
    {}
    export VEZA_TOKEN=APIKEY
    export VEZA_URL=https://your-org.vezacloud.com
    curl "$VEZA_URL/api/preview/awf/workflows" \
      -H "authorization: Bearer $VEZA_TOKEN"
    curl "$VEZA_URL/api/preview/awf/certifications?workflow_id=b9dc2586-5f30-4462-b6be-53f62debc40f" \
      -H "authorization: Bearer $VEZA_TOKEN"
    curl "$VEZA_URL/api/preview/awf/certifications/b2562ef3-a4b3-4b30-8a45-1ba36f945d10/results?offset=0&size=30" \
      -H "authorization: Bearer $VEZA_TOKEN"
    curl -X PUT "$VEZA_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"}}'
    

    The system validates these constraints and returns an error if violations are found

    path_summary.ATTR

  • idp.ATTR

  • 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

  • hashtag
    Get Review Columns

    get
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.

    hashtag
    Set Review Columns

    put
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.

    hashtag
    Get All Column Customizations

    get
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.

    hashtag
    Get Self-Reviewer Settings

    get
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Query parameters
    workflow_idstringOptional

    Optional. If provided, returns the setting for this specific review configuration. If not provided or no configuration-specific setting exists, returns the global setting.

    Example: 8ae1c414-3a76-46cb-950a-925316b3f264
    Header parameters
    AcceptstringOptionalExample: application/json
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    get
    /api/private/workflows/access/global_settings/self_reviewer_settings

    hashtag
    Set Self-Reviewer Settings

    put
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Header parameters
    Content-TypestringOptionalExample: application/json
    AcceptstringOptionalExample: application/json
    Body
    valueone ofOptional
    integer · enumOptional

    1 = SELF_REVIEWER_CHECKING_DISABLED, 2 = SELF_REVIEWER_CHECKING_ENABLED

    Possible values:
    or
    string · enumOptional

    String values for self-review prevention settings

    Possible values:
    workflow_idstringOptional

    Optional. If provided, sets the setting for this specific review configuration only. If omitted, sets the global setting.

    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    put
    /api/private/workflows/access/global_settings/self_reviewer_settings

    Action Allow List

    Restrict which users can delete In Progress reviews or modify review due dates, independent of their assigned Veza role.

    API reference for the Action Allow List feature. For configuration guidance and how it works, see Action Allow List.

    hashtag
    Role Requirements

    Operation
    Required Role

    hashtag
    Principals

    Both users and groups can be added to the allow list. A user is permitted if their user ID is directly on the list, or if any Veza group they belong to is on the list.

    Each principal is specified as an object with a type and id:

    All IDs must be Veza internal UUIDs. Email addresses and usernames are not supported.

    To look up a user's UUID:

    • Administration console: Go to Administration > Users, click the user's name, and copy the UUID from their profile page.

    • Users API: Use the to list users and locate the id field in the response.

    To look up a group's UUID:

    • Groups API: Use GET /api/private/groups to list groups and locate the id field for the target group. Use the filter query parameter to narrow by name (e.g., ?filter=name eq 'Your Group Name').

    hashtag
    Allowed Actions

    The allowed_action field controls which restricted operations the principal is permitted to perform. Specify one or both values:

    Value
    Description

    hashtag
    API Reference

    hashtag
    Check Whether the Allow List Is Enabled

    GET /api/private/workflows/access/settings/action_allowlist_enabled

    Returns the current enabled state of the allow list.

    Example:

    Response:


    hashtag
    Enable or Disable the Allow List

    PUT /api/private/workflows/access/settings/action_allowlist_enabled

    Enable or disable the allow list globally. When disabled, existing RBAC governs access to all review operations.

    Request body:

    Set enabled to true to enable or false to disable.

    Example (enable):

    Example (disable):


    hashtag
    Add Principals to the Allow List

    POST /api/private/workflows/access/action_allowlist

    Add one or more users or groups to the allow list. A single request can include multiple principals of mixed types.

    Request body:

    Example (add a user for both actions):

    Example (add a group):


    hashtag
    Remove Principals from the Allow List

    POST /api/private/workflows/access/action_allowlist:delete

    Remove one or more principals from the allow list. Uses the same request shape as the add endpoint.

    Request body:

    Example:


    hashtag
    List All Permitted Principals

    GET /api/private/workflows/access/action_allowlist

    Returns all users and groups currently on the allow list. Each entry represents one principal–action pair; a principal with two allowed actions appears as two separate entries.

    Example:

    Response:


    hashtag
    Check Whether a User Is Permitted

    GET /api/private/workflows/access/action_allowlist/{user_id}

    Returns the resolved allowed actions for the specified user, including permissions inherited from group memberships. Pass a user UUID — passing a group UUID will return an empty allowed_actions array rather than an error.

    Example:

    Response:

    Returns an empty array if the user is not on the list and belongs to no permitted groups.

    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

    hashtag
    Add smart action definition

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

    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:

    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.

    hashtag
    Mutable fields and mutable filters

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

    Mutable field
    Value

    hashtag
    Remove a smart action definition

    Delete a prepared action by definition id.

    hashtag
    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.

    hashtag
    Update a smart action definition

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

    {
      "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"
        ],
        "hide_from_reviewers_columns": [
          "source.identity_unique_id",
          "idp.on_premises_distinguished_name"
        ]
      },
      "workflow_id": "002063d2-7898-4183-b5fb-1192758fdec7"
    }
    200

    OK

    200

    OK

    Enable or disable the allow list

    admin

    Add or remove users from the list

    admin or access_reviews_admin

    Check whether a user is permitted

    admin or access_reviews_admin

    DELETE_IN_PROGRESS_REVIEW

    Permitted to delete an In Progress review

    MODIFY_IN_PROGRESS_REVIEW_DUE_DATE

    Permitted to modify the due date of an In Progress review

    Users and Teams API
    {
      "value": "SELF_REVIEWER_CHECKING_DISABLED"
    }
    {
      "value": "SELF_REVIEWER_CHECKING_DISABLED"
    }
    GET /api/private/workflows/access/global_settings/self_reviewer_settings HTTP/1.1
    Host: {{baseurl}}
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    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: 64
    
    {
      "value": 2,
      "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264"
    }
    {"type": "USER", "id": "<veza-user-uuid>"}
    {"type": "GROUP", "id": "<veza-group-uuid>"}
    curl -L -X GET 'https://your-organization.vezacloud.com/api/private/workflows/access/settings/action_allowlist_enabled' \
      -H 'Authorization: Bearer YOUR_SECRET_TOKEN'
    {"enabled": false}
    {
      "enabled": true
    }
    curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/settings/action_allowlist_enabled' \
      -H 'Authorization: Bearer YOUR_SECRET_TOKEN' \
      -H 'Content-Type: application/json' \
      -d '{"enabled": true}'
    curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/settings/action_allowlist_enabled' \
      -H 'Authorization: Bearer YOUR_SECRET_TOKEN' \
      -H 'Content-Type: application/json' \
      -d '{"enabled": false}'
    {
      "principals": [
        {"type": "USER", "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"}
      ],
      "allowed_action": ["DELETE_IN_PROGRESS_REVIEW", "MODIFY_IN_PROGRESS_REVIEW_DUE_DATE"]
    }
    curl -L -X POST 'https://your-organization.vezacloud.com/api/private/workflows/access/action_allowlist' \
      -H 'Authorization: Bearer YOUR_SECRET_TOKEN' \
      -H 'Content-Type: application/json' \
      -d '{
        "principals": [{"type": "USER", "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"}],
        "allowed_action": ["DELETE_IN_PROGRESS_REVIEW", "MODIFY_IN_PROGRESS_REVIEW_DUE_DATE"]
      }'
    curl -L -X POST 'https://your-organization.vezacloud.com/api/private/workflows/access/action_allowlist' \
      -H 'Authorization: Bearer YOUR_SECRET_TOKEN' \
      -H 'Content-Type: application/json' \
      -d '{
        "principals": [{"type": "GROUP", "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901"}],
        "allowed_action": ["DELETE_IN_PROGRESS_REVIEW", "MODIFY_IN_PROGRESS_REVIEW_DUE_DATE"]
      }'
    {
      "principals": [
        {"type": "USER", "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"}
      ],
      "allowed_action": ["DELETE_IN_PROGRESS_REVIEW", "MODIFY_IN_PROGRESS_REVIEW_DUE_DATE"]
    }
    curl -L -X POST 'https://your-organization.vezacloud.com/api/private/workflows/access/action_allowlist:delete' \
      -H 'Authorization: Bearer YOUR_SECRET_TOKEN' \
      -H 'Content-Type: application/json' \
      -d '{
        "principals": [{"type": "USER", "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"}],
        "allowed_action": ["DELETE_IN_PROGRESS_REVIEW", "MODIFY_IN_PROGRESS_REVIEW_DUE_DATE"]
      }'
    curl -L -X GET 'https://your-organization.vezacloud.com/api/private/workflows/access/action_allowlist' \
      -H 'Authorization: Bearer YOUR_SECRET_TOKEN'
    {
      "entries": [
        {
          "principal": {"type": "USER", "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "Jane Smith"},
          "allowed_action": "DELETE_IN_PROGRESS_REVIEW"
        },
        {
          "principal": {"type": "USER", "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "Jane Smith"},
          "allowed_action": "MODIFY_IN_PROGRESS_REVIEW_DUE_DATE"
        },
        {
          "principal": {"type": "GROUP", "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", "name": "Review Admins"},
          "allowed_action": "DELETE_IN_PROGRESS_REVIEW"
        }
      ],
      "next_page_token": "",
      "has_more": false,
      "total_count": 3
    }
    curl -L -X GET 'https://your-organization.vezacloud.com/api/private/workflows/access/action_allowlist/a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
      -H 'Authorization: Bearer YOUR_SECRET_TOKEN'
    {"allowed_actions": ["DELETE_IN_PROGRESS_REVIEW", "MODIFY_IN_PROGRESS_REVIEW_DUE_DATE"]}
    Header parameters
    AcceptstringOptionalExample: application/json
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    get
    /api/private/workflows/access/global_settings/ui_column_settings
    200

    OK

    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
    chevron-right
    200

    OK

    application/json
    objectOptional
    put
    /api/private/workflows/access/global_settings/ui_column_settings
    200

    OK

    Header parameters
    AcceptstringOptionalExample: application/json
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    chevron-right
    500

    Internal Server Error

    application/json
    get
    /api/private/workflows/access/global_settings/ui_column_settings:list_all
    post
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Body

    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"

    delete
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Path parameters
    idstringRequired
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    chevron-right
    default

    Default error response

    application/json
    get
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    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
    chevron-right
    200

    OK

    application/json
    idstringOptional
    descriptionstringOptional
    namestringOptional
    workflow_idstringOptional

    empty workflow_id would mean that the smartAction can be used for any workflowId

    filterstringOptional
    decisioninteger · enumOptional
    notesstringOptional
    updated_atstring · date-timeOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    notification_typeinteger · enumOptional
    webhook_typeinteger · enumOptional
    statusinteger · enumOptional
    error_messagestringOptional
    updated_atstring · date-timeOptional
    ticket_numberstringOptional
    sys_idstringOptional
    infostringOptional
    keysstring[]Optional
    slack_app_infoobjectOptional
    notification_statusinteger · enumOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    signed_off_stateinteger · enumOptional
    signed_off_atstring · date-timeOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    actioninteger · enumOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    timestring · date-timeOptional
    notestringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    decisioninteger · enumOptional
    notestringOptional
    previous_decisioninteger · enumOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    reasoninteger · enumOptional
    request_idstringOptional
    approval_levelinteger · enumOptional
    users_managerbooleanOptional
    resource_managersbooleanOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    reviewers_managers_for_approval_levelsinteger · enum[]Optional

    This is a list of approval levels. For each approval level listed, we will attempt to assign managers of the reviewers assigned for that approval level. For example, if this assignment instruction is for the second approval level and the first approval level is specified here, we will assign the manager of the reviewer from the first approval level for the second approval level reviewer. Approval levels are "Zero Indexed" so the first approval level is 0, the second is 1, etc. This is only supported for review creation, it is not supported for updating reviewers of existing results.

    automation_run_idsstring[]Optional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    decision_atstring · date-timeOptional
    idstringOptional
    stateinteger · enumOptional
    error_messagestringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    question_idstringOptional
    answer_idstringOptional
    answer_textstringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    responded_atstring · date-timeRead-onlyOptional
    is_assigned_to_current_userbooleanOptional
    suggestioninteger · enumOptional
    reason_codesstring[]Optional
    cohort_idstringOptional
    mutable_filterstringOptional
    apply_to_all_rowsbooleanOptional
    chevron-right
    default

    Default error response

    application/json
    put
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Body
    idstringOptional
    descriptionstringOptional
    namestringOptional
    workflow_idstringOptional

    empty workflow_id would mean that the smartAction can be used for any workflowId

    filterstringOptional
    decisioninteger · enumOptional
    notesstringOptional
    updated_atstring · date-timeOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    notification_typeinteger · enumOptional
    webhook_typeinteger · enumOptional
    statusinteger · enumOptional
    error_messagestringOptional
    updated_atstring · date-timeOptional
    ticket_numberstringOptional
    sys_idstringOptional
    infostringOptional
    keysstring[]Optional
    slack_app_infoobjectOptional
    notification_statusinteger · enumOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    signed_off_stateinteger · enumOptional
    signed_off_atstring · date-timeOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    actioninteger · enumOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    timestring · date-timeOptional
    notestringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    decisioninteger · enumOptional
    notestringOptional
    previous_decisioninteger · enumOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    reasoninteger · enumOptional
    request_idstringOptional
    approval_levelinteger · enumOptional
    users_managerbooleanOptional
    resource_managersbooleanOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    reviewers_managers_for_approval_levelsinteger · enum[]Optional

    This is a list of approval levels. For each approval level listed, we will attempt to assign managers of the reviewers assigned for that approval level. For example, if this assignment instruction is for the second approval level and the first approval level is specified here, we will assign the manager of the reviewer from the first approval level for the second approval level reviewer. Approval levels are "Zero Indexed" so the first approval level is 0, the second is 1, etc. This is only supported for review creation, it is not supported for updating reviewers of existing results.

    automation_run_idsstring[]Optional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    decision_atstring · date-timeOptional
    idstringOptional
    stateinteger · enumOptional
    error_messagestringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    question_idstringOptional
    answer_idstringOptional
    answer_textstringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    responded_atstring · date-timeRead-onlyOptional
    is_assigned_to_current_userbooleanOptional
    suggestioninteger · enumOptional
    reason_codesstring[]Optional
    cohort_idstringOptional
    mutable_filterstringOptional
    apply_to_all_rowsbooleanOptional
    Mutable fields and mutable filters
    Remove a smart action definition
    List smart action definitions
    Update a smart action definition
    result

    Reviewer Bulk Actions Settings

    Control which bulk actions are available to reviewers.

    This setting provides granular control over bulk operations in Access Reviews. With it, administrators can selectively disable specific actions, based on organizational security policies and compliance requirements.

    When a bulk action is enabled (all actions are enabled by default), reviewers choose the action to multiple rows at once using row selection, "Select All", or filter-based operations. When disabled, the specified action is hidden from the reviewer interface, for any operations affecting two or more rows.

    circle-info

    Bulk action restrictions apply only to users with the reviewer role. Administrators and operators are not affected by these settings. Single-row operations (acting on one row at a time) are never restricted.

    All fields default to true (all bulk actions allowed). This setting can be configured globally for all reviews, or for specific review configurations by workflow_id parameter.

    The fallback precedence is:

    • configuration-specific setting → global setting → default (all enabled).

    circle-exclamation

    When a bulk action is disabled, any that use the disabled action type are also hidden from reviewers. For example, if bulk approve is disabled, a Smart Action that includes an approve step will not be shown to reviewers.

    hashtag
    Parameters

    The request body accepts:

    • allow_bulk_approve (boolean) - Enable or disable bulk approve for reviewers

    • allow_bulk_reject (boolean) - Enable or disable bulk reject for reviewers

    • allow_bulk_signoff (boolean) - Enable or disable bulk sign-off for reviewers

    hashtag
    Examples

    Example request body to disable bulk approve and reject globally while keeping other bulk actions enabled:

    Example request body to disable all bulk actions for a specific review configuration:

    hashtag
    Get Reviewer Bulk Actions Settings

    Retrieve the current reviewer bulk actions settings. Include the optional workflow_id query parameter to get settings for a specific review configuration.

    Global Settings Request:

    Configuration-Specific Request:

    Example response:

    hashtag
    Set Reviewer Bulk Actions Settings

    Update the reviewer bulk actions settings globally or for a specific review configuration.

    Global Settings Request:

    Configuration-Specific Request:

    Example response:

    List Workflows

    Get all workflows and certification status

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

    Method
    syntax

    GET /api/private/workflows/access/global_settings/ui_column_settings HTTP/1.1
    Host: {{baseurl}}
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    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"
        ]
      }
    }
    GET /api/private/workflows/access/global_settings/ui_column_settings:list_all HTTP/1.1
    Host: {{baseurl}}
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    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": ""
    }
    hashtag
    Examples

    hashtag
    Request

    hashtag
    Response

    A successful response will include the Workflow details.

    See Workflow Parameters for additional details on the complete workflow object.

    GET

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

    curl '{{VEZA_URL}}/api/preview/awf/workflows' \
      -H 'authorization: Bearer '$token
    {
      "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"
        ]
      }
    }
    {
      "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"
        ]
      }
    }
    {
      "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"
            ]
          }
        }
      ]
    }
    {
        "values": [
            {
                "workflow_id": "b9dc2586-5f30-4462-b6be-53f62debc40f",
                "name": "demo",
                "description": "demo",
                "owner": {
                    "user_type": "localCookieUser",
                    "id": "e3ac5e6a-1946-4688-82a7-8a607133a1c8",
                    "email": "[email protected]",
                    "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": "[email protected]",
                    "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": "[email protected]",
                    "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": "[email protected]",
                    "name": "earlypreview-auth0"
                },
                "created_at": "2023-02-09T03:07:24.458473708Z"
            }
        ]
    }
  • allow_bulk_clear_decisions (boolean) - Enable or disable bulk clear decisions for reviewers

  • allow_bulk_add_note (boolean) - Enable or disable bulk add note for reviewers

  • allow_bulk_reassign (boolean) - Enable or disable bulk reassign for reviewers

  • workflow_id (optional string) - Specific review configuration ID to override global settings

  • get
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Query parameters
    workflow_idstringOptional

    Optional. If empty, returns the global tenant setting. If provided, returns the workflow-specific setting.

    Responses
    chevron-right
    200

    OK

    application/json
    allow_bulk_approvebooleanOptional
    allow_bulk_rejectbooleanOptional
    allow_bulk_signoffbooleanOptional
    allow_bulk_clear_decisionsbooleanOptional
    allow_bulk_add_notebooleanOptional
    allow_bulk_reassignbooleanOptional
    chevron-right
    default

    Default error response

    application/json
    put
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Body
    allow_bulk_approvebooleanOptional
    allow_bulk_rejectbooleanOptional
    allow_bulk_signoffbooleanOptional
    allow_bulk_clear_decisionsbooleanOptional
    allow_bulk_add_notebooleanOptional
    allow_bulk_reassignbooleanOptional
    workflow_idstringOptional

    Optional. If empty, sets the global tenant setting. If provided, sets the workflow-specific setting.

    Smart Actions
    namestringOptional
    descriptionstringOptional
    workflow_idstringOptional

    empty workflow_id would mean that the smartAction can be used for any workflowId

    filterstringOptional
    decisioninteger · enumOptional
    notesstringOptional
    updated_atstring · date-timeOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    notification_typeinteger · enumOptional
    webhook_typeinteger · enumOptional
    statusinteger · enumOptional
    error_messagestringOptional
    updated_atstring · date-timeOptional
    ticket_numberstringOptional
    sys_idstringOptional
    infostringOptional
    keysstring[]Optional
    slack_app_infoobjectOptional
    notification_statusinteger · enumOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    signed_off_stateinteger · enumOptional
    signed_off_atstring · date-timeOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    actioninteger · enumOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    timestring · date-timeOptional
    notestringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    decisioninteger · enumOptional
    notestringOptional
    previous_decisioninteger · enumOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    reasoninteger · enumOptional
    request_idstringOptional
    approval_levelinteger · enumOptional
    users_managerbooleanOptional
    resource_managersbooleanOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    reviewers_managers_for_approval_levelsinteger · enum[]Optional

    This is a list of approval levels. For each approval level listed, we will attempt to assign managers of the reviewers assigned for that approval level. For example, if this assignment instruction is for the second approval level and the first approval level is specified here, we will assign the manager of the reviewer from the first approval level for the second approval level reviewer. Approval levels are "Zero Indexed" so the first approval level is 0, the second is 1, etc. This is only supported for review creation, it is not supported for updating reviewers of existing results.

    automation_run_idsstring[]Optional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    decision_atstring · date-timeOptional
    idstringOptional
    stateinteger · enumOptional
    error_messagestringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    question_idstringOptional
    answer_idstringOptional
    answer_textstringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    responded_atstring · date-timeRead-onlyOptional
    is_assigned_to_current_userbooleanOptional
    suggestioninteger · enumOptional
    reason_codesstring[]Optional
    cohort_idstringOptional
    mutable_filterstringOptional
    apply_to_all_rowsbooleanOptional
    Responses
    chevron-right
    200

    OK

    application/json
    idstringOptional
    chevron-right
    default

    Default error response

    application/json
    post
    /api/preview/awf/smart_action_definitions
    delete
    /api/preview/awf/smart_action_definitions/{id}
    get
    /api/preview/awf/smart_action_definitions
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    chevron-right
    default

    Default error response

    application/json
    put
    /api/preview/awf/smart_action_definitions

    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

    You can use to retrieve all valid workflow IDs.

    hashtag
    Examples

    Request

    Response

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

    Name
    type
    Description

    Sample response:

    {
      "value": {
        "allow_bulk_approve": false,
        "allow_bulk_reject": false,
        "allow_bulk_signoff": true,
        "allow_bulk_clear_decisions": true,
        "allow_bulk_add_note": true,
        "allow_bulk_reassign": true
      }
    }
    {
      "value": {
        "allow_bulk_approve": false,
        "allow_bulk_reject": false,
        "allow_bulk_signoff": false,
        "allow_bulk_clear_decisions": false,
        "allow_bulk_add_note": false,
        "allow_bulk_reassign": false
      },
      "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264"
    }
    curl -L 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/reviewer_bulk_actions' \
    -H 'Authorization: Bearer YOUR_API_KEY'
    curl -L 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/reviewer_bulk_actions?workflow_id=8ae1c414-3a76-46cb-950a-925316b3f264' \
    -H 'Authorization: Bearer YOUR_API_KEY'
    {
      "value": {
        "allow_bulk_approve": true,
        "allow_bulk_reject": true,
        "allow_bulk_signoff": true,
        "allow_bulk_clear_decisions": true,
        "allow_bulk_add_note": true,
        "allow_bulk_reassign": true
      }
    }
    curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/reviewer_bulk_actions' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -d '{
      "value": {
        "allow_bulk_approve": false,
        "allow_bulk_reject": false,
        "allow_bulk_signoff": true,
        "allow_bulk_clear_decisions": true,
        "allow_bulk_add_note": true,
        "allow_bulk_reassign": true
      }
    }'
    curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/reviewer_bulk_actions' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -d '{
      "value": {
        "allow_bulk_approve": false,
        "allow_bulk_reject": false,
        "allow_bulk_signoff": false,
        "allow_bulk_clear_decisions": false,
        "allow_bulk_add_note": false,
        "allow_bulk_reassign": false
      },
      "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264"
    }'
    {}
    POST /api/preview/awf/smart_action_definitions HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 2461
    
    {
      "name": "text",
      "description": "text",
      "workflow_id": "text",
      "filter": "text",
      "mutable_fields": {
        "decision": 1,
        "notes": "text",
        "updated_at": "2026-04-12T08:51:17.382Z",
        "updated_by": {
          "user_type": "text",
          "id": "text",
          "email": "text",
          "name": "text",
          "alternate_email": "text"
        },
        "notification_infos": {
          "values": [
            {
              "notification_type": 1,
              "webhook_type": 1,
              "status": 1,
              "error_message": "text",
              "updated_at": "2026-04-12T08:51:17.382Z",
              "snow_info": {
                "ticket_number": "text",
                "sys_id": "text"
              },
              "webhook_info": {
                "info": "text"
              },
              "jira_info": {
                "keys": [
                  "text"
                ]
              },
              "slack_app_info": {}
            }
          ]
        },
        "notification_status": 1,
        "reviewers": [
          {
            "user_type": "text",
            "id": "text",
            "email": "text",
            "name": "text",
            "alternate_email": "text"
          }
        ],
        "signed_off_state": 1,
        "signed_off_at": "2026-04-12T08:51:17.382Z",
        "signed_off_by": {
          "user_type": "text",
          "id": "text",
          "email": "text",
          "name": "text",
          "alternate_email": "text"
        },
        "action_log": {
          "entries": [
            {
              "action": 1,
              "user": {
                "user_type": "text",
                "id": "text",
                "email": "text",
                "name": "text",
                "alternate_email": "text"
              },
              "time": "2026-04-12T08:51:17.382Z",
              "note": "text",
              "reviewer_detail": {
                "old_reviewers": [
                  {
                    "user_type": "text",
                    "id": "text",
                    "email": "text",
                    "name": "text",
                    "alternate_email": "text"
                  }
                ],
                "new_reviewers": [
                  {
                    "user_type": "text",
                    "id": "text",
                    "email": "text",
                    "name": "text",
                    "alternate_email": "text"
                  }
                ]
              },
              "decision_detail": {
                "decision": 1,
                "note": "text"
              },
              "decision_cleared_detail": {
                "previous_decision": 1,
                "original_decider": {
                  "user_type": "text",
                  "id": "text",
                  "email": "text",
                  "name": "text",
                  "alternate_email": "text"
                },
                "reason": 1
              },
              "revocation_request_detail": {
                "request_id": "text"
              },
              "approval_level": 1
            }
          ]
        },
        "reviewer_assignment": {
          "users_manager": true,
          "resource_managers": true,
          "reviewers": [
            {
              "user_type": "text",
              "id": "text",
              "email": "text",
              "name": "text",
              "alternate_email": "text"
            }
          ],
          "fallback_reviewers": [
            {
              "user_type": "text",
              "id": "text",
              "email": "text",
              "name": "text",
              "alternate_email": "text"
            }
          ],
          "reviewers_managers_for_approval_levels": [
            1
          ]
        },
        "automation_run_ids": [
          "text"
        ],
        "decision_by": {
          "user_type": "text",
          "id": "text",
          "email": "text",
          "name": "text",
          "alternate_email": "text"
        },
        "decision_at": "2026-04-12T08:51:17.382Z",
        "revoke_request_infos": [
          {
            "id": "text",
            "state": 1,
            "error_message": "text"
          }
        ],
        "old_reviewers": [
          {
            "user_type": "text",
            "id": "text",
            "email": "text",
            "name": "text",
            "alternate_email": "text"
          }
        ],
        "predefined_question_response": [
          {
            "question_id": "text",
            "answer_id": "text",
            "answer_text": "text"
          }
        ],
        "is_assigned_to_current_user": true,
        "ai_suggestion": {
          "suggestion": 1,
          "reason_codes": [
            "text"
          ],
          "cohort_id": "text"
        }
      },
      "mutable_filter": "text",
      "apply_to_all_rows": true
    }
    DELETE /api/preview/awf/smart_action_definitions/{id} HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    GET /api/preview/awf/smart_action_definitions HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    PUT /api/preview/awf/smart_action_definitions HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 2483
    
    {
      "value": {
        "id": "text",
        "description": "text",
        "name": "text",
        "workflow_id": "text",
        "filter": "text",
        "mutable_fields": {
          "decision": 1,
          "notes": "text",
          "updated_at": "2026-04-12T08:51:17.382Z",
          "updated_by": {
            "user_type": "text",
            "id": "text",
            "email": "text",
            "name": "text",
            "alternate_email": "text"
          },
          "notification_infos": {
            "values": [
              {
                "notification_type": 1,
                "webhook_type": 1,
                "status": 1,
                "error_message": "text",
                "updated_at": "2026-04-12T08:51:17.382Z",
                "snow_info": {
                  "ticket_number": "text",
                  "sys_id": "text"
                },
                "webhook_info": {
                  "info": "text"
                },
                "jira_info": {
                  "keys": [
                    "text"
                  ]
                },
                "slack_app_info": {}
              }
            ]
          },
          "notification_status": 1,
          "reviewers": [
            {
              "user_type": "text",
              "id": "text",
              "email": "text",
              "name": "text",
              "alternate_email": "text"
            }
          ],
          "signed_off_state": 1,
          "signed_off_at": "2026-04-12T08:51:17.382Z",
          "signed_off_by": {
            "user_type": "text",
            "id": "text",
            "email": "text",
            "name": "text",
            "alternate_email": "text"
          },
          "action_log": {
            "entries": [
              {
                "action": 1,
                "user": {
                  "user_type": "text",
                  "id": "text",
                  "email": "text",
                  "name": "text",
                  "alternate_email": "text"
                },
                "time": "2026-04-12T08:51:17.382Z",
                "note": "text",
                "reviewer_detail": {
                  "old_reviewers": [
                    {
                      "user_type": "text",
                      "id": "text",
                      "email": "text",
                      "name": "text",
                      "alternate_email": "text"
                    }
                  ],
                  "new_reviewers": [
                    {
                      "user_type": "text",
                      "id": "text",
                      "email": "text",
                      "name": "text",
                      "alternate_email": "text"
                    }
                  ]
                },
                "decision_detail": {
                  "decision": 1,
                  "note": "text"
                },
                "decision_cleared_detail": {
                  "previous_decision": 1,
                  "original_decider": {
                    "user_type": "text",
                    "id": "text",
                    "email": "text",
                    "name": "text",
                    "alternate_email": "text"
                  },
                  "reason": 1
                },
                "revocation_request_detail": {
                  "request_id": "text"
                },
                "approval_level": 1
              }
            ]
          },
          "reviewer_assignment": {
            "users_manager": true,
            "resource_managers": true,
            "reviewers": [
              {
                "user_type": "text",
                "id": "text",
                "email": "text",
                "name": "text",
                "alternate_email": "text"
              }
            ],
            "fallback_reviewers": [
              {
                "user_type": "text",
                "id": "text",
                "email": "text",
                "name": "text",
                "alternate_email": "text"
              }
            ],
            "reviewers_managers_for_approval_levels": [
              1
            ]
          },
          "automation_run_ids": [
            "text"
          ],
          "decision_by": {
            "user_type": "text",
            "id": "text",
            "email": "text",
            "name": "text",
            "alternate_email": "text"
          },
          "decision_at": "2026-04-12T08:51:17.382Z",
          "revoke_request_infos": [
            {
              "id": "text",
              "state": 1,
              "error_message": "text"
            }
          ],
          "old_reviewers": [
            {
              "user_type": "text",
              "id": "text",
              "email": "text",
              "name": "text",
              "alternate_email": "text"
            }
          ],
          "predefined_question_response": [
            {
              "question_id": "text",
              "answer_id": "text",
              "answer_text": "text"
            }
          ],
          "is_assigned_to_current_user": true,
          "ai_suggestion": {
            "suggestion": 1,
            "reason_codes": [
              "text"
            ],
            "cohort_id": "text"
          }
        },
        "mutable_filter": "text",
        "apply_to_all_rows": true
      }
    }
    {
      "id": "text"
    }
    {}
    {
      "values": [
        {
          "id": "text",
          "description": "text",
          "name": "text",
          "workflow_id": "text",
          "filter": "text",
          "mutable_fields": {
            "decision": 1,
            "notes": "text",
            "updated_at": "2026-04-12T08:51:17.382Z",
            "updated_by": {
              "user_type": "text",
              "id": "text",
              "email": "text",
              "name": "text",
              "alternate_email": "text"
            },
            "notification_infos": {
              "values": [
                {
                  "notification_type": 1,
                  "webhook_type": 1,
                  "status": 1,
                  "error_message": "text",
                  "updated_at": "2026-04-12T08:51:17.382Z",
                  "snow_info": {
                    "ticket_number": "text",
                    "sys_id": "text"
                  },
                  "webhook_info": {
                    "info": "text"
                  },
                  "jira_info": {
                    "keys": [
                      "text"
                    ]
                  },
                  "slack_app_info": {}
                }
              ]
            },
            "notification_status": 1,
            "reviewers": [
              {
                "user_type": "text",
                "id": "text",
                "email": "text",
                "name": "text",
                "alternate_email": "text"
              }
            ],
            "signed_off_state": 1,
            "signed_off_at": "2026-04-12T08:51:17.382Z",
            "signed_off_by": {
              "user_type": "text",
              "id": "text",
              "email": "text",
              "name": "text",
              "alternate_email": "text"
            },
            "action_log": {
              "entries": [
                {
                  "action": 1,
                  "user": {
                    "user_type": "text",
                    "id": "text",
                    "email": "text",
                    "name": "text",
                    "alternate_email": "text"
                  },
                  "time": "2026-04-12T08:51:17.382Z",
                  "note": "text",
                  "reviewer_detail": {
                    "old_reviewers": [
                      {
                        "user_type": "text",
                        "id": "text",
                        "email": "text",
                        "name": "text",
                        "alternate_email": "text"
                      }
                    ],
                    "new_reviewers": [
                      {
                        "user_type": "text",
                        "id": "text",
                        "email": "text",
                        "name": "text",
                        "alternate_email": "text"
                      }
                    ]
                  },
                  "decision_detail": {
                    "decision": 1,
                    "note": "text"
                  },
                  "decision_cleared_detail": {
                    "previous_decision": 1,
                    "original_decider": {
                      "user_type": "text",
                      "id": "text",
                      "email": "text",
                      "name": "text",
                      "alternate_email": "text"
                    },
                    "reason": 1
                  },
                  "revocation_request_detail": {
                    "request_id": "text"
                  },
                  "approval_level": 1
                }
              ]
            },
            "reviewer_assignment": {
              "users_manager": true,
              "resource_managers": true,
              "reviewers": [
                {
                  "user_type": "text",
                  "id": "text",
                  "email": "text",
                  "name": "text",
                  "alternate_email": "text"
                }
              ],
              "fallback_reviewers": [
                {
                  "user_type": "text",
                  "id": "text",
                  "email": "text",
                  "name": "text",
                  "alternate_email": "text"
                }
              ],
              "reviewers_managers_for_approval_levels": [
                1
              ]
            },
            "automation_run_ids": [
              "text"
            ],
            "decision_by": {
              "user_type": "text",
              "id": "text",
              "email": "text",
              "name": "text",
              "alternate_email": "text"
            },
            "decision_at": "2026-04-12T08:51:17.382Z",
            "revoke_request_infos": [
              {
                "id": "text",
                "state": 1,
                "error_message": "text"
              }
            ],
            "old_reviewers": [
              {
                "user_type": "text",
                "id": "text",
                "email": "text",
                "name": "text",
                "alternate_email": "text"
              }
            ],
            "predefined_question_response": [
              {
                "question_id": "text",
                "answer_id": "text",
                "answer_text": "text",
                "respondent_user": {
                  "user_type": "text",
                  "id": "text",
                  "email": "text",
                  "name": "text",
                  "alternate_email": "text"
                },
                "responded_at": "2026-04-12T08:51:17.382Z"
              }
            ],
            "is_assigned_to_current_user": true,
            "ai_suggestion": {
              "suggestion": 1,
              "reason_codes": [
                "text"
              ],
              "cohort_id": "text"
            }
          },
          "mutable_filter": "text",
          "apply_to_all_rows": true
        }
      ]
    }
    {}

    AccessCertResult

    Contains details for each certification (see ).

    workflow_id

    string

    Y

    Workflow to get certifications for

    has_more

    bool

    Indicates if additional results are available.

    total_result_count

    int

    The total number of results.

    List Workflows

    values

    get
    /api/private/workflows/access/global_settings/reviewer_bulk_actions
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    chevron-right
    default

    Default error response

    application/json
    put
    /api/private/workflows/access/global_settings/reviewer_bulk_actions

    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.

    Method
    syntax

    PUT

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

    hashtag
    Parameters

    Name
    Type
    In
    Description

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

    Name
    Type
    Req.
    Description

    Valid decisions are:

    • NONE // No decision has been made

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

    • REJECTED

    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.

    During the 7-day grace period after a certification completes or expires, updating row notes is permitted for the admin, Access Reviews Admin, and operator roles. Other update operations are restricted during this window. For a full summary of grace period permissions, see .

    hashtag
    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:

    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."

    hashtag
    Examples

    hashtag
    Reject with note

    hashtag
    Change the reviewer to a Custom IdP user

    hashtag
    Assign a local user as a reviewer

    hashtag
    Response

    A successful response will be empty: {}.

    curl '{{VEZA_URL}}/api/preview/awf/certifications?workfow_id=17ce79c7-a2e6-4baf-87ff-f386764c9659' \
      -H 'authorization: Bearer '$token
    {
      "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": "[email protected]",
                  "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": "[email protected]",
                  "name": "earlypreview-auth0"
              },
              "updated_at": "2023-07-27T03:44:31.410413829Z",
              "updated_by": {
                  "user_type": "localCookieUser",
                  "id": "e3ac5e6a-1946-4688-82a7-8a607133a1c8",
                  "email": "[email protected]",
                  "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
          }
      ]
    }
    GET /api/private/workflows/access/global_settings/reviewer_bulk_actions HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    PUT /api/private/workflows/access/global_settings/reviewer_bulk_actions HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 197
    
    {
      "value": {
        "allow_bulk_approve": true,
        "allow_bulk_reject": true,
        "allow_bulk_signoff": true,
        "allow_bulk_clear_decisions": true,
        "allow_bulk_add_note": true,
        "allow_bulk_reassign": true
      },
      "workflow_id": "text"
    }
    workflow parameters
    {
      "value": {
        "allow_bulk_approve": true,
        "allow_bulk_reject": true,
        "allow_bulk_signoff": true,
        "allow_bulk_clear_decisions": true,
        "allow_bulk_add_note": true,
        "allow_bulk_reassign": true
      }
    }
    {}

    Mutable fields to update

    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

    array

    N

    Contains Workflow User details for assigned reviewers

    // The access described in the result row isn't correct
  • FIXED // The access was rejected but has been fixed

  • 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.

    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.

    cert_id

    string

    path

    id of the certification to update

    value

    object

    result_id

    int

    Y

    certification result number to update

    decision

    enum

    user_type

    string

    Y

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

    id

    string

    Listing Certification Results
    Force Update Result
    Global Workflows IdP

    body

    N

    Y

    Access Review Exports

    Programmatic creation and download of access review exports

    The Access Review Export API enables you to programmatically create, monitor, and download exports of access review results in CSV or XLSX format. These endpoints provide the same export functionality available in the Veza UI, allowing you to automate report generation and integrate review data into external systems.

    hashtag
    Endpoints

    • Create Access Review Export - Initiate a new export job

    • - Check export status and metadata

    • - Download the completed export file

    hashtag
    Workflow

    1. Create an export job with certification ID and format

    2. Poll the status endpoint until FINISHED

    3. Download the export file

    hashtag
    Create Access Review Export

    Create a new export job for an access review certification.

    hashtag
    Request

    POST /api/preview/awf/exports/access_review:create

    hashtag
    Request Body

    Field
    Type
    Required
    Description
    circle-info

    Supported Formats: Only CSV (format 0) and XLSX (format 6) are supported for access review exports.

    hashtag
    Response

    hashtag
    Examples

    Create a CSV export:

    Create a filtered CSV export (rejected rows only):

    Create an XLSX diff export:

    hashtag
    Get Access Review Export

    Retrieve the status and metadata for an export job.

    hashtag
    Request

    GET /api/preview/awf/exports/access_review/{export_id}

    hashtag
    Path Parameters

    Parameter
    Type
    Required
    Description

    hashtag
    Response

    hashtag
    Export Status Values

    Status
    Description
    circle-exclamation

    Poll the export status endpoint periodically until the status is FINISHED before attempting to download. Large exports may take several minutes to complete.

    hashtag
    Example

    hashtag
    Download Access Review Export

    Download the completed export file.

    hashtag
    Request

    GET /api/preview/awf/exports/access_review/{export_id}:download

    hashtag
    Path Parameters

    Parameter
    Type
    Required
    Description

    hashtag
    Response

    The response returns the file contents with appropriate content-type headers:

    • XLSX exports: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

    • CSV exports: text/csv

    triangle-exclamation

    The export must have status FINISHED before you can download it. Attempting to download an incomplete export will result in an error.

    hashtag
    Example

    hashtag
    Complete Export Script

    hashtag
    Filter Syntax

    Both filter and mutable_filter parameters use SCIM filter syntax (RFC 7644), not SQL syntax.

    hashtag
    SCIM Operators

    Operator
    Description
    Example

    hashtag
    Decision Values

    For mutable_filter, the decision field accepts these enum values:

    Value
    Description

    hashtag
    Filter Examples

    Export pending decisions only:

    Use Case
    Expression

    hashtag
    See Also

    • - Get certification IDs for export

    • - View results before exporting

    • - Create certifications programmatically

    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

    hashtag
    Examples

    Request

    Response

    For more information about the Result object see .

    See for a description of the tags and joined_nodes enrichment fields.

    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": "[email protected]", "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": "[email protected]", "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": "[email protected]", "name": "demo-auth0"}]}}'
    Reviewers
    identity

    The ID of the certification to export

    previous_certification_id

    string

    No

    Previous certification ID for diff exports

    order_by

    string

    No

    Sort order for results (e.g., "source.name ASC")

    filter

    string

    No

    SCIM filter for source/destination fields (e.g., "source.email eq \"[email protected]\"")

    mutable_filter

    string

    No

    SCIM filter for mutable fields (e.g., "decision eq \"RESULT_DECISION_REJECTED\"")

    title

    string

    No

    Title for XLSX exports (max 30 characters)

    CANCELLED

    Export was cancelled before completion

    EXPIRED

    Export file has expired and is no longer available for download

    Contains

    source.name co "admin"

    sw

    Starts with

    source.email sw "john"

    ew

    Ends with

    source.email ew "@example.com"

    gt

    Greater than

    source.c gt 100

    ge

    Greater than or equal

    source.d ge 50

    lt

    Less than

    source.c lt 100

    le

    Less than or equal

    source.d le 50

    PR

    Present (not null)

    source.email PR

    Source email equals

    "filter": "source.email eq \"[email protected]\""

    Combined filter

    "mutable_filter": "decision eq \"RESULT_DECISION_ACCEPTED\" and signed_off_state eq \"SIGNED_OFF\""

    format

    integer

    Yes

    Export format: 0 (CSV) or 6 (XLSX)

    certification_id

    string

    export_id

    string

    Yes

    The export ID returned from the create request

    CREATED

    Export job is queued and waiting to start

    PROCESSING

    Export is being generated

    FINISHED

    Export completed successfully and is ready for download

    FAILED

    export_id

    string

    Yes

    The export ID of a completed export

    eq

    Equal

    source.name eq "jsmith"

    ne

    Not equal

    decision ne "RESULT_DECISION_NONE"

    RESULT_DECISION_NONE

    No decision made (pending)

    RESULT_DECISION_ACCEPTED

    Access was approved

    RESULT_DECISION_REJECTED

    Access was rejected

    RESULT_DECISION_FIXED

    Pending decisions

    "mutable_filter": "decision eq \"RESULT_DECISION_NONE\""

    Rejected access

    "mutable_filter": "decision eq \"RESULT_DECISION_REJECTED\""

    Accepted access

    "mutable_filter": "decision eq \"RESULT_DECISION_ACCEPTED\""

    Source name contains

    Get Access Review Export
    Download Access Review Export
    List Certifications
    List Certification Results
    Create Certification

    Yes

    Export failed due to an error

    co

    Access was remediated

    "filter": "source.name co \"Test\""

    certification_id

    string

    Y

    Certification id

    result_id

    string

    Y

    Workflows Parameters
    List Certification Results

    Result number to retrieve

    {
      "export_id": "019abd80-a80a-7601-b97d-2dfb6b3a35d1"
    }
    curl -X POST "$VEZA_URL/api/preview/awf/exports/access_review:create" \
      -H "authorization: Bearer $VEZA_TOKEN" \
      -H "content-type: application/json" \
      -d '{
        "format": 0,
        "certification_id": "b2562ef3-a4b3-4b30-8a45-1ba36f945d10",
        "title": "Access Review Export"
      }'
    curl -X POST "$VEZA_URL/api/preview/awf/exports/access_review:create" \
      -H "authorization: Bearer $VEZA_TOKEN" \
      -H "content-type: application/json" \
      -d '{
        "format": 0,
        "certification_id": "b2562ef3-a4b3-4b30-8a45-1ba36f945d10",
        "mutable_filter": "decision eq \"RESULT_DECISION_REJECTED\"",
        "title": "Rejected Access"
      }'
    curl -X POST "$VEZA_URL/api/preview/awf/exports/access_review:create" \
      -H "authorization: Bearer $VEZA_TOKEN" \
      -H "content-type: application/json" \
      -d '{
        "format": 6,
        "certification_id": "b2562ef3-a4b3-4b30-8a45-1ba36f945d10",
        "previous_certification_id": "a1234abc-1234-5678-9abc-def123456789",
        "title": "Access Changes"
      }'
    {
      "value": {
        "id": "019abd80-a80a-7601-b97d-2dfb6b3a35d1",
        "state": "FINISHED",
        "created_by": "59fd8ac9-26d8-4d06-aa98-c66c2da0e822",
        "created_at": "2025-11-26T00:11:56.810394292Z",
        "updated_at": null,
        "finished_row_count": 0,
        "format": "CSV",
        "error_reason": "",
        "title": "Test Export",
        "last_completed_export": "2025-11-26T00:11:57.513887Z"
      }
    }
    curl "$VEZA_URL/api/preview/awf/exports/access_review/019abd80-a80a-7601-b97d-2dfb6b3a35d1" \
      -H "authorization: Bearer $VEZA_TOKEN"
    curl "$VEZA_URL/api/preview/awf/exports/access_review/019abd80-a80a-7601-b97d-2dfb6b3a35d1:download" \
      -H "authorization: Bearer $VEZA_TOKEN" \
      -o access_review_export.csv
    #!/bin/bash
    set -e
    
    VEZA_URL="${VEZA_URL}"
    VEZA_TOKEN="${VEZA_TOKEN}"
    CERT_ID="${1}"
    
    # Create export
    EXPORT_RESPONSE=$(curl -s -X POST "$VEZA_URL/api/preview/awf/exports/access_review:create" \
      -H "authorization: Bearer $VEZA_TOKEN" \
      -H "content-type: application/json" \
      -d "{\"format\": 0, \"certification_id\": \"$CERT_ID\"}")
    
    EXPORT_ID=$(echo "$EXPORT_RESPONSE" | grep -o '"export_id":"[^"]*"' | cut -d'"' -f4)
    echo "Export created: $EXPORT_ID"
    
    # Poll for completion
    while true; do
      STATUS=$(curl -s "$VEZA_URL/api/preview/awf/exports/access_review/$EXPORT_ID" \
        -H "authorization: Bearer $VEZA_TOKEN" | grep -o '"state":"[^"]*"' | cut -d'"' -f4)
    
      echo "Status: $STATUS"
      [ "$STATUS" = "FINISHED" ] && break
      [ "$STATUS" = "FAILED" ] && echo "Export failed" && exit 1
      [ "$STATUS" = "CANCELLED" ] && echo "Export cancelled" && exit 1
      [ "$STATUS" = "EXPIRED" ] && echo "Export expired" && exit 1
      sleep 5
    done
    
    # Download
    curl -s "$VEZA_URL/api/preview/awf/exports/access_review/$EXPORT_ID:download" \
      -H "authorization: Bearer $VEZA_TOKEN" \
      -o "export_${CERT_ID}.csv"
    
    echo "Downloaded: export_${CERT_ID}.csv"
    {
      "format": 0,
      "certification_id": "abc123",
      "mutable_filter": "decision eq \"RESULT_DECISION_NONE\"",
      "order_by": "source.name ASC"
    }
    curl '{{VEZA_URL}}/api/preview/awf/certifications/f9123002-978f-f203bc9885ed/results/0' \
      -H 'authorization: Bearer '$token
    {
        "value": {
            "result_id": 0,
            "source": {
                "aliases": [],
                "created_at": "2023-05-03T14:25:43Z",
                "datasource_id": "datasource:google_cloud_workspace",
                "email_addresses": [
                    "[email protected]",
                    "[email protected]",
                    "[email protected]"
                ],
                "full_admin": false,
                "google_cloud_organization_name": "organizations/123456789012",
                "guest": false,
                "id": "datasource:112655590859538682841",
                "idp_unique_id": "[email protected]",
                "is_active": true,
                "last_login_at": "2023-05-10T15:25:04Z",
                "location_areas": [],
                "mfa_enabled": false,
                "name": "[email protected]",
                "organization_names": [],
                "provider_id": "datasource",
                "suspended": false,
                "type": "GoogleWorkspaceUser",
                "tags": [
                    {
                        "key": "department",
                        "type": "VEZA",
                        "value": "engineering"
                    }
                ]
            },
            "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": "[email protected]",
                    "name": "External User"
                }
            ],
            "signed_off_state": "NOT_SIGNED_OFF",
            "reviewer_assignment": null,
            "joined_nodes": {
                "idp": {
                    "canonical_name": "Jane Doe",
                    "department": "Engineering",
                    "email": "[email protected]",
                    "identity_type": "HUMAN",
                    "is_active": true,
                    "manager_email": "[email protected]",
                    "name": "jdoe",
                    "type": "OAA.custom_idp.IDPUser"
                }
            }
        }
    }

    List Certification Results

    Get results for workflow certifications

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

    Method
    syntax

    GET

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

    Parameters

    Name
    Type
    Req.
    Description

    hashtag
    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.

    See for more details on the Certification Result object.

    hashtag
    Enrichment fields

    Result objects include two enrichment fields when available:

    tags — An array of Veza tags on the source entity, returned as a property inside the source object. Each entry includes:

    Field
    Type
    Description

    joined_nodes — An object containing enriched attributes from connected systems, keyed by the alias configured in the workflow's join specification. Fields vary by node type and may include canonical_name, department, email, manager_email, identity_type, and custom properties prefixed with customprop_. This field is present when enrichment data is configured for the integration.

    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.

    hashtag
    Example Automations

    For more information about this feature see .

    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

    string

    Tag value, or empty string for boolean tags.

    certification_id

    string

    Y

    Certification id

    page_token

    int

    N

    key

    string

    Tag name

    type

    string

    Tag source. VEZA for platform-managed tags.

    Workflow Parameters

    next_page_token to list results from

    value

    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": [
                        "[email protected]",
                        "[email protected]",
                        "[email protected]"
                    ],
                    "full_admin": false,
                    "google_cloud_organization_name": "organizations/123456789012",
                    "guest": false,
                    "id": "datasource:112655590859538682841",
                    "idp_unique_id": "[email protected]",
                    "is_active": true,
                    "last_login_at": "2023-05-10T15:25:04Z",
                    "location_areas": [],
                    "mfa_enabled": false,
                    "name": "[email protected]",
                    "organization_names": [],
                    "provider_id": "datasource",
                    "suspended": false,
                    "type": "GoogleWorkspaceUser",
                    "tags": [
                        {
                            "key": "department",
                            "type": "VEZA",
                            "value": "engineering"
                        }
                    ]
                },
                "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": "[email protected]",
                        "name": "External User"
                    }
                ],
                "signed_off_state": "NOT_SIGNED_OFF",
                "reviewer_assignment": null,
                "joined_nodes": {
                    "idp": {
                        "canonical_name": "Jane Doe",
                        "department": "Engineering",
                        "email": "[email protected]",
                        "identity_type": "HUMAN",
                        "is_active": true,
                        "manager_email": "[email protected]",
                        "name": "jdoe",
                        "type": "OAA.custom_idp.IDPUser"
                    }
                }
            },
            {
                "result_id": 1,
                "source": {
                    "aliases": [],
                    "created_at": "2023-05-03T14:25:43Z",
                    "datasource_id": "datasource:google_cloud_workspace",
                    "email_addresses": [
                        "[email protected]",
                        "[email protected]",
                        "[email protected]"
                    ],
                    "full_admin": false,
                    "google_cloud_organization_name": "organizations/123456789012",
                    "guest": false,
                    "id": "datasource:112655590859538682841",
                    "idp_unique_id": "[email protected]",
                    "is_active": true,
                    "last_login_at": "2023-05-10T15:25:04Z",
                    "location_areas": [],
                    "mfa_enabled": false,
                    "name": "[email protected]",
                    "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": "[email protected]",
                        "name": "External User"
                    }
                ],
                "signed_off_state": "NOT_SIGNED_OFF",
                "reviewer_assignment": null
            }
        ],
        "next_page_token": "EAI=",
        "has_more": true,
        "has_previous": false
    }
    You will need an API token with root team or administrator permissions to manage Automations.

    hashtag
    Key Concepts

    When working with the Automations API, it is important to understand the relationship between three identifiers:

    ID Type
    Description
    Scope

    Automation ID

    Unique identifier for a reusable Automation rule

    Global (can be attached to multiple workflows)

    Workflow ID

    Unique identifier for an Access Review configuration

    Defines the query, reviewers, and settings for reviews

    At an API level,

    • An Automation is a reusable rule that can be attached to one or more Workflows

    • A Workflow (review configuration) defines how reviews are created and can have multiple Certifications over time

    • A Certification is a single instance of a review where Automations run against the results

    hashtag
    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.

    hashtag
    Automation Object Schema

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

    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).

    hashtag
    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.

    hashtag
    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.

    hashtag
    Filtering by Joined Node Attributes

    When an Access Review configuration includes IdP or HRIS enrichment, you can filter on enriched entity attributes in Automations. Reference joined nodes by their alias directly (e.g., idp.attribute), not using joined_nodes.idp.attribute.

    For complete guidance on finding aliases, filter syntax, and examples, see Using Enrichment Data in Automations.

    circle-exclamation

    Early Access: Filtering by joined node attributes in Automations is currently in early access. Contact Veza Support for the latest status.

    hashtag
    Filtering by Mutable Fields

    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"

    hashtag
    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

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

    • highlight_color (String): Hex color code for custom row highlighting (e.g., #FF0000, #00FF00). Only applies when display_style is HIGHLIGHT. Must be a valid 6-digit hex color in the format #RRGGBB. If omitted, the default highlight color is used.

    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;

    hashtag
    reviewer_assignment (Object)

    The preview API does not currently support Reviewer assignment.

    hashtag
    Preview API Documentation

    Use the endpoints documented below to create and manage automations:

    hashtag
    List Automations

    • Endpoint: /api/preview/awf/automations

    • Method: GET

    • Description: Returns all Automations and configuration details.

    Returns all Automations in a values array.

    hashtag
    Update Automation

    • Endpoint: /api/preview/awf/automations

    • Method: PUT

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

    hashtag
    Create Automation

    • Endpoint: /api/preview/awf/automations

    • Method: POST

    • Description: Creates a new Automation.

    hashtag
    Get Automation

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

    • Method: GET

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

    hashtag
    Delete Automation

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

    • Method: DELETE

    • Description: Deletes a specific Automation by its ID.

    hashtag
    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.

    hashtag
    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.

    hashtag
    Detach Automations

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

    • Method: POST

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

    Intelligent Automations

    Outlier Detection

    Configure outlier detection settings to identify anomalous access patterns in Access Reviews.

    circle-exclamation

    Early Access Feature: Outlier Detection is currently in Early Access and available via API only. The feature and API are subject to change. Contact your Veza Customer Success Manager to enable this feature for your tenant.

    Configure outlier detection to automatically identify and flag anomalous access patterns during Access Reviews. The Manager-Centric algorithm compares each user's access to their peer group and detects access held by fewer than a specified threshold percentage of peers, helping reviewers focus on unusual or potentially risky permissions.

    hashtag
    How Outlier Detection Works

    The Manager-Centric outlier detection algorithm uses statistical analysis to identify rare access patterns:

    1. Peer Grouping: Users are grouped based on configurable properties (default: users sharing the same manager)

    2. Statistical Analysis: For each destination (resource/permission) in the review, Veza calculates what percentage of the peer group has access using the Wilson score confidence interval method at 95% confidence

    3. Threshold Comparison: Access paths where the statistical lower bound is at or below the configured threshold are flagged as outliers

    hashtag
    Default Behavior

    By default, outlier detection uses:

    • Grouping: Users with the same manager (manager_idp_unique_id property)

    • Threshold: 15% (access held by ≤15% of peers is flagged as an outlier)

    hashtag
    Example Scenario

    Consider an Access Review for Okta groups:

    • 100 users report to Manager A

    • 95 of them have access to the "Engineering-All-Hands" group

    • 5 users have access to the "Admin-Production-Access" group

    Given a 15% threshold:

    • "Engineering-All-Hands" access (95% of peers) is not flagged, as this is normal access

    • "Admin-Production-Access" (5% of peers) is flagged as an outlier, as this is rare access

    The reviewer sees a warning on those 5 rows that this access is anomalous within the peer group — no more than 15% of peers with shared characteristics have it.

    hashtag
    API Endpoints

    Administrators can customize outlier detection using APIs:

    hashtag
    Get Outlier Detection Configuration

    GET /api/private/workflows/access/global_settings/manager_centric_config

    Retrieve the current outlier detection configuration, either globally or for a specific review configuration.

    hashtag
    Parameters

    Name
    Type
    Required
    In
    Description

    hashtag
    Example: Get Global Configuration

    hashtag
    Example: Get Configuration for Specific Review

    hashtag
    Response

    hashtag
    Set Outlier Detection Configuration

    PUT /api/private/workflows/access/global_settings/manager_centric_config

    Update the outlier detection configuration globally or for a specific review configuration.

    hashtag
    Parameters

    Name
    Type
    Required
    Description

    hashtag
    Example: Set Global Configuration

    hashtag
    Example: Set Configuration for Specific Review

    hashtag
    Response

    hashtag
    Grouping Properties

    Grouping properties define how users are organized into peer groups for outlier analysis. You can specify properties from:

    • Source nodes (the users/identities in the review)

    • Destination nodes (the resources/permissions being reviewed)

    • Enriched/joined nodes (additional data joined to the query, such as manager information from an IdP)

    hashtag
    Property Reference Schema

    Each property reference has these fields:

    Field
    Type
    Required
    Description

    hashtag
    Target Node Types

    hashtag
    SOURCE Node Properties

    Properties from the source entities in the review (typically users/identities).

    Common source properties:

    • department - User's department

    • location - User's location

    • manager_idp_unique_id - User's manager identifier (default)

    Example:

    hashtag
    DESTINATION Node Properties

    Properties from the destination entities (resources/permissions being reviewed).

    Common destination properties:

    • classification - Resource classification level

    • data_sensitivity - Data sensitivity level

    • owner - Resource owner

    Example:

    hashtag
    JOINED Node Properties (Enrichment)

    Properties from enriched/joined metadata from another data source. These require the review query to include a JoinNodeSpec that joins additional data (such as manager information from an IdP).

    Example:

    This groups all users by their manager's department, requiring the review query to join the manager data with the alias "manager".

    hashtag
    Configuration Examples

    hashtag
    Example 1: Default Manager-Based Grouping

    Groups users by manager with a 15% threshold (default configuration):

    Use case: Identify access that's unusual compared to direct peers reporting to the same manager.

    hashtag
    Example 2: Department and Location Grouping

    Groups users by both department and location with a 10% threshold:

    Use case: Identify access that's rare among users in the same department and office location.

    hashtag
    Example 3: No Grouping (Population-Wide)

    Compares each user to the entire population with 5% threshold:

    Use case: Flag extremely rare access across the entire organization, regardless of role or department.

    hashtag
    Example 4: Resource Classification Grouping

    Groups by destination resource classification with a 20% threshold:

    Use case: Identify unusual access patterns within resources of the same classification level.

    hashtag
    Example 5: Manager's Department (Enrichment)

    Groups by the manager's department (requires query enrichment) with a 15% threshold:

    Use case: Identify access that's unusual among users whose managers are in the same department, useful in matrix organizations.

    hashtag
    Use Cases

    hashtag
    Finance Audit Compliance

    Scenario: Reviewing access to financial systems where SOX compliance requires attention to outlier access.

    Configuration:

    Users with access held by ≤5% of their department peers are flagged for additional scrutiny.

    hashtag
    Engineering Production Access

    Scenario: Reviewing production system access where most engineers shouldn't have admin rights.

    Configuration:

    Identifies engineers with production access that is unusual within their team, considering the environment.

    hashtag
    Role-Based Access Review

    Scenario: Reviewing access where job role should predict permissions.

    Configuration:

    Flags access held by ≤15% of users with the same job role, indicating potential role creep or over-provisioning.

    hashtag
    Cross-Department Anomaly Detection

    Scenario: Detecting access patterns that are unusual for an entire department.

    Configuration:

    Identifies access held by ≤8% of users in the same department and location, flagging potentially inappropriate cross-functional access.

    hashtag
    Important Considerations

    circle-info

    Configuration Scope: Settings can be applied globally (affecting all new reviews by default) or per-review configuration. Review-specific settings override global settings for reviews created from that configuration.

    circle-exclamation

    Property Availability: Grouping properties must exist in your access review query results. If a specified property doesn't exist for source/destination/joined nodes, outlier detection may not function as expected. Verify property names match your data schema.

    circle-info

    Statistical Confidence: The algorithm uses the Wilson score confidence interval at 95% confidence level to ensure statistically sound outlier detection even with small peer groups. Peer groups with fewer than 3 members are excluded from outlier analysis to maintain statistical validity.

    circle-check

    Threshold Tuning: Start with the default 15% threshold and adjust based on your organization's risk tolerance:

    • Lower thresholds (5-10%): More sensitive, flags only the rarest access

    circle-info

    Enrichment Requirements: When using TARGET_NODE_JOINED properties, ensure your Access Review query includes the corresponding JoinNodeSpec with the matching alias. See for enrichment configuration.

    hashtag
    Related Documentation

    • - Overview of all Access Reviews settings

    • - Complete Access Reviews documentation

    {
      "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",
        "highlight_color": "#FF6B35"
      }
    }
    {
      "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"
      }
    }
    {
      "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",
        "highlight_color": "string"
      }
    }

    "SIGNED_OFF"

    SUGGEST_REJECT: Mark the row as suggested for rejection

    Certification ID

    Unique identifier for a specific Access Review instance created from a workflow

    A single review cycle with results to act upon

    get
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Responses
    chevron-right
    200

    OK

    application/json
    idstringOptional
    namestringOptional
    descriptionstringOptional
    priorityinteger · int32Optional
    attach_to_new_workflowsbooleanOptional
    opt_inbooleanOptional
    filterstringOptional
    mutable_filterstringOptional
    decisioninteger · enumOptional
    signed_off_stateinteger · enumOptional
    notesstringOptional
    users_managerbooleanOptional
    resource_managersbooleanOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    reviewers_managers_for_approval_levelsinteger · enum[]Optional

    This is a list of approval levels. For each approval level listed, we will attempt to assign managers of the reviewers assigned for that approval level. For example, if this assignment instruction is for the second approval level and the first approval level is specified here, we will assign the manager of the reviewer from the first approval level for the second approval level reviewer. Approval levels are "Zero Indexed" so the first approval level is 0, the second is 1, etc. This is only supported for review creation, it is not supported for updating reviewers of existing results.

    display_styleinteger · enumOptional
    display_textstringOptional

    The display text can be used to show a message to the user when the automation is applied. Currently supported for display_style type actions.

    highlight_colorstringOptional
    chevron-right
    default

    Default error response

    application/json
    get
    /api/preview/awf/automations
    put
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Body
    idstringOptional
    namestringOptional
    descriptionstringOptional
    priorityinteger · int32Optional
    attach_to_new_workflowsbooleanOptional
    opt_inbooleanOptional
    filterstringOptional
    mutable_filterstringOptional
    decisioninteger · enumOptional
    signed_off_stateinteger · enumOptional
    notesstringOptional
    users_managerbooleanOptional
    resource_managersbooleanOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    reviewers_managers_for_approval_levelsinteger · enum[]Optional

    This is a list of approval levels. For each approval level listed, we will attempt to assign managers of the reviewers assigned for that approval level. For example, if this assignment instruction is for the second approval level and the first approval level is specified here, we will assign the manager of the reviewer from the first approval level for the second approval level reviewer. Approval levels are "Zero Indexed" so the first approval level is 0, the second is 1, etc. This is only supported for review creation, it is not supported for updating reviewers of existing results.

    display_styleinteger · enumOptional
    display_textstringOptional

    The display text can be used to show a message to the user when the automation is applied. Currently supported for display_style type actions.

    highlight_colorstringOptional
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    chevron-right
    default

    Default error response

    application/json
    put
    /api/preview/awf/automations
    post
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Body
    namestringOptional
    descriptionstringOptional
    priorityinteger · int32Optional
    attach_to_new_workflowsbooleanOptional
    opt_inbooleanOptional
    filterstringOptional
    mutable_filterstringOptional
    decisioninteger · enumOptional
    signed_off_stateinteger · enumOptional
    notesstringOptional
    users_managerbooleanOptional
    resource_managersbooleanOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    reviewers_managers_for_approval_levelsinteger · enum[]Optional

    This is a list of approval levels. For each approval level listed, we will attempt to assign managers of the reviewers assigned for that approval level. For example, if this assignment instruction is for the second approval level and the first approval level is specified here, we will assign the manager of the reviewer from the first approval level for the second approval level reviewer. Approval levels are "Zero Indexed" so the first approval level is 0, the second is 1, etc. This is only supported for review creation, it is not supported for updating reviewers of existing results.

    display_styleinteger · enumOptional
    display_textstringOptional

    The display text can be used to show a message to the user when the automation is applied. Currently supported for display_style type actions.

    highlight_colorstringOptional
    Responses
    chevron-right
    200

    OK

    application/json
    idstringOptional
    chevron-right
    default

    Default error response

    application/json
    post
    /api/preview/awf/automations
    get
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Path parameters
    idstringRequired
    Responses
    chevron-right
    200

    OK

    application/json
    idstringOptional
    namestringOptional
    descriptionstringOptional
    priorityinteger · int32Optional
    attach_to_new_workflowsbooleanOptional
    opt_inbooleanOptional
    filterstringOptional
    mutable_filterstringOptional
    decisioninteger · enumOptional
    signed_off_stateinteger · enumOptional
    notesstringOptional
    users_managerbooleanOptional
    resource_managersbooleanOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    reviewers_managers_for_approval_levelsinteger · enum[]Optional

    This is a list of approval levels. For each approval level listed, we will attempt to assign managers of the reviewers assigned for that approval level. For example, if this assignment instruction is for the second approval level and the first approval level is specified here, we will assign the manager of the reviewer from the first approval level for the second approval level reviewer. Approval levels are "Zero Indexed" so the first approval level is 0, the second is 1, etc. This is only supported for review creation, it is not supported for updating reviewers of existing results.

    display_styleinteger · enumOptional
    display_textstringOptional

    The display text can be used to show a message to the user when the automation is applied. Currently supported for display_style type actions.

    highlight_colorstringOptional
    chevron-right
    default

    Default error response

    application/json
    get
    /api/preview/awf/automations/{id}
    delete
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Path parameters
    idstringRequired
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    chevron-right
    default

    Default error response

    application/json
    delete
    /api/preview/awf/automations/{id}
    post
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    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
    chevron-right
    200

    OK

    application/json
    objectOptional
    chevron-right
    default

    Default error response

    application/json
    post
    /api/preview/awf/automations:attach
    get
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Path parameters
    workflow_idstringRequired
    Responses
    chevron-right
    200

    OK

    application/json
    idstringOptional
    namestringOptional
    descriptionstringOptional
    priorityinteger · int32Optional
    attach_to_new_workflowsbooleanOptional
    opt_inbooleanOptional
    filterstringOptional
    mutable_filterstringOptional
    decisioninteger · enumOptional
    signed_off_stateinteger · enumOptional
    notesstringOptional
    users_managerbooleanOptional
    resource_managersbooleanOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    user_typestringOptional
    idstringOptional
    emailstringOptional
    namestringOptional
    alternate_emailstringOptional
    reviewers_managers_for_approval_levelsinteger · enum[]Optional

    This is a list of approval levels. For each approval level listed, we will attempt to assign managers of the reviewers assigned for that approval level. For example, if this assignment instruction is for the second approval level and the first approval level is specified here, we will assign the manager of the reviewer from the first approval level for the second approval level reviewer. Approval levels are "Zero Indexed" so the first approval level is 0, the second is 1, etc. This is only supported for review creation, it is not supported for updating reviewers of existing results.

    display_styleinteger · enumOptional
    display_textstringOptional

    The display text can be used to show a message to the user when the automation is applied. Currently supported for display_style type actions.

    highlight_colorstringOptional
    opt_inbooleanOptional
    chevron-right
    default

    Default error response

    application/json
    get
    /api/preview/awf/automations:attached/{workflow_id}
    post
    Authorizations
    AuthorizationstringRequired

    Veza API key for authentication. Generate keys in Administration > API Keys.

    Body

    Detaches an automation from one or all workflows

    idstringOptional
    workflow_idstringOptional
    allbooleanOptional
    Responses
    chevron-right
    200

    OK

    application/json
    objectOptional
    chevron-right
    default

    Default error response

    application/json
    post
    /api/preview/awf/automations:detach

    Reviewer Visibility: Flagged items are highlighted in the reviewer interface with explanations indicating the access is rare within the peer group

    Configuration object

    value.grouping_properties

    array

    No

    Array of property references defining how to group users into peer groups. If empty, uses population-wide comparison. See below.

    value.threshold

    number

    Yes

    Threshold percentage (0.0 to 1.0) below which access is considered an outlier. For example, 0.15 means access held by ≤15% of peers is flagged.

    Where the property comes from. Options: TARGET_NODE_UNSPECIFIED (default, assumes source), TARGET_NODE_SOURCE, TARGET_NODE_DESTINATION, TARGET_NODE_JOINED

    joined_node_alias

    string

    Conditional

    Required when target is TARGET_NODE_JOINED. The alias of the joined node from the review query's JoinNodeSpec

    is_active - Whether the user account is active

  • employee_type - Employee classification (e.g., full-time, contractor)

  • environment - Environment (prod, dev, test)

    Higher thresholds (20-25%): Less sensitive, flags more broadly uncommon access

    After implementing Outlier Detection, monitor reviewer feedback and adjust accordingly.

    workflow_id

    string

    No

    query

    Review configuration ID. If specified, returns the configuration for that specific review configuration. If omitted or empty, returns the global configuration.

    workflow_id

    string

    No

    Review configuration ID. If specified, applies settings only to that configuration. If omitted, updates the global default.

    value

    object

    property_name

    string

    Yes

    The name of the property to group by (e.g., "department", "location", "manager_idp_unique_id")

    target

    enum

    Access Reviews Configuration
    Access Reviews Settings
    Access Reviews Configuration

    Yes

    No

    curl 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/manager_centric_config' \
      -H 'Authorization: Bearer YOUR_BEARER_TOKEN' \
      -H 'Content-Type: application/json'
    curl 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/manager_centric_config?workflow_id=8ae1c414-3a76-46cb-950a-925316b3f264' \
      -H 'Authorization: Bearer YOUR_BEARER_TOKEN' \
      -H 'Content-Type: application/json'
    {
      "value": {
        "grouping_properties": [
          {
            "property_name": "manager_idp_unique_id"
          }
        ],
        "threshold": 0.15
      }
    }
    curl -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/manager_centric_config' \
      -H 'Authorization: Bearer YOUR_BEARER_TOKEN' \
      -H 'Content-Type: application/json' \
      -d '{
        "value": {
          "grouping_properties": [
            {
              "property_name": "department",
              "target": "TARGET_NODE_SOURCE"
            },
            {
              "property_name": "location",
              "target": "TARGET_NODE_SOURCE"
            }
          ],
          "threshold": 0.1
        }
      }'
    curl -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/global_settings/manager_centric_config' \
      -H 'Authorization: Bearer YOUR_BEARER_TOKEN' \
      -H 'Content-Type: application/json' \
      -d '{
        "workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264",
        "value": {
          "grouping_properties": [
            {
              "property_name": "manager_idp_unique_id"
            }
          ],
          "threshold": 0.2
        }
      }'
    {}
    {
      "property_name": "department",
      "target": "TARGET_NODE_SOURCE"
    }
    {
      "property_name": "classification",
      "target": "TARGET_NODE_DESTINATION"
    }
    {
      "property_name": "department",
      "target": "TARGET_NODE_JOINED",
      "joined_node_alias": "manager"
    }
    {
      "value": {
        "grouping_properties": [
          {
            "property_name": "manager_idp_unique_id"
          }
        ],
        "threshold": 0.15
      }
    }
    {
      "value": {
        "grouping_properties": [
          {
            "property_name": "department",
            "target": "TARGET_NODE_SOURCE"
          },
          {
            "property_name": "location",
            "target": "TARGET_NODE_SOURCE"
          }
        ],
        "threshold": 0.1
      }
    }
    {
      "value": {
        "grouping_properties": [],
        "threshold": 0.05
      }
    }
    {
      "value": {
        "grouping_properties": [
          {
            "property_name": "classification",
            "target": "TARGET_NODE_DESTINATION"
          }
        ],
        "threshold": 0.2
      }
    }
    {
      "value": {
        "grouping_properties": [
          {
            "property_name": "department",
            "target": "TARGET_NODE_JOINED",
            "joined_node_alias": "manager"
          }
        ],
        "threshold": 0.15
      }
    }
    {
      "value": {
        "grouping_properties": [
          {
            "property_name": "department",
            "target": "TARGET_NODE_SOURCE"
          }
        ],
        "threshold": 0.05
      }
    }
    {
      "value": {
        "grouping_properties": [
          {
            "property_name": "team",
            "target": "TARGET_NODE_SOURCE"
          },
          {
            "property_name": "environment",
            "target": "TARGET_NODE_DESTINATION"
          }
        ],
        "threshold": 0.1
      }
    }
    {
      "value": {
        "grouping_properties": [
          {
            "property_name": "job_role",
            "target": "TARGET_NODE_SOURCE"
          }
        ],
        "threshold": 0.15
      }
    }
    {
      "value": {
        "grouping_properties": [
          {
            "property_name": "department",
            "target": "TARGET_NODE_SOURCE"
          },
          {
            "property_name": "location",
            "target": "TARGET_NODE_SOURCE"
          }
        ],
        "threshold": 0.08
      }
    }
    Grouping Properties
    {}
    {
      "id": "text"
    }
    {}
    {}
    GET /api/preview/awf/automations HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    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",
                  "alternate_email": "text"
                }
              ],
              "fallback_reviewers": [
                {
                  "user_type": "text",
                  "id": "text",
                  "email": "text",
                  "name": "text",
                  "alternate_email": "text"
                }
              ],
              "reviewers_managers_for_approval_levels": [
                1
              ]
            },
            "display_style": 1,
            "display_text": "text",
            "highlight_color": "text"
          }
        }
      ]
    }
    PUT /api/preview/awf/automations HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 644
    
    {
      "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",
                "alternate_email": "text"
              }
            ],
            "fallback_reviewers": [
              {
                "user_type": "text",
                "id": "text",
                "email": "text",
                "name": "text",
                "alternate_email": "text"
              }
            ],
            "reviewers_managers_for_approval_levels": [
              1
            ]
          },
          "display_style": 1,
          "display_text": "text",
          "highlight_color": "text"
        }
      }
    }
    POST /api/preview/awf/automations HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 622
    
    {
      "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",
              "alternate_email": "text"
            }
          ],
          "fallback_reviewers": [
            {
              "user_type": "text",
              "id": "text",
              "email": "text",
              "name": "text",
              "alternate_email": "text"
            }
          ],
          "reviewers_managers_for_approval_levels": [
            1
          ]
        },
        "display_style": 1,
        "display_text": "text",
        "highlight_color": "text"
      }
    }
    GET /api/preview/awf/automations/{id} HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    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",
                "alternate_email": "text"
              }
            ],
            "fallback_reviewers": [
              {
                "user_type": "text",
                "id": "text",
                "email": "text",
                "name": "text",
                "alternate_email": "text"
              }
            ],
            "reviewers_managers_for_approval_levels": [
              1
            ]
          },
          "display_style": 1,
          "display_text": "text",
          "highlight_color": "text"
        }
      }
    }
    DELETE /api/preview/awf/automations/{id} HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    {}
    POST /api/preview/awf/automations:attach HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 59
    
    {
      "id": "text",
      "workflow_id": "text",
      "all": true,
      "opt_in": true
    }
    GET /api/preview/awf/automations:attached/{workflow_id} HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    POST /api/preview/awf/automations:detach HTTP/1.1
    Host: your-tenant.vezacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 45
    
    {
      "id": "text",
      "workflow_id": "text",
      "all": true
    }
    {
      "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",
                    "alternate_email": "text"
                  }
                ],
                "fallback_reviewers": [
                  {
                    "user_type": "text",
                    "id": "text",
                    "email": "text",
                    "name": "text",
                    "alternate_email": "text"
                  }
                ],
                "reviewers_managers_for_approval_levels": [
                  1
                ]
              },
              "display_style": 1,
              "display_text": "text",
              "highlight_color": "text"
            }
          },
          "opt_in": true
        }
      ]
    }

    Workflow Parameters Reference

    Workflows, certifications, and result details

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

    hashtag
    Workflow Properties

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

    Name
    Type
    Description

    hashtag
    Certification Properties

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

    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:

    Name
    Type
    Description

    See for more details on query construction.

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

    Name
    Type
    Description

    States can be:

    • CERT_STATE_SEARCHING // The query is still running

    • CERT_STATE_IN_PROGRESS // the certification is being reviewed

    • CERT_STATE_COMPLETED

    hashtag
    Result Properties

    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

    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

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

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

    hashtag
    ResultNode

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

    Name
    type
    Description

    hashtag
    WorkflowUser

    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.

    • 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.

    hashtag
    ActionLog

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

    Name
    Type
    Description

    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:

    hashtag
    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

    owner

    object

    Owner user details

    notes

    string

    Workflow notes

    query

    WorkflowQuery object

    Workflow search conditions

    creator

    object

    Creator user details

    created_at

    string (RFC 3339 timestamp)

    Creation date

    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

    object

    List of reviewers

    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

    object

    Certification creator details

    completed_by

    object

    User who marked certification as complete

    total_result_count

    int

    Total query results

    results_updated_at

    string (RFC 3339 timestamp)

    Timestamp

    results_updated_by

    object

    User details

    total_complete_count

    int

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

    creator

    object

    User details

    created_at

    string (RFC 3339 timestamp)

    Timestamp

    updated_at

    string (RFC 3339 timestamp)

    Timestamp

    updated_by

    object

    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"

    // the review of the certification is complete

    array

    Log of previous actions on the result

    decision

    string

    Row decision

    destination

    object

    The result destination (typically a resource)

    notes

    string

    The most recent note applied to the result

    notification_response_infos

    array

    Error message and status for Webhook integrations, pushed with

    notification_status

    string

    Whether the integration triggered successfully

    result_id

    int

    Result unique identifier for the certification

    reviewers

    Array of

    Reviewer details

    reviewer_assignment

    ReviewerAssignmentInstructions object

    Instructions for fallback and auto-assigned reviewers

    signed_off_at

    string (RFC 3339 timestamp)

    signed_off_by

    object

    Details for a single reviewer

    signed_off_state

    string

    UNKNOWN_SIGNED_OFF NOT_SIGNED_OFF SIGNED_OFF

    source

    object

    Result source (typically a principal)

    updated_at

    string (RFC 3339 timestamp)

    updated_by

    object

    waypoint

    object

    Related intermediate entity details, if specified by the workflow query

    // The access described in the result row isn't correct
  • RESULT_DECISION_FIXED // The access was rejected, but has been fixed

  • string

    Entity UID

    properties

    key:value pair

    Entity properties

    string

    User email address

    name

    string

    Full username

    string

    RFC 3339 timestamp

    decision_detail

    object

    Decision type and any notes

    workflow_id

    string

    Workflow GUID

    name

    string

    Workflow display name

    description

    string

    certification_id

    string

    Certification GUID

    workflow_id

    string

    Workflow GUID

    state

    AccessCertState

    Certification status

    snapshot_time

    string (RFC 3339 timestamp)

    Date of graph snapshot at certification creation

    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

    type

    string

    Entity type

    name

    string

    Entity name

    user_type

    string

    SSO entity type or localCookieUser

    id

    string

    User GUID

    action

    string

    Action log event type

    user

    WorkflowUser object

    Reviewer details

    Listing access certifications
    Query Builder API
    Certification results
    action log
    global IdP settings
    List Reviewer Infos

    Extended description

    query_used

    started_at

    action_log_entries

    id

    email

    time

    {
      "entries": [
        {
          "action": "REVIEWER_ASSIGNED",
          "user": {
            "user_type": "localCookieUser",
            "id": "e5aeaaf6-5d7a-4982-aa61-d0e6dea612a5",
            "email": "[email protected]",
            "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": "[email protected]",
                "name": "docs"
              }
            ]
          }
        },
        {
          "action": "DECISION",
          "user": {
            "user_type": "localCookieUser",
            "id": "e5aeaaf6-5d7a-4982-aa61-d0e6dea612a5",
            "email": "[email protected]",
            "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": "[email protected]",
            "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": "[email protected]",
            "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
        }
    }
    WorkflowUser
    WorkflowUser
    WorkflowUser
    WorkflowUser
    WorkflowUser
    WorkflowUser
    WorkflowUser
    WorkflowUser
    ActionLog
    ResultNode
    UpdateWebhookInfo
    WorkflowUsers
    WorkflowUser
    ResultNode
    WorkflowUser
    ResultNode