# <a id="bitdrift.public.unary.admin.v1.AdminService"></a>AdminService

**Source definition:** [`src/bitdrift/public/unary/admin/v1/api.proto#L16-L50`](<https://github.com/bitdriftlabs/api/blob/main/src/bitdrift/public/unary/admin/v1/api.proto#L16-L50>)

Manages administrative settings including Slack integrations, notification groups, views, API/SDK keys, users, teams, and connectors.

### <a id="CreateKey"></a>CreateKey

Creates an API key or SDK key for the authenticated user.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">CreateKeyRequest</i>](bitdrift_public_unary_admin_v1_CreateKeyRequest.md "bitdrift.public.unary.admin.v1.CreateKeyRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">CreateKeyResponse</i>](bitdrift_public_unary_admin_v1_CreateKeyResponse.md "bitdrift.public.unary.admin.v1.CreateKeyResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.admin.v1.AdminService/CreateKey`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "name": "Example key",
  "sdk_key": {
    "app_id_postfix": ".staging",
    "bundle_id_regex": "io.example.app"
  }
}
```

<p class="h4">Example Response</p>
```json
{
  "key": {
    "created_at": "2024-01-15T09:30:00Z",
    "expires_at": "2024-01-15T09:30:00Z",
    "id": 123,
    "name": "Example key",
    "revoked": false,
    "sdk_key": {
      "app_id_postfix": ".staging",
      "bundle_id_regex": "io.example.app",
      "key": "ZXhhbXBsZS1zZGsta2V5LWJhc2U2NA=="
    }
  }
}
```

### <a id="DeleteConnector"></a>DeleteConnector

Deletes a connector by ID.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">DeleteConnectorRequest</i>](bitdrift_public_unary_admin_v1_DeleteConnectorRequest.md "bitdrift.public.unary.admin.v1.DeleteConnectorRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">DeleteConnectorResponse</i>](bitdrift_public_unary_admin_v1_DeleteConnectorResponse.md "bitdrift.public.unary.admin.v1.DeleteConnectorResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.admin.v1.AdminService/DeleteConnector`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "name": "example-connector"
}
```

<p class="h4">Example Response</p>
```json
{}
```

### <a id="DeleteNotificationGroup"></a>DeleteNotificationGroup

Deletes a notification group for the organization.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">DeleteNotificationGroupRequest</i>](bitdrift_public_unary_admin_v1_DeleteNotificationGroupRequest.md "bitdrift.public.unary.admin.v1.DeleteNotificationGroupRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">DeleteNotificationGroupResponse</i>](bitdrift_public_unary_admin_v1_DeleteNotificationGroupResponse.md "bitdrift.public.unary.admin.v1.DeleteNotificationGroupResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.admin.v1.AdminService/DeleteNotificationGroup`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "name": "engineering-oncall"
}
```

<p class="h4">Example Response</p>
```json
{}
```

### <a id="GetConnectors"></a>GetConnectors

Lists all connectors for the organization.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetConnectorsRequest</i>](bitdrift_public_unary_admin_v1_GetConnectorsRequest.md "bitdrift.public.unary.admin.v1.GetConnectorsRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetConnectorsResponse</i>](bitdrift_public_unary_admin_v1_GetConnectorsResponse.md "bitdrift.public.unary.admin.v1.GetConnectorsResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.admin.v1.AdminService/GetConnectors`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{}
```

<p class="h4">Example Response</p>
```json
{
  "connectors": [
    {
      "cloudwatch_connector_config": {
        "region": "us-east-1",
        "role_arn": "arn:aws:iam::123456789012:role/CloudWatchConnectorRole"
      },
      "name": "example-connector"
    }
  ]
}
```

### <a id="GetKeys"></a>GetKeys

Lists the API and SDK keys available to the authenticated user.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetKeysRequest</i>](bitdrift_public_unary_admin_v1_GetKeysRequest.md "bitdrift.public.unary.admin.v1.GetKeysRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetKeysResponse</i>](bitdrift_public_unary_admin_v1_GetKeysResponse.md "bitdrift.public.unary.admin.v1.GetKeysResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.admin.v1.AdminService/GetKeys`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{}
```

<p class="h4">Example Response</p>
```json
{
  "keys": [
    {
      "created_at": "2024-01-15T09:30:00Z",
      "expires_at": "2024-01-15T09:30:00Z",
      "id": 123,
      "name": "Example key",
      "revoked": false,
      "sdk_key": {
        "app_id_postfix": ".staging",
        "bundle_id_regex": "io.example.app",
        "key": "ZXhhbXBsZS1zZGsta2V5LWJhc2U2NA=="
      }
    }
  ]
}
```

### <a id="GetNotificationGroups"></a>GetNotificationGroups

Lists all notification groups for the organization.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetNotificationGroupsRequest</i>](bitdrift_public_unary_admin_v1_GetNotificationGroupsRequest.md "bitdrift.public.unary.admin.v1.GetNotificationGroupsRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetNotificationGroupsResponse</i>](bitdrift_public_unary_admin_v1_GetNotificationGroupsResponse.md "bitdrift.public.unary.admin.v1.GetNotificationGroupsResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.admin.v1.AdminService/GetNotificationGroups`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{}
```

<p class="h4">Example Response</p>
```json
{
  "notification_groups": [
    {
      "created_at": "2024-01-15T09:30:00Z",
      "notification_group": {
        "datadog_notifications": [
          {
            "api_base_url": "https://navy.oncall.datadoghq.com",
            "api_key": "datadog-api-key",
            "application_key": "datadog-application-key",
            "severity": "HIGH",
            "team_handle": "backend-oncall"
          }
        ],
        "email_addresses": [
          "user@example.com"
        ],
        "name": "engineering-oncall",
        "pager_duty_notifications": [
          {
            "routing_key": "pagerduty-routing-key",
            "severity": "CRITICAL"
          }
        ],
        "slack_channels": [
          "#incident-response"
        ],
        "sns_topic_arns": [
          "arn:aws:sns:us-east-1:123456789012:incident-notifications"
        ]
      },
      "used_at": "2024-01-15T09:30:00Z"
    }
  ]
}
```

### <a id="RevokeKey"></a>RevokeKey

Revokes an API key or SDK key by ID.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">RevokeKeyRequest</i>](bitdrift_public_unary_admin_v1_RevokeKeyRequest.md "bitdrift.public.unary.admin.v1.RevokeKeyRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">RevokeKeyResponse</i>](bitdrift_public_unary_admin_v1_RevokeKeyResponse.md "bitdrift.public.unary.admin.v1.RevokeKeyResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.admin.v1.AdminService/RevokeKey`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "id": 123
}
```

<p class="h4">Example Response</p>
```json
{}
```

### <a id="TestAlertNotification"></a>TestAlertNotification

Sends a test alert notification to validate formatting and mentions.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">TestAlertNotificationRequest</i>](bitdrift_public_unary_admin_v1_TestAlertNotificationRequest.md "bitdrift.public.unary.admin.v1.TestAlertNotificationRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">TestAlertNotificationResponse</i>](bitdrift_public_unary_admin_v1_TestAlertNotificationResponse.md "bitdrift.public.unary.admin.v1.TestAlertNotificationResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.admin.v1.AdminService/TestAlertNotification`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "custom_notification_text": "@oncall-team Please investigate immediately.",
  "notification_group_names": [
    "engineering-oncall"
  ],
  "workflow_alert": {
    "workflow_id": "checkout-errors"
  }
}
```

<p class="h4">Example Response</p>
```json
{
  "errors": [
    "PagerDuty returned an authentication error"
  ]
}
```

### <a id="TestNotificationGroup"></a>TestNotificationGroup

Sends a test notification to all targets in a notification group.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">TestNotificationGroupRequest</i>](bitdrift_public_unary_admin_v1_TestNotificationGroupRequest.md "bitdrift.public.unary.admin.v1.TestNotificationGroupRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">TestNotificationGroupResponse</i>](bitdrift_public_unary_admin_v1_TestNotificationGroupResponse.md "bitdrift.public.unary.admin.v1.TestNotificationGroupResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.admin.v1.AdminService/TestNotificationGroup`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "name": "engineering-oncall"
}
```

<p class="h4">Example Response</p>
```json
{
  "errors": [
    "Slack channel not found"
  ]
}
```

### <a id="UpsertConnector"></a>UpsertConnector

Creates or updates a connector for the organization.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">UpsertConnectorRequest</i>](bitdrift_public_unary_admin_v1_UpsertConnectorRequest.md "bitdrift.public.unary.admin.v1.UpsertConnectorRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">UpsertConnectorResponse</i>](bitdrift_public_unary_admin_v1_UpsertConnectorResponse.md "bitdrift.public.unary.admin.v1.UpsertConnectorResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.admin.v1.AdminService/UpsertConnector`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "connector": {
    "cloudwatch_connector_config": {
      "region": "us-east-1",
      "role_arn": "arn:aws:iam::123456789012:role/CloudWatchConnectorRole"
    },
    "name": "example-connector"
  }
}
```

<p class="h4">Example Response</p>
```json
{}
```

### <a id="UpsertNotificationGroup"></a>UpsertNotificationGroup

Creates or updates a notification group for the organization.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">UpsertNotificationGroupRequest</i>](bitdrift_public_unary_admin_v1_UpsertNotificationGroupRequest.md "bitdrift.public.unary.admin.v1.UpsertNotificationGroupRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">admin</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">UpsertNotificationGroupResponse</i>](bitdrift_public_unary_admin_v1_UpsertNotificationGroupResponse.md "bitdrift.public.unary.admin.v1.UpsertNotificationGroupResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.admin.v1.AdminService/UpsertNotificationGroup`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "notification_group": {
    "datadog_notifications": [
      {
        "api_base_url": "https://navy.oncall.datadoghq.com",
        "api_key": "datadog-api-key",
        "application_key": "datadog-application-key",
        "severity": "HIGH",
        "team_handle": "backend-oncall"
      }
    ],
    "email_addresses": [
      "user@example.com"
    ],
    "name": "engineering-oncall",
    "pager_duty_notifications": [
      {
        "routing_key": "pagerduty-routing-key",
        "severity": "CRITICAL"
      }
    ],
    "slack_channels": [
      "#incident-response"
    ],
    "sns_topic_arns": [
      "arn:aws:sns:us-east-1:123456789012:incident-notifications"
    ]
  }
}
```

<p class="h4">Example Response</p>
```json
{}
```

