---
title: "Create a new approval workflow"
method: POST
path: "/approval_workflows"
---

# Create a new approval workflow

`POST /approval_workflows`

## Request

- Base URL: `https://api.border0.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.border0.com/approval_workflows`
- Auth: API key in header `Authorization`

## Request body

- V1ApprovalWorkflowPayload
  - `allow_self_approval` boolean
  - `approver_group_ids` string[]
  - `approver_user_ids` string[]
  - `description` string
  - `name` string, required
  - `policy_data` object
  - `requester_group_ids` string[]
  - `requester_user_ids` string[]
  - `socket_ids` string[]
  - `socket_tags` object

## Response `201`

Created

- SerializerApprovalWorkflow
  - `allow_self_approval` boolean
  - `approval_workflow_id` string
  - `approver_group_ids` string[]
  - `approver_groups` SerializerIAMGroup[]
    - `access_graph` SerializerAccessGraph
      - `edges` SerializerAccessGraphEdge[]
        - `dst_node_id` string
        - `edge_id` string
        - `src_node_id` string
      - `nodes` SerializerAccessGraphNode[]
        - `label` string
        - `metadata` object
        - `node_id` string
        - `resource_id` string
        - `resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
        - `warnings` SerializerWarning[]
          - `args` object
          - `code` string
      - `principal_resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
    - `directory_service` SerializerDirectoryService
      - `display_name` string
      - `id` string
      - `service_type` string
    - `display_name` string
    - `group_type` string
    - `id` string
    - `members` SerializerIAMUser[]
      - `access_graph` SerializerAccessGraph
        - `edges` SerializerAccessGraphEdge[]
          - `dst_node_id` string
          - `edge_id` string
          - `src_node_id` string
        - `nodes` SerializerAccessGraphNode[]
          - `label` string
          - `metadata` object
          - `node_id` string
          - `resource_id` string
          - `resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
          - `warnings` SerializerWarning[]
            - `args` object
            - `code` string
        - `principal_resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
      - `directory_service` SerializerDirectoryService
        - `display_name` string
        - `id` string
        - `service_type` string
      - `display_name` string
      - `email` string
      - `id` string
      - `image_url` string
      - `role` string
      - `user_type` string
  - `approver_user_ids` string[]
  - `approvers` SerializerIAMUser[]
    - `access_graph` SerializerAccessGraph
      - `edges` SerializerAccessGraphEdge[]
        - `dst_node_id` string
        - `edge_id` string
        - `src_node_id` string
      - `nodes` SerializerAccessGraphNode[]
        - `label` string
        - `metadata` object
        - `node_id` string
        - `resource_id` string
        - `resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
        - `warnings` SerializerWarning[]
          - `args` object
          - `code` string
      - `principal_resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
    - `directory_service` SerializerDirectoryService
      - `display_name` string
      - `id` string
      - `service_type` string
    - `display_name` string
    - `email` string
    - `id` string
    - `image_url` string
    - `role` string
    - `user_type` string
  - `description` string
  - `name` string
  - `requester_group_ids` string[]
  - `requester_groups` SerializerIAMGroup[]
    - `access_graph` SerializerAccessGraph
      - `edges` SerializerAccessGraphEdge[]
        - `dst_node_id` string
        - `edge_id` string
        - `src_node_id` string
      - `nodes` SerializerAccessGraphNode[]
        - `label` string
        - `metadata` object
        - `node_id` string
        - `resource_id` string
        - `resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
        - `warnings` SerializerWarning[]
          - `args` object
          - `code` string
      - `principal_resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
    - `directory_service` SerializerDirectoryService
      - `display_name` string
      - `id` string
      - `service_type` string
    - `display_name` string
    - `group_type` string
    - `id` string
    - `members` SerializerIAMUser[]
      - `access_graph` SerializerAccessGraph
        - `edges` SerializerAccessGraphEdge[]
          - `dst_node_id` string
          - `edge_id` string
          - `src_node_id` string
        - `nodes` SerializerAccessGraphNode[]
          - `label` string
          - `metadata` object
          - `node_id` string
          - `resource_id` string
          - `resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
          - `warnings` SerializerWarning[]
            - `args` object
            - `code` string
        - `principal_resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
      - `directory_service` SerializerDirectoryService
        - `display_name` string
        - `id` string
        - `service_type` string
      - `display_name` string
      - `email` string
      - `id` string
      - `image_url` string
      - `role` string
      - `user_type` string
  - `requester_user_ids` string[]
  - `requesters` SerializerIAMUser[]
    - `access_graph` SerializerAccessGraph
      - `edges` SerializerAccessGraphEdge[]
        - `dst_node_id` string
        - `edge_id` string
        - `src_node_id` string
      - `nodes` SerializerAccessGraphNode[]
        - `label` string
        - `metadata` object
        - `node_id` string
        - `resource_id` string
        - `resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
        - `warnings` SerializerWarning[]
          - `args` object
          - `code` string
      - `principal_resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
    - `directory_service` SerializerDirectoryService
      - `display_name` string
      - `id` string
      - `service_type` string
    - `display_name` string
    - `email` string
    - `id` string
    - `image_url` string
    - `role` string
    - `user_type` string
  - `socket_ids` string[]
  - `socket_tags` DatatypesJSONMap
  - `sockets` SerializerMinimalSocket[]
    - `alive` boolean
    - `dns_name` string
    - `name` string
    - `socket_id` string
    - `socket_type` string
    - `tags` object
  - `unique_approvers` SerializerIAMUser[]: all unique approvers including all group members
    - `access_graph` SerializerAccessGraph
      - `edges` SerializerAccessGraphEdge[]
        - `dst_node_id` string
        - `edge_id` string
        - `src_node_id` string
      - `nodes` SerializerAccessGraphNode[]
        - `label` string
        - `metadata` object
        - `node_id` string
        - `resource_id` string
        - `resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
        - `warnings` SerializerWarning[]
          - `args` object
          - `code` string
      - `principal_resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
    - `directory_service` SerializerDirectoryService
      - `display_name` string
      - `id` string
      - `service_type` string
    - `display_name` string
    - `email` string
    - `id` string
    - `image_url` string
    - `role` string
    - `user_type` string
  - `unique_requesters` SerializerIAMUser[]: all unique requesters including all group members
    - `access_graph` SerializerAccessGraph
      - `edges` SerializerAccessGraphEdge[]
        - `dst_node_id` string
        - `edge_id` string
        - `src_node_id` string
      - `nodes` SerializerAccessGraphNode[]
        - `label` string
        - `metadata` object
        - `node_id` string
        - `resource_id` string
        - `resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
        - `warnings` SerializerWarning[]
          - `args` object
          - `code` string
      - `principal_resource_type` 'user' | 'group' | 'service account' | 'policy' | 'socket'
    - `directory_service` SerializerDirectoryService
      - `display_name` string
      - `id` string
      - `service_type` string
    - `display_name` string
    - `email` string
    - `id` string
    - `image_url` string
    - `role` string
    - `user_type` string
  - `updated_at` string

## Other responses

- `401`: Unauthorized
- `404`: Not Found
- `500`: Internal Server Error

---

[API](https://skmtc.dev/border0/apis/border0-api.md) - [All operations](https://skmtc.dev/border0/apis/border0-api/llms.txt) - [OpenAPI document](https://skmtc.dev/border0/apis/border0-api/revisions/f0ccef7418d8?raw)
