{ "openapi": "3.0.3", "info": { "title": "BloodHound API", "contact": { "name": "BloodHound Enterprise Support", "url": "https://bloodhound.specterops.io/", "email": "support@specterops.io" }, "license": { "name": "Apache-2.0", "url": "https://www.apache.org/licenses/LICENSE-2.0" }, "version": "v2", "description": "This is the API that drives BloodHound Enterprise and Community Edition.\nEndpoint availability is denoted using the `Community` and `Enterprise` tags.\n\nContact information listed is for BloodHound Enterprise customers. To get help with\nBloodHound Community Edition, please join our\n[Slack community](https://ghst.ly/BHSlack/).\n\n## Authentication\n\nThe BloodHound API supports two kinds of authentication: JWT bearer tokens and Signed Requests.\nFor quick tests or one-time calls, the JWT used by your browser may be the simplest route. For\nmore secure and long lived API integrations, the recommended option is signed requests.\n\n### JWT Bearer Token\n\nThe API will accept calls using the following header structure in the HTTP request:\n```\nAuthorization: Bearer $JWT_TOKEN\n```\nIf you open the Network tab within your browser, you will see calls against the API made utilizing\nthis structure. JWT bearer tokens are supported by the BloodHound API, however it is recommended\nthey only be used for temporary access. JWT tokens expire after a set amount of time and require\nre-authentication using secret credentials.\n\n### Signed Requests\n\nSigned requests are the recommended form of authentication for the BloodHound API. Not only are\nsigned requests better for long lived integrations, they also provide more security for the\nrequests being sent. They provide authentication of the client, as well as verification of request\nintegrity when received by the server.\n\nSigned requests consist of three main parts: The client token ID, the request timestamp, and a\nbase64 encoded HMAC signature. These three pieces of information are sent with the request using\nthe following header structure:\n\n```\nAuthorization: bhesignature $TOKEN_ID\nRequestDate: $RFC3339_DATETIME\nSignature: $BASE64ENCODED_HMAC_SIGNATURE\n```\n\nTo use signed requests, you will need to generate an API token. Each API token generated in the\nBloodHound API comes with two parts: The Token ID, which is used in the `Authorization` header,\nand the Token Key, which is used as part of the HMAC hashing process. The token ID should be\nconsidered as public (like a username) and the token key should be considered secret (like a\npassword). Once an API token is generated, you can use the key to sign requests.\n\nFor more documentation about how to work with authentication in the API, including examples\nof how to generate an API token in the BloodHound UI, please refer to this support doc:\n[Working with the BloodHound API](https://bloodhound.specterops.io/integrations/bloodhound-api/working-with-api).\n\n#### Signed Request Pseudo-code Example\n\nFirst, a digest is initiated with HMAC-SHA-256 using the token key as the digest key:\n```python\ndigester = hmac.new(sha256, api_token_key)\n```\n\nOperationKey is the first HMAC digest link in the signature chain. This prevents replay attacks that\nseek to modify the request method or URI. It is composed of concatenating the request method and\nthe request URI with no delimiter and computing the HMAC digest using the token key as the digest\nsecret:\n```python\n# Example: GET /api/v2/test/resource HTTP/1.1\n# Signature Component: GET/api/v2/test/resource\ndigester.write(request_method + request_uri)\n\n# Update the digester for further chaining\ndigester = hmac.New(sha256, digester.hash())\n```\n\nDateKey is the next HMAC digest link in the signature chain. This encodes the RFC3339\nformatted datetime value as part of the signature to the hour to prevent replay\nattacks that are older than max two hours. This value is added to the signature chain\nby cutting off all values from the RFC3339 formatted datetime from the hours value\nforward:\n```python\n# Example: 2020-12-01T23:59:60Z\n# Signature Component: 2020-12-01T23\nrequest_datetime = date.now()\ndigester.write(request_datetime[:13])\n\n# Update the digester for further chaining\ndigester = hmac.New(sha256, digester.hash())\n```\n\nBody signing is the last HMAC digest link in the signature chain. This encodes the\nrequest body as part of the signature to prevent replay attacks that seek to modify\nthe payload of a signed request. In the case where there is no body content the\nHMAC digest is computed anyway, simply with no values written to the digester:\n```python\nif request.body is not empty:\n digester.write(request.body)\n```\n\nFinally, base64 encode the final hash and write the three required headers before\nsending the request:\n```python\nencoded_hash = base64_encode(digester.hash())\nrequest.header.write('Authorization', 'bhesignature ' + token_id)\nrequest.header.write('RequestDate', request_datetime)\nrequest.header.write('Signature', encoded_hash)\n```\n" }, "servers": [ { "url": "/", "description": "This is the base path for all endpoints, relative to the domain where the API is being hosted." } ], "security": [ { "JWTBearerToken": [] }, { "SignedRequest": [], "RequestDate": [], "HMACSignature": [] } ], "paths": { "/api/v2/login": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "Login", "summary": "Login to BloodHound", "description": "Login to BloodHound with user credentials or a one time password.", "tags": [ "Auth", "Community", "Enterprise" ], "security": [], "requestBody": { "description": "The request body for logging into the application. `secret` *or* `otp` is required, but not both.\n", "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "login_method", "username" ], "properties": { "login_method": { "description": "The type of login. Currently only `secret` is supported.", "type": "string", "enum": [ "secret" ] }, "username": { "type": "string" }, "secret": { "description": "The password for the user. This field can be used instead of `otp`.", "type": "string" }, "otp": { "description": "The One Time Password for a single login. This field can be used instead of `secret`", "type": "string" } } }, "example": { "login_method": "secret", "username": "cool_user@bloodhoundenterprise.io", "secret": "MySup3rS3cr3tPassw0rd!!!" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "user_id": { "type": "string", "format": "uuid" }, "auth_expired": { "type": "boolean" }, "session_token": { "type": "string", "format": "jwt" } } } } }, "example": { "data": { "user_id": "54623566-213a-4490-9c68-ac44c39b6590", "auth_expired": false, "session_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNTQ2MjM1NjYtMjEzYS00NDkwLTljNjgtYWM0NGMzOWI2NTkwIiwidXNlciI6ImNvb2xfdXNlckBibG9vZGhvdW5kZW50ZXJwcmlzZS5pbyIsImlhdCI6MTUxNjIzOTAyMn0.1WWo7XpE9a-v6MQ9tHC8ikxmvmS3PuD7bJyNi4hPr_Y" } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/logout": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "Logout", "summary": "Logout of BloodHound", "description": "Logout of BloodHound and delete the user session JWT.", "tags": [ "Auth", "Community", "Enterprise" ], "security": [], "responses": { "200": { "description": "**Success**\nThis response will contain no response body.\n", "content": { "text/plain": { "schema": { "type": "string" }, "example": "[this request has no response data]" } }, "headers": { "Location": { "description": "This is the location you will be redirected to after logging out.", "schema": { "type": "string" } } } }, "429": { "$ref": "#/components/responses/too-many-requests" } } } }, "/api/v2/self": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetSelf", "summary": "Get self", "description": "Get the currently authenticated requester details. For Community, this will only ever be valid for users. In Enterprise, this could be either a BloodHound user or a client (collector).\n", "tags": [ "Auth", "Community", "Enterprise" ], "security": [], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.response.authenticated-requester" } } } }, "429": { "$ref": "#/components/responses/too-many-requests" } } } }, "/api/v2/saml": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListSamlProviders", "summary": "List SAML Providers", "description": "**Deprecated**: This endpoint will no longer be supported in a future release. Please use `GET /api/v2/sso-providers` instead.\n", "deprecated": true, "tags": [ "Auth", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "saml_providers": { "type": "array", "items": { "$ref": "#/components/schemas/model.saml-provider" } } } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/saml/sso": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetSamlSignSignOnEndpoints", "summary": "Get all SAML sign on endpoints", "description": "**Deprecated**: This endpoint will no longer be supported in a future release. Please use `GET /api/v2/sso-providers` instead to list available SSO endpoints.\n", "deprecated": true, "tags": [ "Auth", "Community", "Enterprise" ], "security": [], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "endpoints": { "type": "array", "items": { "$ref": "#/components/schemas/model.saml-sign-on-endpoint" } } } } } } } } }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/saml/providers": { "post": { "operationId": "CreateSamlProvider", "summary": "Create a New SAML Provider from Metadata", "description": "**Deprecated**: This endpoint will no longer be supported in a future release. Please use `POST /api/v2/sso-providers/saml` instead.\n", "deprecated": true, "tags": [ "Auth", "Community", "Enterprise" ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "properties": { "name": { "type": "string", "description": "Name of the new SAML provider." }, "metadata": { "type": "string", "format": "binary", "description": "Metadata XML file." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.saml-provider" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/saml/providers/{saml_provider_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "description": "SAML Provider ID", "name": "saml_provider_id", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetSamlProvider", "summary": "Get SAML Provider", "description": "**Deprecated**: This endpoint will no longer be supported in a future release. Please use `GET /api/v2/sso-providers` to list all SAML providers instead.\n", "deprecated": true, "tags": [ "Auth", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.saml-provider" } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "DeleteSamlProvider", "summary": "Delete a SAML Provider", "description": "**Deprecated**: This endpoint will no longer be supported in a future release. Please use `DELETE /api/v2/sso-providers/{sso_provider_id}` instead.\n", "deprecated": true, "tags": [ "Auth", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "affected_user": { "type": "array", "items": { "$ref": "#/components/schemas/model.user" } } } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "409": { "description": "Conflict. The user is trying to delete their own SAML provider.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" } } } }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/sso-providers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListAuthProviders", "summary": "List SSO Providers", "description": "Lists all available SSO providers (SAML and OIDC)", "tags": [ "Auth", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.auth-provider" } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/sso-providers/oidc": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "CreateOIDCProvider", "summary": "Create OIDC Provider", "description": "Creates a new OIDC provider for SSO authentication", "tags": [ "Auth", "Community", "Enterprise" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "name", "issuer", "client_id", "config" ], "properties": { "name": { "type": "string", "description": "Name of the OIDC provider" }, "issuer": { "type": "string", "format": "url", "description": "URL of the OIDC issuer" }, "client_id": { "type": "string", "description": "Client ID for the OIDC provider" }, "config": { "type": "object", "properties": { "auto_provision": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "boolean that, if enabled, allows SSO providers to auto provision bloodhound users on initial login" }, "default_role_id": { "type": "integer", "format": "int32", "description": "default role id for the user created from SSO provider auto provision" }, "role_provision": { "type": "boolean", "description": "boolean that, if enabled, allows sso providers to manage roles for newly created users" } } } } } } } } } }, "responses": { "201": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.oidc-provider" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/sso-providers/saml": { "post": { "operationId": "CreateSSOSAMLProvider", "summary": "Create a New SAML Provider from Metadata", "description": "Creates a new SAML provider with the given name and metadata XML.", "tags": [ "Auth", "Community", "Enterprise" ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "required": [ "name", "metadata", "config.auto_provision.enabled", "config.auto_provision.default_role_id", "config.auto_provision.role_provision" ], "properties": { "name": { "type": "string", "description": "Name of the new SAML provider." }, "metadata": { "type": "string", "format": "binary", "description": "Metadata XML file." }, "config.auto_provision.enabled": { "type": "string", "example": "true", "description": "boolean that, if enabled, allows SSO providers to auto provision bloodhound users on initial login" }, "config.auto_provision.default_role_id": { "type": "string", "example": "3", "description": "default role id for the user created from SSO provider auto provision" }, "config.auto_provision.role_provision": { "type": "string", "example": "false", "description": "boolean that, if enabled, allows sso providers to manage roles for newly created users" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.saml-provider" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/sso-providers/{sso_provider_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "description": "SSO Provider ID", "name": "sso_provider_id", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "patch": { "operationId": "PatchSSOProvider", "summary": "Update SSO Provider", "description": "Updates an existing SSO provider. Updating saml provider requires a \"multipart/form-data\" body. Updating oidc provider requires \"application/json\" body. Response is respective provider", "tags": [ "Auth", "Community", "Enterprise" ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "properties": { "name": { "type": "string", "description": "Name of the new SAML provider." }, "metadata": { "type": "string", "format": "binary", "description": "Metadata XML file." }, "config.auto_provision.enabled": { "type": "string", "example": "true", "description": "boolean that, if enabled, allows SSO providers to auto provision bloodhound users on initial login" }, "config.auto_provision.default_role_id": { "type": "string", "example": "3", "description": "default role id for the user created from SSO provider auto provision" }, "config.auto_provision.role_provision": { "type": "string", "example": "false", "description": "boolean that, if enabled, allows sso providers to manage roles for newly created users" } } } }, "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the OIDC provider" }, "issuer": { "type": "string", "format": "url", "description": "URL of the OIDC issuer" }, "client_id": { "type": "string", "description": "Client ID for the OIDC provider" }, "config": { "type": "object", "properties": { "auto_provision": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "boolean that, if enabled, allows SSO providers to auto provision bloodhound users on initial login" }, "default_role_id": { "type": "integer", "format": "int32", "description": "default role id for the user created from SSO provider auto provision" }, "role_provision": { "type": "boolean", "description": "boolean that, if enabled, allows sso providers to manage roles for newly created users" } } } } } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.saml-provider" } } }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.oidc-provider" } } } ] } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "DeleteSSOProvider", "summary": "Delete SSO Provider", "description": "Deletes an existing SSO provider", "tags": [ "Auth", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "affected_users": { "type": "array", "items": { "$ref": "#/components/schemas/model.user" } } } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "409": { "description": "Conflict. The user is trying to delete their own SSO provider.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" } } } }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/sso-providers/{sso_provider_id}/signing-certificate": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "description": "SSO Provider ID for a SAML provider", "name": "sso_provider_id", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetSSOProviderSAMLSigningCertificate", "summary": "Get SAML Provider Signing Certificate", "description": "Download the SAML Provider Signing Certificate. Only applies to SAML providers.", "tags": [ "Auth", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "headers": { "content-disposition": { "schema": { "type": "string" }, "description": "Suggested filename of structure \"{saml-slug}-signing-certificate.pem\"" } }, "content": { "text/plain": { "schema": { "type": "string" } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/permissions": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListPermissions", "summary": "List Permissions", "description": "List all authorization permissions.", "tags": [ "Permissions", "Community", "Enterprise" ], "parameters": [ { "name": "sort_by", "in": "query", "description": "Sortable columns are `authority`, `name`, `id`, `created_at`, `updated_at`, `deleted_at`.", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "authority", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "permissions": { "type": "array", "items": { "$ref": "#/components/schemas/model.permission" } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/permissions/{permission_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "permission_id", "description": "ID of the permission record to retrieve details for.", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetPermission", "summary": "Get Permission", "description": "Gets an authorization permission's details.", "tags": [ "Permissions", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.permission" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/roles": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListRoles", "summary": "List Roles", "description": "List all authorization roles.", "tags": [ "Roles", "Community", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are `name`, `description`, `id`, `created_at`, `updated_at`, `deleted_at`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "roles": { "type": "array", "items": { "$ref": "#/components/schemas/model.role" } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/roles/{role_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "role_id", "description": "ID of the role record to retrieve info for.", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetRole", "summary": "Get Role", "description": "Gets an authorization role's details.", "tags": [ "Roles", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.role" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/tokens": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListAuthTokens", "summary": "List Auth Tokens", "description": "Get all auth tokens.", "tags": [ "API Tokens", "Community", "Enterprise" ], "parameters": [ { "name": "user_id", "description": "Provide a `user_id` to filter tokens by. Admin users may filter by any `user_id`. Non-admin users may only filter by their own `user_id` using `eq`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.uuid" } }, { "name": "sort_by", "description": "Sortable columns are `user_id`, `client_id`, `name`, `last_access`, `created_at`, `updated_at`, `deleted_at`.\n", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "key", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "hmac_method", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "last_access", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.uuid" } }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "tokens": { "type": "array", "items": { "$ref": "#/components/schemas/model.auth-token" } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "post": { "operationId": "CreateAuthToken", "summary": "Create Token for User", "description": "Create a new token to use with request signing based authentication for a given user.", "tags": [ "API Tokens", "Community", "Enterprise" ], "requestBody": { "description": "The request body for creating an auth token", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "token_name": { "type": "string" }, "user_id": { "type": "string", "format": "uuid" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.auth-token" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/tokens/{token_id}": { "parameters": [ { "name": "token_id", "description": "ID of auth token to delete.", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "$ref": "#/components/parameters/header.prefer" } ], "delete": { "operationId": "DeleteAuthToken", "summary": "Delete a User Token", "description": "Delete a request signing token for a given user.", "tags": [ "API Tokens", "Community", "Enterprise" ], "responses": { "200": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/bloodhound-users": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListUsers", "summary": "List Users", "description": "Gets all BloodHound user details.", "tags": [ "BloodHound Users", "Community", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are first_name, last_name, email_address, principal_name, last_login, created_at, updated_at, deleted_at.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "first_name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "last_name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "email_address", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "principal_name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.uuid" } }, { "name": "last_login", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "users": { "type": "array", "items": { "$ref": "#/components/schemas/model.user" } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "post": { "operationId": "CreateUser", "summary": "Create a New User", "description": "Create a new BloodHound user.", "tags": [ "BloodHound Users", "Community", "Enterprise" ], "requestBody": { "description": "The request body for creating a user", "required": true, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.requests.user.update" }, { "$ref": "#/components/schemas/api.requests.user.set-secret" } ] } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.user" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/bloodhound-users-minimal": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListUsersMinimal", "summary": "List Users Minimal", "description": "Returns all BloodHound user details without any sensitive data.", "tags": [ "BloodHound Users", "Community", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are id, first_name, last_name and email_address.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "first_name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "last_name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "email_address", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.uuid" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "users": { "type": "array", "items": { "$ref": "#/components/schemas/model.users-minimal" } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/bloodhound-users/{user_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "user_id", "description": "User ID", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "get": { "operationId": "GetUser", "summary": "Get a user", "description": "Get a BloodHound user's details.", "tags": [ "BloodHound Users", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.user" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "patch": { "operationId": "UpdateUser", "summary": "Update a User", "description": "Update a BloodHound user's properties'.", "tags": [ "BloodHound Users", "Community", "Enterprise" ], "requestBody": { "description": "The request body for updating a user", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.requests.user.update" } } } }, "responses": { "200": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "DeleteUser", "summary": "Delete a User", "description": "Deletes an existing BloodHound user.", "tags": [ "BloodHound Users", "Community", "Enterprise" ], "responses": { "200": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" }, "default": { "$ref": "#/components/responses/error-response" } } } }, "/api/v2/bloodhound-users/{user_id}/secret": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "user_id", "description": "User ID", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "put": { "operationId": "CreateOrSetUserSecret", "summary": "Create or Set User Secret", "description": "Create or set a user's secret to use as a login password.", "tags": [ "BloodHound Users", "Community", "Enterprise" ], "requestBody": { "description": "The request body for creating or setting a user secret", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.requests.user.set-secret" } } } }, "responses": { "200": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "DeleteUserSecret", "summary": "Expire User Secret", "description": "Expire a user's secret to use as a login password.", "tags": [ "BloodHound Users", "Community", "Enterprise" ], "responses": { "200": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/bloodhound-users/{user_id}/mfa": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "user_id", "description": "User ID", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "post": { "operationId": "AddUserMfa", "summary": "Enrolls user in multi-factor authentication", "description": "Enrolls user in multi-factor authentication", "tags": [ "BloodHound Users", "Community", "Enterprise" ], "requestBody": { "description": "The request body for enrolling a user in multi-factor authentication", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "secret": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "qr_code": { "type": "string" }, "totp_secret": { "type": "string" } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "RemoveUserMfa", "summary": "Unenroll user from multi-factor authentication", "description": "Unenrolls user from multi-factor authentication", "tags": [ "BloodHound Users", "Community", "Enterprise" ], "requestBody": { "description": "The request body for unenrolling a user from multi-factor authentication", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "secret": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/enum.mfa-activation-status" } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/bloodhound-users/{user_id}/mfa-activation": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "user_id", "description": "User ID", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "get": { "operationId": "GetMfaActivationStatus", "summary": "Returns MFA activation status for a user", "description": "Returns multi-factor authentication status for a user", "tags": [ "BloodHound Users", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/enum.mfa-activation-status" } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "post": { "operationId": "ActivateUserMfa", "summary": "Activates MFA for an enrolled user", "description": "Activates multi-factor authentication for an enrolled user", "tags": [ "BloodHound Users", "Community", "Enterprise" ], "requestBody": { "description": "The request body for activating multi-factor authentication for an enrolled user", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "otp": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/enum.mfa-activation-status" } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/collectors/{collector_type}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "collector_type", "description": "Collector type", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/enum.client-type" } } ], "get": { "operationId": "GetCollectorManifest", "summary": "Get collector manifest", "description": "Retrieves the version manifest for a given collector", "tags": [ "Collectors", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.collector-manifest" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/collectors/{collector_type}/{release_tag}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "collector_type", "description": "Collector type", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/enum.client-type" } }, { "name": "release_tag", "description": "Release tag (semver or \"latest\")", "in": "path", "required": true, "schema": { "type": "string" } } ], "get": { "operationId": "DownloadCollector", "summary": "Get collector download by version", "description": "Retrieves the download for a given collector with given version", "tags": [ "Collectors", "Community", "Enterprise" ], "responses": { "200": { "$ref": "#/components/responses/binary-response" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/collectors/{collector_type}/{release_tag}/checksum": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "collector_type", "description": "Collector type", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/enum.client-type" } }, { "name": "release_tag", "description": "Release tag (semver or \"latest\")", "in": "path", "required": true, "schema": { "type": "string" } } ], "get": { "operationId": "GetCollectorChecksum", "summary": "Get collector checksum by version", "description": "Retrieves the checksum file for a given collector with given version", "tags": [ "Collectors", "Community", "Enterprise" ], "responses": { "200": { "$ref": "#/components/responses/binary-response" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/kennel/manifest": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetKennelManifest", "summary": "Get kennel manifest", "description": "Retrieves a manifest of community collectors", "tags": [ "Collectors", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.kennel-manifest" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/kennel/enterprise-manifest": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetKennelEnterpriseManifest", "summary": "Get kennel enterprise manifest", "description": "Retrieves a manifest of enterprise collectors", "tags": [ "Collectors", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.kennel-enterprise-manifest" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/kennel/download/{asset_name}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_name", "description": "Asset name", "in": "path", "required": true, "schema": { "type": "string" } } ], "get": { "operationId": "GetKennelAsset", "summary": "Download asset", "description": "Downloads an enterprise asset (collector or checksum)", "tags": [ "Collectors", "Enterprise" ], "responses": { "200": { "$ref": "#/components/responses/binary-response" }, "401": { "$ref": "#/components/responses/unauthorized" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/file-upload": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListFileUploadJobs", "summary": "List File Upload Jobs", "description": "Lists available file upload jobs", "tags": [ "Collection Uploads", "Community", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are `user_email_address`, `status`, `status_message`, `start_time`, `end_time`, `last_ingest`, `id`, `created_at`, `updated_at`, and `deleted_at`.\n", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "user_id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "user_email_address", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "status", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "name": "status_message", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "start_time", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "end_time", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "last_ingest", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.file-upload-job" } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/file-upload/start": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "CreateFileUploadJob", "summary": "Create File Upload Job", "description": "Creates a file upload job for sending collection files", "tags": [ "Collection Uploads", "Community", "Enterprise" ], "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.file-upload-job" } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/file-upload/{file_upload_job_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "Content-Type", "description": "Content type header, used to specify the type of content being sent by the client.", "in": "header", "required": true, "schema": { "type": "string", "enum": [ "application/json", "application/zip", "application/zip-compressed", "application/x-zip-compressed" ] } }, { "name": "X-File-Upload-Name", "description": "File upload name header, used to specify the name of the file being uploaded to improve error reporting.", "in": "header", "required": false, "schema": { "type": "string" } }, { "name": "file_upload_job_id", "description": "The ID for the file upload job.", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "post": { "operationId": "UploadFileToJob", "summary": "Upload File To Job", "description": "Saves a collection file to a file upload job", "tags": [ "Collection Uploads", "Community", "Enterprise" ], "requestBody": { "description": "The body of the file upload request.", "content": { "application/json": { "schema": { "type": "object" } } } }, "responses": { "202": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/file-upload/{file_upload_job_id}/completed-tasks": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "file_upload_job_id", "description": "The ID for the file upload job.", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "get": { "operationId": "GetCompletedTasks", "summary": "Get Completed Tasks", "description": "Get information about the individual completed file upload tasks associated with a job", "tags": [ "Collection Uploads", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.file-upload-job.completed-tasks" } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/file-upload/{file_upload_job_id}/end": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "file_upload_job_id", "description": "The ID for the file upload job.", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "post": { "operationId": "EndFileUploadJob", "summary": "End File Upload Job", "description": "End a file upload job", "tags": [ "Collection Uploads", "Community", "Enterprise" ], "responses": { "200": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/file-upload/accepted-types": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListAcceptedFileUploadTypes", "summary": "List accepted file upload types", "description": "List accepted file types for collection file uploads", "tags": [ "Collection Uploads", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "string" } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "429": { "$ref": "#/components/responses/too-many-requests" } } } }, "/api/v2/custom-nodes": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetCustomNodes", "summary": "Get custom nodes", "description": "Retrieve a list of all custom node configurations.\nThis endpoint returns the current set of registered node kinds and their display settings.\n", "tags": [ "Custom Node Management", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.custom-node" } } } }, "example": { "data": [ { "id": 1, "kindName": "KindA", "config": { "icon": { "type": "font-awesome", "name": "house", "color": "#FFFFFF" } } }, { "id": 2, "kindName": "KindB", "config": { "icon": { "type": "font-awesome", "name": "coffee", "color": "#000000" } } } ] } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "post": { "operationId": "CreateCustomNodes", "summary": "Create custom nodes", "description": "This endpoint registers new node kinds along with optional display metadata such as icons and colors.\nThe provided configuration controls how nodes of the specified kinds are interpreted and rendered in the UI.\nOnly free, solid-style Font Awesome icons are supported. Hex color codes must follow the format #RGB or #RRGGBB.\nIf no valid icon or color is provided, the system will fall back to a question mark icon and a white background color.\nBatch input is supported; you may submit multiple configuration objects in a single request.\n", "tags": [ "Custom Node Management", "Community", "Enterprise" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "custom_types": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/model.custom-node.config" } } } }, "example": { "custom_types": { "KindA": { "icon": { "type": "font-awesome", "name": "house", "color": "#FFFFFF" } }, "KindB": { "icon": { "type": "font-awesome", "name": "coffee", "color": "#000000" } } } } } } }, "responses": { "201": { "description": "CREATED", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.custom-node" } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "409": { "description": "**Conflict**\nDuplicate Kind Name\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" }, "example": { "http_status": 409, "timestamp": "2024-02-19T19:27:43.866Z", "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "errors": [ { "context": "customnodes", "message": "Conflict: duplicate kind name" } ] } } } }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/custom-nodes/{kind_name}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "kind_name", "description": "Kind Name", "in": "path", "required": true, "schema": { "type": "string" } } ], "get": { "operationId": "GetCustomNode", "summary": "Get custom node", "description": "Retrieve the configuration for a specific custom node kind.\nReturns the display settings and metadata for the requested node kind.\n", "tags": [ "Custom Node Management", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.custom-node" }, "example": { "id": 1, "kindName": "KindA", "config": { "icon": { "type": "font-awesome", "name": "house", "color": "#FFFFFF" } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "put": { "operationId": "UpdateCustomNode", "summary": "Update custom node", "description": "This endpoint updates an existing node kind along with optional display metadata such as icons and colors.\nThe provided configuration controls how nodes of the specified kinds are interpreted and rendered in the UI.\nOnly free, solid-style Font Awesome icons are supported. Hex color codes must follow the format #RGB or #RRGGBB.\nIf no valid icon or color is provided, the system will fall back to a question mark icon and a white background color.\n", "tags": [ "Custom Node Management", "Community", "Enterprise" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "config": { "$ref": "#/components/schemas/model.custom-node.config" } } }, "example": { "config": { "icon": { "type": "font-awesome", "name": "house", "color": "#333" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.custom-node" } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "404": { "$ref": "#/components/responses/not-found" }, "409": { "description": "**Conflict**\nKind name is owned by a schema extension\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" }, "example": { "http_status": 409, "timestamp": "2024-02-19T19:27:43.866Z", "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "errors": [ { "context": "customnodes", "message": "Conflict: kind name is owned by a schema extension" } ] } } } }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "DeleteCustomNode", "deprecated": true, "summary": "Delete custom node (Deprecated)", "description": "**Deprecated**: This endpoint is no longer supported and will return 410 Gone.\n", "tags": [ "Custom Node Management", "Community", "Enterprise" ], "responses": { "401": { "$ref": "#/components/responses/unauthorized" }, "410": { "description": "Gone - This endpoint has been deprecated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" } } } } } } }, "/api/version": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetApiVersion", "summary": "Get API version", "description": "Returns the supported API versions.", "tags": [ "API Info", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "API": { "type": "object", "properties": { "current_version": { "type": "string" }, "deprecated_version": { "type": "string" } } }, "server_version": { "type": "string" }, "product_edition": { "type": "string" } } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/spec": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetApiSpec", "summary": "Get API Spec", "description": "Returns an Open API 3.0 compatible BloodHound API spec", "tags": [ "API Info", "Community", "Enterprise" ], "security": [], "responses": { "200": { "description": "OK", "content": { "text/x-yaml": { "schema": { "type": "string", "format": "binary" }, "example": "openapi: 3.0.3\nservers:\n - url: /\n...[truncated example]\n" } } }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/search": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "Search", "summary": "Search for objects", "description": "Search for graph objects by name or object ID, filtered by type.", "tags": [ "Search", "Community", "Enterprise" ], "parameters": [ { "name": "q", "description": "Search parameter for the name or object ID of a node.", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "type", "description": "Node type. Currently only supports built-in types.\nSome AD examples: `Base`, `User`, `Computer`, `Group`, `Container`.\nSome Azure examples: `AZBase`, `AZApp`, `AZDevice`.\n", "in": "query", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.search-result" } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/available-domains": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetAvailableDomains", "summary": "Get available domains", "description": "Gets available domains along with their collection status", "tags": [ "Search", "Community", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are objectid, name.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "objectid", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "collected", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.domain-selector" } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/audit": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListAuditLogs", "summary": "List audit logs", "description": "Returns a list of audit logs.", "tags": [ "Audit", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" }, { "$ref": "#/components/parameters/query.created-at" }, { "name": "sort_by", "description": "Sortable columns are `id`, `actor_id`, `actor_name`, `actor_email`, `action`, `request_id`, `created_at`, `source`, and `status`.\n", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "before", "description": "Return logs created before the specified time. Value should be in the RFC-3339 format. If not supplied, this will default to the current time.", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "after", "description": "Return logs created after the specified time. Value should be in the RFC-3339 format. If not supplied, this will default to 1 year before the current time.", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "actor_id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "actor_name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "actor_email", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "action", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "request_id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "source", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "status", "description": "Filter results by column value. Valid filter predicates are `eq`, `neq`. Valid values are `success` and `failure`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "logs": { "type": "array", "items": { "$ref": "#/components/schemas/model.audit-log" } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/config": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListAppConfigParams", "summary": "List application config parameters", "description": "Lists application configuration parameters for this instance", "tags": [ "Config", "Community", "Enterprise" ], "parameters": [ { "name": "parameter", "description": "Parameter filter. Must follow the convention: parameter=eq:value\n", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.app-config-param" } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "put": { "operationId": "SetAppConfigParam", "summary": "Write application configuration parameters", "description": "Writes application configuration parameters for this instance", "tags": [ "Config", "Community", "Enterprise" ], "requestBody": { "description": "The request body for updating an application config parameter", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.app-config-param" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "key": { "type": "string" }, "value": { "type": "object" } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/features": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListFeatureFlags", "summary": "List feature flags", "description": "Lists all feature flags for this instance", "tags": [ "Config", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.feature-flag" } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/features/{feature_id}/toggle": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "feature_id", "description": "Feature ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "put": { "operationId": "ToggleFeatureFlag", "summary": "Toggle a feature flag's enabled status to either enable or disable it.", "description": "Writes application configuration parameters for this instance", "tags": [ "Config", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "enabled": { "type": "boolean" } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-groups": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListAssetGroups", "summary": "List all asset isolation groups", "description": "Lists all asset isolation groups.", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are `name`, `tag`, and `member_count`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "tag", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "system_group", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "member_count", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "asset_groups": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group" } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "post": { "operationId": "CreateAssetGroup", "summary": "Create an asset group", "description": "Creates an asset group", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "requestBody": { "description": "The request body for creating an asset group", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.asset-group" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.asset-group" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-groups/{asset_group_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_id", "description": "ID of the asset group record to retrieve", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetAssetGroup", "summary": "Get asset group by ID", "description": "Retrieve asset group by ID", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.asset-group" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "put": { "operationId": "UpdateAssetGroup", "summary": "Update an asset group", "description": "Updates an asset group", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "requestBody": { "description": "The request body for updating an asset group.", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.asset-group" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "DeleteAssetGroup", "summary": "Delete an asset group", "description": "Deletes an asset group", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "responses": { "200": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "409": { "description": "**Conflict**\nThe client tried to delete a system defined asset group.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" }, "example": { "http_status": 409, "timestamp": "2024-02-19T19:27:43.866Z", "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "errors": [ { "context": "agi", "message": "Cannot delete a system defined asset group." } ] } } } }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-groups/{asset_group_id}/collections": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_id", "description": "ID of the asset_group record to retrieve", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "ListAssetGroupCollections", "summary": "List asset group collections", "description": "Returns all historical memberships if no URL params are specified.", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "parameters": [ { "name": "sort_by", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-collection" } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-groups/{asset_group_id}/selectors": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_id", "description": "ID of the asset_group record to retrieve", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "post": { "operationId": "UpdateAssetGroupSelectorsDeprecated", "deprecated": true, "summary": "Update asset group selectors", "description": "DEPRECATED use PUT instead. Updates asset group selectors.", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "requestBody": { "description": "The request body for updating asset group selectors", "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-selector-spec" } } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "added_selectors": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-selector" } }, "removed_selectors": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-selector" } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "put": { "operationId": "UpdateAssetGroupSelectors", "summary": "Update asset group selectors", "description": "Updates asset group selectors", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "requestBody": { "description": "The request body for updating asset group selectors", "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-selector-spec" } } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "added_selectors": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-selector" } }, "removed_selectors": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-selector" } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-groups/{asset_group_id}/selectors/{asset_group_selector_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_id", "description": "ID of the asset_group record to retrieve", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "asset_group_selector_id", "description": "ID of the asset_group_selector record to retrieve", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "delete": { "operationId": "DeleteAssetGroupSelector", "summary": "Delete an asset group selector", "description": "Deletes an asset group selector", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "responses": { "200": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "409": { "description": "**Conflict**\nSystem defined asset group selectors cannot be deleted.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" }, "example": { "http_status": 409, "timestamp": "2024-02-19T19:27:43.866Z", "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "errors": [ { "context": "agi", "message": "Cannot delete system defined asset group selector." } ] } } } }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-groups/{asset_group_id}/custom-selectors": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_id", "description": "ID of the asset_group record to retrieve", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetAssetGroupCustomMemberCount", "summary": "Get asset group custom member count", "description": "Get asset group custom member count", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "custom_member_count": { "type": "integer" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-groups/{asset_group_id}/members": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_id", "description": "ID of the asset_group record to retrieve", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "ListAssetGroupMembers", "deprecated": true, "summary": "List all asset isolation group members", "description": "**Deprecated**: This endpoint will no longer be supported in a future release. Please use `GET /api/v2/asset-group-tags/{asset_group_tag_id}/members` or `GET /api/v2/asset-group-tags/{asset_group_tag_id}/selectors/{asset_group_tag_selector_id}/members` instead.\n", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" }, { "name": "sort_by", "in": "query", "description": "Sortable columns are `object_id`, `asset_group_id`, `primary_kind`, `environment_id`, `environment_kind`, and `name`.\n", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "object_id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "primary_kind", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "environment_id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "environment_kind", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "custom_member", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "object", "properties": { "members": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-member" } } } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-groups/{asset_group_id}/members/counts": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_id", "description": "ID of the asset_group record to retrieve", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "ListAssetGroupMemberCountByKind", "summary": "List asset group member count by kind", "description": "List counts of members of an asset isolation group by primary kind.", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "parameters": [ { "name": "object_id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "environment_id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "primary_kind", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "environment_kind", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "custom_member", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "total_count": { "type": "integer" }, "counts": { "type": "object", "additionalProperties": { "type": "integer" } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-group-tags/{asset_group_tag_id}/members/{asset_group_member_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_tag_id", "description": "ID of the asset_group_tag of a selector", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "asset_group_member_id", "description": "ID of member to list selectors", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetAssetGroupSelectorsByMemberId", "summary": "Get asset group tag selectors of a specific object by member id", "description": "Get a list of selectors for an object by member id.", "tags": [ "Asset Isolation", "Enterprise", "Community" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "member": { "allOf": [ { "$ref": "#/components/schemas/model.asset-group-tags-member" }, { "type": "object", "properties": { "selectors": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-tags-selector-response" } } } } ] } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-group-tags": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetAssetGroupTags", "summary": "Get Asset Group Tags", "description": "Get a list of asset groups", "tags": [ "Asset Isolation", "Enterprise", "Community" ], "parameters": [ { "name": "type", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer-strict" } }, { "name": "counts", "description": "Whether to include counts of selectors and members for each tag", "in": "query", "schema": { "type": "boolean", "default": false } }, { "name": "name", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "description", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "created_at", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "created_by", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string-strict" } }, { "name": "updated_at", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "updated_by", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string-strict" } }, { "name": "deleted_at", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "deleted_by", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string-strict" } }, { "name": "require_certify", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.boolean" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "tags": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/model.asset-group-tag" }, { "allOf": [ { "$ref": "#/components/schemas/model.asset-group-tag" }, { "type": "object", "properties": { "counts": { "type": "object", "properties": { "members": { "type": "integer", "format": "int64" }, "selectors": { "type": "integer" }, "custom_selectors": { "type": "integer" }, "default_selectors": { "type": "integer" }, "disabled_selectors": { "type": "integer" } } } } } ] } ] } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "post": { "operationId": "CreateAssetGroupTag", "summary": "Create Asset Group Tag", "description": "Creates an asset group tag ie. a tier or label", "tags": [ "Asset Isolation", "Enterprise" ], "requestBody": { "description": "The request body for creating an asset group tag. Name and type fields are required.", "required": true, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/model.asset-group-tag-request" }, { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string" } }, "required": [ "name", "type" ] } ] } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.asset-group-tag" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-group-tags/{asset_group_tag_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_tag_id", "description": "ID of an asset group tag", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetAssetGroupTag", "summary": "Get Asset Group Tag", "description": "Retrieves an asset group tag by ID", "tags": [ "Asset Isolation", "Enterprise", "Community" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "tag": { "$ref": "#/components/schemas/model.asset-group-tag" } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "patch": { "operationId": "UpdateAssetGroupTag", "summary": "Update Asset Group Tag", "description": "Updates an asset group tag by ID", "tags": [ "Asset Isolation", "Enterprise", "Community" ], "requestBody": { "description": "The request body for updating an asset group tag. At least one field is required.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.asset-group-tag-update" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.asset-group-tag" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "DeleteAssetGroupTag", "summary": "Delete an Asset Group Tag", "description": "Deletes an asset group tag", "tags": [ "Asset Isolation", "Enterprise" ], "responses": { "204": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-group-tags/{asset_group_tag_id}/members": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_tag_id", "description": "ID of an asset group tag", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "ListAssetGroupTagMembersById", "summary": "List asset group tag members by ID", "description": "List members of an asset group tag by ID", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" }, { "$ref": "#/components/parameters/query.environments" }, { "name": "sort_by", "in": "query", "description": "Sortable columns are `id`, `objectid`, and `name`.\n", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "primary_kind", "in": "query", "description": "Filter by primary_kind", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "name", "in": "query", "description": "Filter by name", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "object_id", "in": "query", "description": "Filter by object_id", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "object", "properties": { "members": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-tags-member" } } } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-group-tags/{asset_group_tag_id}/members/counts": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_tag_id", "description": "ID of an asset group tag", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "ListAssetGroupTagMemberCountByKind", "summary": "List asset group tag member count by kind", "description": "List counts of members of an asset group tag by primary kind.", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.environments" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "total_count": { "type": "integer" }, "counts": { "type": "object", "additionalProperties": { "type": "integer" } } } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-group-tags/{asset_group_tag_id}/selectors/{asset_group_tag_selector_id}/members": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_tag_id", "description": "ID of an asset group tag", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "asset_group_tag_selector_id", "description": "ID of an asset group tag selector", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "ListAssetGroupTagMembersBySelector", "summary": "List asset group tag members by selector", "description": "List members of an asset group tag by selector", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" }, { "$ref": "#/components/parameters/query.environments" }, { "name": "sort_by", "in": "query", "description": "Sortable columns are `id`, `objectid`, and `name`.\n", "schema": { "allOf": [ { "$ref": "#/components/schemas/api.params.query.sort-by" }, { "enum": [ "id", "objectid", "name" ] } ] } }, { "name": "primary_kind", "in": "query", "description": "Filter by primary_kind", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "name", "in": "query", "description": "Filter by name", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "object_id", "in": "query", "description": "Filter by object_id", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "object", "properties": { "members": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-tags-member" } } } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "409": { "description": "Conflict. Selector is disabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" } } } }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-group-tags/{asset_group_tag_id}/selectors/{asset_group_tag_selector_id}/members/counts": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_tag_id", "description": "ID of an asset group tag", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "asset_group_tag_selector_id", "description": "ID of an asset group tag selector", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetAssetGroupSelectorMemberCountsByKind", "summary": "List asset group tag selector member count by kind", "description": "List counts of members of an asset group tag selector by primary kind.", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.environments" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "total_count": { "type": "integer" }, "counts": { "type": "object", "additionalProperties": { "type": "integer" } } } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "409": { "description": "Conflict. Selector is disabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" } } } }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-group-tags/{asset_group_tag_id}/selectors": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_tag_id", "description": "ID of the asset_group_tag to create a selector", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetAssetGroupTagSelectors", "summary": "Get Asset Group Tag selectors", "description": "Get a list of selectors for this group.", "tags": [ "Asset Isolation", "Enterprise", "Community" ], "parameters": [ { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" }, { "$ref": "#/components/parameters/query.environments" }, { "name": "sort_by", "in": "query", "description": "Sortable columns are `id`, `name`, and `created_at`.\n", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "auto_certify", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.boolean" } }, { "name": "created_at", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "created_by", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "description", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "disabled_at", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "disabled_by", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "is_default", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.boolean" } }, { "name": "name", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "updated_at", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "updated_by", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "type", "description": "Filter results by column integer value. Valid filter predicates are `eq`, `neq`. Valid values are either ObjectID = 1 or Cypher = 2.", "in": "query", "required": false, "schema": { "type": "integer", "enum": [ 1, 2 ] } }, { "name": "counts", "description": "Whether to include counts of members for each selector", "in": "query", "required": false, "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "selectors": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/model.asset-group-tags-selector-response" }, { "type": "object", "properties": { "counts": { "type": "object", "properties": { "members": { "type": "integer" } } } } } ] } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "post": { "operationId": "CreateAssetGroupTagSelector", "summary": "Create Asset Group Tag Selector", "description": "Creates an asset group tag selector.", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "requestBody": { "description": "The request body for creating an asset group tag selector. Only the name and seeds fields are required.", "required": true, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/model.asset-group-tags-selector-request" }, { "type": "object" } ], "required": [ "name", "seeds" ] } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.asset-group-tags-selector-response" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-group-tags/{asset_group_tag_id}/selectors/{asset_group_tag_selector_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_tag_id", "description": "ID of the asset_group_tag to update a selector on", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "asset_group_tag_selector_id", "description": "Selector ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetAssetGroupTagSelector", "summary": "Get Asset Group Tag Selector", "description": "Retrieves an asset group tag selector by ID", "tags": [ "Asset Isolation", "Enterprise", "Community" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "selector": { "$ref": "#/components/schemas/model.asset-group-tags-selector-response" } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "patch": { "operationId": "UpdateAssetGroupTagSelector", "summary": "Update Asset Group Tag Selector", "description": "Update an asset group tag selector's properties", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "requestBody": { "description": "The request body for updating an asset group tag selector. At least one field must be provided in the request body. Any combination of fields from the original schema can be included, and only the fields that are provided will be updated.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.asset-group-tags-selector-request" } } } }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.asset-group-tags-selector-response" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "DeleteAssetGroupTagSelector", "summary": "Delete Asset Group Tag Selector", "description": "Delete an asset group tag selector", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "responses": { "204": { "description": "Successfully deleted. No content is returned." }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-group-tags/preview-selectors": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "PreviewSelectors", "summary": "Preview Selectors", "description": "Sample preview of members selected by provided selector seeds.", "tags": [ "Asset Isolation", "Community", "Enterprise" ], "requestBody": { "description": "The request body of seeds for previewing what a selector will select.", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "seeds": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-tags-selector-seed" } }, "expansion": { "description": "Determine which expansion approach to use for member seeds. 0 - No expansion, 1 - Expand all, 2 - Expand containing members, 3 - Expand containing members and members containing the seed. Default fallback will be 1 - Expand all", "type": "integer", "enum": [ 0, 1, 2, 3 ] } }, "required": [ "seeds" ] } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "member": { "type": "object", "properties": { "id": { "type": "integer" }, "object_id": { "type": "string" }, "primary_kind": { "type": "string" }, "name": { "type": "string" }, "properties": { "type": "object", "additionalProperties": true }, "source": { "description": "Describes which phase of tagging resulted in this member being tagged, 1 - direct object, 2 - expanded downward, 3 - expanded upward", "type": "integer", "enum": [ 1, 2, 3 ] } } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-group-tags/search": { "post": { "operationId": "AssetGroupTagSearch", "summary": "Search Asset Group Tags", "description": "Supports searching by name on asset group tags and selectors, and by name or object ID on members.", "tags": [ "Asset Isolation", "Enterprise", "Community" ], "requestBody": { "description": "The request body for searching asset group tags. `query` represents being able to query by either name or object id. `tag_type` can be either 1(zone), 2(label), or 3(owned). And `asset_group_tag_id` is the ID of a tag (zone or label).", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "query": { "type": "string" }, "tag_type": { "type": "integer" }, "asset_group_tag_id": { "type": "integer" } }, "required": [ "query", "tag_type" ] } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "tags": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-tag" } }, "selectors": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-tags-selector-response" } }, "members": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-tags-member" } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-group-tags-history": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetAssetGroupTagHistory", "summary": "Get history records", "description": "Retrieves history records for actions on asset group tags", "tags": [ "Asset Isolation", "Enterprise", "Community" ], "parameters": [ { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" }, { "name": "sort_by", "in": "query", "description": "Sortable columns are `created_at`.", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "created_at", "in": "query", "description": "For example, you can filter a date range of records by doing `created_at=gt:2025-07-08T17:00:00Z&created_at=lt:2025-07-30T17:00:00Z`", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "actor", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "email", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "action", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "target", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "asset_group_tag_id", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "name": "environment_id", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "note", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.asset-group-tags-history" } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "post": { "operationId": "SearchAssetGroupTagHistory", "summary": "Search history records", "description": "Retrieves history records via search string input and filtering by action, asset_group_tag_id, email, and actor", "tags": [ "Asset Isolation", "Enterprise", "Community" ], "requestBody": { "description": "The request body for searching asset group tag history records", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "query": { "type": "string", "minLength": 3, "example": "UpdateTag" } }, "required": [ "query" ] } } } }, "parameters": [ { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" }, { "name": "sort_by", "in": "query", "description": "Sortable columns are `created_at`.", "schema": { "allOf": [ { "$ref": "#/components/schemas/api.params.query.sort-by" }, { "enum": [ "created_at" ] } ] } }, { "name": "actor", "in": "query", "description": "Filter by actor", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "email", "in": "query", "description": "Filter by email", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "action", "in": "query", "description": "Filter by action", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "asset_group_tag_id", "in": "query", "description": "Filter by asset_group_tag_id", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.asset-group-tags-history" } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-group-tags/certifications": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "CertifyOrRevokeObjects", "summary": "Certify or Revoke Certification of Objects", "description": "Manually certify/revoke certification of objects as belonging to the Zone they're selected by", "tags": [ "Asset Isolation", "Enterprise" ], "requestBody": { "description": "The request body for certifying or revoking certification of objects.", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "member_ids": { "type": "array", "items": { "type": "integer", "format": "int64" }, "minItems": 1, "uniqueItems": true }, "action": { "type": "integer", "enum": [ 1, 2 ] }, "note": { "type": "string" } }, "additionalProperties": false, "required": [ "member_ids", "action" ] } } } }, "responses": { "200": { "description": "OK" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "get": { "operationId": "GetAssetGroupTagsCertifications", "summary": "Get certifications for privilege zones", "description": "Retrieves certification status for nodes selected by a zone", "tags": [ "Asset Isolation", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" }, { "name": "asset_group_tag_id", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "name": "certified", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "name": "certified_by", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "created_at", "in": "query", "description": "For example, you can filter a date range of records by doing `created_at=gt:2025-07-08T17:00:00Z&created_at=lt:2025-07-30T17:00:00Z` (UTC)", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "environments", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "name", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "object_id", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "primary_kind", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.asset-group-tags-certification-response" } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/graphs/kinds": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetKinds", "summary": "Get kinds", "description": "Gets kinds", "tags": [ "Graph", "Community", "Enterprise" ], "parameters": [ { "name": "type", "in": "query", "description": "Filter by type, valid types are node or edge, e.g. \"eq:node\"", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string-strict" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "kinds": { "type": "array", "items": { "type": "string" } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/pathfinding": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "Pathfinding", "deprecated": true, "summary": "Get pathfinding result", "description": "DEPRECATED use GetShortestPath instead. Get the result of pathfinding between two nodes in graph format.", "tags": [ "Graph", "Community", "Enterprise" ], "parameters": [ { "name": "start_node", "description": "Start Node", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "end_node", "description": "End Node", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.bh-graph.graph" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/graph-search": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetSearchResult", "summary": "Get search result", "description": "Get the result of searching a graph for a node by name", "tags": [ "Graph", "Community", "Enterprise" ], "parameters": [ { "name": "query", "description": "Search query", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "type", "description": "The type of search strategy to use. Default is `fuzzy`.", "in": "query", "schema": { "type": "string", "enum": [ "fuzzy", "exact" ] } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/model.bh-graph.node" } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/relationships/{relationship_id}": { "parameters": [ { "name": "relationship_id", "in": "path", "required": true, "description": "The relationship id assigned by the graph", "schema": { "type": "integer", "format": "int64" } }, { "name": "include-info", "in": "query", "required": false, "description": "When false or omitted, excludes entity panel information.\nWhen true, returns relationship details with entity panel information included.\n", "schema": { "type": "boolean" } } ], "get": { "operationId": "GetRelationshipByID", "summary": "Get Relationship by Graph Relationship ID", "description": "**Experimental** - Returns the details of a graph relationship identified by its graph-assigned integer ID", "tags": [ "OpenGraph (Experimental)", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/model.relationship-details" }, { "$ref": "#/components/schemas/model.relationship-details-with-info" } ] } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/nodes/{node_id}": { "parameters": [ { "name": "node_id", "in": "path", "required": true, "description": "The node id assigned by the graph", "schema": { "type": "integer", "format": "int64" } } ], "get": { "operationId": "GetNodeByID", "summary": "Get Node by Graph Node ID", "description": "**Experimental** - Returns the details of a graph node identified by its graph-assigned integer ID", "tags": [ "OpenGraph (Experimental)", "Community", "Enterprise" ], "parameters": [ { "name": "include-info", "in": "query", "required": false, "description": "When true, populates `data.info` with kindinfo objects for the node's registered kinds.", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK\n\nWhen `include-info=true`, the `info` field is populated with kindinfo objects.\n", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/model.node-details" }, { "type": "object", "properties": { "info": { "type": "array", "description": "Kindinfo objects populated when `include-info=true`.", "items": { "type": "object", "required": [ "name", "title", "position", "node_kind_id", "markdown" ], "properties": { "name": { "type": "string", "description": "Kindinfo key." }, "title": { "type": "string", "description": "Human-readable kindinfo title." }, "position": { "type": "integer", "format": "int32", "description": "Display position for the kindinfo object." }, "node_kind_id": { "type": "integer", "format": "int32", "description": "Schema node kind ID associated with the kindinfo object." }, "markdown": { "type": "object", "required": [ "content" ], "properties": { "content": { "type": "string", "description": "Markdown content for the kindinfo object." } } } } } } } } ] } } }, "examples": { "Info omitted": { "summary": "Node details when include-info is not present", "value": { "data": { "node_id": 1234567890, "kinds": [ { "node_kind_id": 1, "name": "User" }, { "node_kind_id": 2, "name": "Entity" } ], "properties": { "objectid": "S-1-5-21-3130019616-2776909439-2417379446-1108", "name": "ADMIN@CORP.EXAMPLE.COM", "displayName": "Admin", "lastSeen": "2026-07-14T18:24:32Z" } } } }, "Info included": { "summary": "Node details when include-info is true", "value": { "data": { "node_id": 1234567890, "kinds": [ { "node_kind_id": 1, "name": "User" }, { "node_kind_id": 2, "name": "Entity" } ], "properties": { "objectid": "S-1-5-21-3130019616-2776909439-2417379446-1108", "name": "ADMIN@CORP.EXAMPLE.COM", "displayName": "Admin", "lastSeen": "2026-07-14T18:24:32Z" }, "info": [ { "name": "overview", "title": "Overview", "position": 0, "node_kind_id": 1, "markdown": { "content": "This user has privileged access in the environment." } } ] } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/graphs/shortest-path": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetShortestPath", "summary": "Get the shortest path graph", "description": "A graph of the shortest path from `start_node` to `end_node`.", "tags": [ "Graph", "Community", "Enterprise" ], "parameters": [ { "name": "start_node", "description": "The start node objectId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "end_node", "description": "The end node objectId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "relationship_kinds", "description": "Specific relationship kinds to include in the pathfinding search. If the kinds are not valid kinds, the query will error.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.contains" } }, { "name": "only_traversable", "description": "Whether or not to only include traversable kinds. If true and no `relationship_kinds` are specified, all traversable kinds will be searched. If true, and `relationship_kinds` param includes non-traversable kinds, the non-traversable kinds will be excluded from the path search. If false or omitted, all kinds will be searched.", "in": "query", "required": false, "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "A graph of the shortest path from `start_node` to `end_node`.", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.unified-graph.graph" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/graphs/edge-composition": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetPathComposition", "summary": "Get path composition", "description": "Returns a graph representing the various nodes and edges that make up the complex post-processed edge.", "tags": [ "Graph", "Community", "Enterprise" ], "parameters": [ { "name": "source_node", "description": "The ID of the starting node.", "in": "query", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "target_node", "description": "The ID of the ending node.", "in": "query", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "edge_type", "description": "The type of edge to show the composition for.", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Returns graph data that contains a collection of nodes and edges related to the composition of the edge queried.", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.unified-graph.graph" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/graphs/relay-targets": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetRelayTargets", "summary": "Get relay targets", "description": "Returns a graph representing the various nodes that are valid relay targets for this edge", "tags": [ "Graph", "Community", "Enterprise" ], "parameters": [ { "name": "source_node", "description": "The ID of the starting node.", "in": "query", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "target_node", "description": "The ID of the ending node.", "in": "query", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "edge_type", "description": "The type of edge to show the composition for.", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Returns graph data that contains a collection of nodes that are valid relay targets related to the composition of the edge queried.", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.unified-graph.graph" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/graphs/acl-inheritance": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetACLInheritancePath", "summary": "Get ACL inheritance path", "description": "Returns a graph representing the path that an ACE is inherited through for a given edge.", "tags": [ "Graph", "Community", "Enterprise" ], "parameters": [ { "name": "source_node", "description": "The ID of the starting node.", "in": "query", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "target_node", "description": "The ID of the ending node.", "in": "query", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "edge_type", "description": "The type of edge the ACL inheritance path is being fetched for.", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Returns graph data that contains a collection of nodes and edges that make up the ACL inheritance path.", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.unified-graph.graph" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/extensions": { "put": { "description": "**Experimental** - Upserts the OpenGraph extension", "tags": [ "OpenGraph (Experimental)", "Community", "Enterprise" ], "operationId": "UpsertOpenGraphExtension", "summary": "Upserts the OpenGraph Extension", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.graph-extension.payload" }, "examples": { "Generic": { "summary": "Generic OpenGraph Extension Example", "description": "An example generic OpenGraph Extension payload.", "value": { "schema": { "name": "OpenGraph_Extension", "display_name": "OpenGraph Extension", "version": "v1.0.0", "namespace": "OGE" }, "node_kinds": [ { "name": "OGE_Node_Kind_1", "display_name": "Node Kind 1", "description": "A generic node kind", "is_display_kind": true, "icon": "computer", "color": "#FF0000", "info": { "overview": { "title": "Overview", "position": 1, "markdown": { "content": "This is an overview panel for Node Kind 1" } }, "details": { "title": "Additional Details", "position": 2, "markdown": { "content": "This panel provides additional information about the node" } } } }, { "name": "OGE_Node_Kind_2", "display_name": "Node Kind 2", "description": "A secondary generic node kind", "is_display_kind": false }, { "name": "OGE_Environment_Kind", "display_name": "Environment", "description": "A generic environment kind", "icon": "sitemap", "color": "#00FF00", "is_display_kind": true } ], "relationship_kinds": [ { "name": "OGE_ConnectedTo", "description": "A generic relationship kind", "is_traversable": true, "info": { "abuse": { "title": "Abuse Info", "position": 1, "markdown": { "content": "Information about how this relationship can be abused" } } } } ], "environments": [ { "environment_kind": "OGE_Environment_Kind", "source_kind": "OGExtension", "principal_kinds": [ "OGE_Node_Kind_1", "OGE_Node_Kind_2" ] } ], "relationship_findings": [ { "name": "OGE_Finding_1", "display_name": "Finding 1", "relationship_kind": "OGE_ConnectedTo", "environment_kind": "OGE_Environment_Kind", "remediation": { "short_description": "a remediation", "long_description": "a remediation to fix Finding 1", "short_remediation": "Do X", "long_remediation": "Do X to fix Finding 1" } } ] } }, "Active Directory": { "summary": "Active Directory Example", "description": "An example Active Directory OpenGraph Extension. As a note, the Active Directory objects in the DB do not currently conform to the expected validation rules. This will change in the future. The example provided is how an Active Directory extension would look in the OpenGraph framework.", "value": { "schema": { "name": "Active_Directory", "display_name": "Active Directory", "version": "v1.0.0", "namespace": "AD" }, "node_kinds": [ { "name": "AD_Computer", "display_name": "Computer", "description": "An Active Directory Computer object", "is_display_kind": true, "icon": "computer", "color": "#FF0000", "info": { "overview": { "title": "Computer Overview", "position": 1, "markdown": { "content": "Active Directory computer objects represent physical or virtual machines joined to the domain" } } } }, { "name": "AD_User", "display_name": "User", "description": "An Active Directory User object", "is_display_kind": true, "icon": "user", "color": "#0000FF", "info": { "overview": { "title": "User Overview", "position": 1, "markdown": { "content": "Active Directory user accounts represent individuals who can authenticate to the domain" } }, "security": { "title": "Security Considerations", "position": 2, "markdown": { "content": "User accounts should follow the principle of least privilege" } } } }, { "name": "AD_LocalGroup", "display_name": "Local Group", "description": "An Active Directory Local Group object", "is_display_kind": false }, { "name": "AD_Domain", "display_name": "Domain", "description": "An Active Directory Domain environment object", "icon": "sitemap", "color": "#00FF00", "is_display_kind": true } ], "relationship_kinds": [ { "name": "AD_MemberOf", "description": "An Active Directory relationship kind", "is_traversable": true, "info": { "description": { "title": "MemberOf Relationship", "position": 1, "markdown": { "content": "The MemberOf relationship indicates group membership in Active Directory" } }, "abuse": { "title": "Abuse Information", "position": 2, "markdown": { "content": "Group membership can be leveraged to inherit permissions and access rights" } } } } ], "environments": [ { "environment_kind": "AD_Domain", "source_kind": "ActiveDirectory", "principal_kinds": [ "AD_User", "AD_Computer" ] } ], "relationship_findings": [ { "name": "AD_Finding_1", "display_name": "Finding 1 (Active Directory)", "relationship_kind": "AD_MemberOf", "environment_kind": "AD_Domain", "remediation": { "short_description": "a remediation", "long_description": "a remediation to fix Finding 1", "short_remediation": "Do X", "long_remediation": "Do X to fix Finding 1" } } ] } } } } } }, "responses": { "200": { "description": "OK" }, "201": { "description": "CREATED" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "get": { "description": "**Experimental** - Lists pertinent OpenGraph extension information such as id, name, version, and if it is a built-in extension", "tags": [ "OpenGraph (Experimental)", "Community", "Enterprise" ], "operationId": "ListExtensions", "summary": "List OpenGraph Extensions Information", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.response.graph-extensions-info" } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/extensions/{extension_id}": { "delete": { "description": "**Experimental** - Deletes an OpenGraph Extension by Extension ID", "tags": [ "OpenGraph (Experimental)", "Community", "Enterprise" ], "operationId": "DeleteExtension", "summary": "Delete OpenGraph Extension", "parameters": [ { "name": "extension_id", "in": "path", "required": true, "description": "Extension ID for deletion", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/extensions-edges": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListEdgeKinds", "summary": "List Edge Kinds", "description": "**Experimental** - List all Edge Kinds across OpenGraph Schemas", "tags": [ "OpenGraph (Experimental)", "Enterprise", "Community" ], "parameters": [ { "name": "schemas", "description": "Schema names to filter response by", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "is_traversable", "description": "Filter response by whether or not an edge is traversable", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.boolean" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.graph-schema-edge-kinds" } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/node-kinds/{node_kind_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "node_kind_id", "description": "Node Kind ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetNodeKind", "summary": "Get Node Kind", "description": "**Experimental** - Retrieves the details of a single OpenGraph node kind by its id, including its entity-panel info map keyed by info key.\n", "tags": [ "OpenGraph (Experimental)", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.node-kind-response" } } }, "example": { "data": { "node_kind_id": 42, "name": "User", "display_name": "User", "description": "a user node kind", "is_display_kind": true, "icon": "user", "color": "#FFFFFF", "info": { "overview": { "title": "Overview", "position": 1, "markdown": { "content": "This is an overview panel for the node kind" } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/saved-queries": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListSavedQueries", "summary": "List saved queries", "description": "Get all saved queries for the current user", "tags": [ "Cypher", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" }, { "name": "sort_by", "description": "Sortable columns are user_id, name, query, id, created_at, updated_at, deleted_at.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "query", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "user_id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "scope", "in": "query", "schema": { "type": "string", "enum": [ "all", "owned", "shared", "public" ], "default": "owned" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "allOf": [ { "type": "object", "properties": { "scope": { "type": "string" } } }, { "$ref": "#/components/schemas/model.saved-query" } ] } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "post": { "operationId": "CreateSavedQuery", "summary": "Create a saved query", "description": "Create a new saved query", "tags": [ "Cypher", "Community", "Enterprise" ], "requestBody": { "description": "The request body for creating a saved query", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.saved-query" } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.saved-query" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/saved-queries/{saved_query_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "saved_query_id", "description": "ID of the saved query", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetSavedQuery", "summary": "Return a saved query", "description": "Returns an existing saved query by ID", "tags": [ "Cypher", "Community", "Enterprise" ], "parameters": [ { "name": "saved_query_id", "description": "ID of the saved query", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.saved-query" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "DeleteSavedQuery", "summary": "Delete a saved query", "description": "Delete an existing saved query by ID", "tags": [ "Cypher", "Community", "Enterprise" ], "parameters": [ { "name": "saved_query_id", "description": "ID of the saved query", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "responses": { "204": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "put": { "operationId": "UpdateSavedQuery", "summary": "Update a saved query", "description": "Update an existing saved query by ID", "tags": [ "Cypher", "Community", "Enterprise" ], "parameters": [ { "name": "saved_query_id", "description": "ID of the saved query", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "requestBody": { "description": "The request body for updating a saved query", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.saved-query" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.saved-query" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/saved-queries/{saved_query_id}/permissions": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "saved_query_id", "description": "ID of the saved query", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetSavedQueryPermissions", "summary": "Retrieves saved query permissions for provided query id", "description": "Retrieves saved query permissions for provided query id", "tags": [ "Cypher", "Community", "Enterprise" ], "parameters": [ { "name": "saved_query_id", "description": "ID of the saved query", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.saved-queries-permissions.response" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "DeleteSavedQueryPermissions", "summary": "Revokes permission of a saved query from users", "description": "Revokes permission of a saved query from a given set of users", "tags": [ "Cypher", "Community", "Enterprise" ], "parameters": [ { "name": "saved_query_id", "description": "ID of the saved query", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "requestBody": { "description": "The request body for revoking permissions of a saved query from users", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "user_ids": { "type": "array", "description": "A list of user ids that will have their permission revoked from the given saved query", "items": { "type": "string", "format": "uuid" } } } } } } }, "responses": { "204": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "put": { "operationId": "ShareSavedQuery", "summary": "Share a saved query or set it to public", "description": "Shares an existing saved query or makes it public", "tags": [ "Cypher", "Community", "Enterprise" ], "parameters": [ { "name": "saved_query_id", "description": "ID of the saved query", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "requestBody": { "description": "The request body for sharing a saved query or making it public", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "user_ids": { "type": "array", "items": { "type": "string", "format": "uuid" } }, "public": { "type": "boolean" } } } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.saved-queries-permissions" } } } } } } }, "204": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/saved-queries/{saved_query_id}/export": { "parameters": [ { "name": "saved_query_id", "description": "ID of the saved query", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "ExportSavedQuery", "summary": "Export a saved query", "description": "Export an existing saved query by ID", "tags": [ "Cypher", "Community", "Enterprise" ], "responses": { "200": { "description": "**OK**\nThis response will contain binary content.\n\nThe response ZIP file will contain JSON files using their query name as the file name.\nThe underlying JSON file is expected to have the following structure:\n```json\n{\n \"name\": \"Return_Nodes\",\n \"query\": \"MATCH (n) RETURN n\",\n \"description\": \"Returns all nodes in a given graph\"\n}\n```\n", "headers": { "Content-Disposition": { "schema": { "type": "string" } } }, "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" }, "example": "[this request has a binary response]" } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/saved-queries/import": { "post": { "operationId": "ImportSavedQueries", "summary": "Import one or more cypher queries.", "description": "Import one or more cypher queries.\n\nThe request body should be a json file containing a single query or a Zip consisting of multiple JSON files each containing a single query.\n\nThe underlying JSON file(s) is expected to have the following structure:\n```json\n{\n \"name\": \"Return_Nodes\",\n \"query\": \"MATCH (n) RETURN n\",\n \"description\": \"Returns all nodes in a given graph\"\n}\n```\n", "tags": [ "Cypher", "Community", "Enterprise" ], "requestBody": { "description": "Request body should be a JSON or Zip file.", "required": true, "content": { "application/json": { "schema": { "type": "string", "format": "binary" } }, "application/zip": { "schema": { "type": "string", "format": "binary" } } } }, "responses": { "201": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "415": { "$ref": "#/components/responses/unsupported-media-type" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/saved-queries/export": { "parameters": [ { "name": "scope", "description": "Scope of saved queries, only the first scope parameter is used.", "in": "query", "required": true, "schema": { "type": "string", "enum": [ "all", "public", "shared", "owned" ] } } ], "get": { "operationId": "ExportSavedQueries", "summary": "Export one or more saved queries", "description": "Export existing saved queries using the scope parameter.", "tags": [ "Cypher", "Community", "Enterprise" ], "responses": { "200": { "description": "**OK**\nThis response will contain binary content.\n\nThe response ZIP file will contain JSON files using their query name as the file name.\nThe underlying JSON file is expected to have the following structure:\n```json\n{\n \"name\": \"Return_Nodes\",\n \"query\": \"MATCH (n) RETURN n\",\n \"description\": \"Returns all nodes in a given graph\"\n}\n```\n", "headers": { "Content-Disposition": { "schema": { "type": "string" } } }, "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" }, "example": "[this request has a binary response]" } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/graphs/cypher": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "RunCypherQuery", "summary": "Run a cypher query", "description": "Runs a manual cypher query directly against the database.", "tags": [ "Cypher", "Community", "Enterprise" ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "query": { "type": "string" }, "include_properties": { "type": "boolean" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.unified-graph.graph.w.property.keys" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/azure/{entity_type}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "entity_type", "description": "Entity Type", "in": "path", "required": true, "schema": { "type": "string" } } ], "get": { "operationId": "GetAzureEntity", "summary": "Get Azure entity", "description": "Retrieves entity information for the given Azure object ID.\nIf `related_entity_type` parameter is not set, this endpoint will return information\nabout a single entity. Using the `counts` boolean parameter will further modify the response.\nIf `related_entity_type` parameter is set, this endpoint will return information about entities\nrelated to a single entity. The `type` parameter will morph the response data structure. The `list`\nvalue for the `type` parameter also accepts `skip` and `limit` parameters.\n", "tags": [ "Azure Entities", "Community", "Enterprise" ], "parameters": [ { "name": "object_id", "description": "The object ID of the entity being operated on.", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "counts", "description": "Returns related entity counts. Does not work with `related_entity_type` parameter.", "in": "query", "schema": { "type": "boolean" } }, { "name": "related_entity_type", "description": "Flags the query to return related entity information based on the type passed.", "in": "query", "schema": { "type": "string" } }, { "name": "type", "description": "The type of return data expected. Only works with `related_entity_type` parameter.", "in": "query", "schema": { "type": "string", "default": "list", "enum": [ "list", "graph" ] } }, { "name": "skip", "description": "This query parameter is used for determining the number of objects to skip in pagination.\nOnly compatible with `related_entity_type` and `type=list`\n", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.skip" } }, { "name": "limit", "description": "This query parameter is used for setting an upper limit of objects returned in paginated responses.\nOnly compatible with `related_entity_type` and `type=list`\n", "in": "query", "schema": { "type": "integer", "minimum": 0, "default": 100, "description": "The limit of results requested by the client." } } ], "responses": { "200": { "description": "This endpoint returns a polymorphic response dependent on the query parameters passed. Three\ndifferent response schemas are possible:\n- **entity** schema is used when `related_entity_type` is not set. Additional 'count' properties are\n dependent on the type of entity being queried.\n- **related-list** schema is used when `related_entity_type` is set and `type` parameter is either\n `list` or not set (it is the default), and it supports pagination.\n- **related-graph** schema is used when `related_entity_type` is set and `type=graph`.\n", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object", "title": "entity", "description": "This response is used when `related_entity_type` is not set. It returns information\nabout a single node. All node types will return with the basic node fields, but the\nadditional count properties are dependent on the kind of node returned. Setting\n`counts=true` will populate those count details at the cost of performance.\n", "properties": { "data": { "allOf": [ { "type": "object", "properties": { "kind": { "type": "string" }, "properties": { "type": "object", "additionalProperties": { "type": "object" } } } }, { "type": "object", "additionalProperties": { "type": "integer" } } ] } } }, { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "title": "related-list", "description": "This response is used when `related_entity_type` is set and the `type` parameter is\neither `list` or not set (it is the default return type). It returns a list of related\nentities and supports pagination parameters.\n", "properties": { "data": { "type": "array", "items": { "type": "object", "properties": { "kind": { "type": "string" }, "properties": { "type": "object", "additionalProperties": { "type": "object" } }, "additionalProperties": { "type": "integer" } } } } } } ] }, { "allOf": [ { "$ref": "#/components/schemas/model.bh-graph.graph" }, { "title": "related-graph", "description": "This response is used when `related_entity_type` is set and the `type` parameter is\nset to `graph`. It returns graph data without a basic data response wrapper.\n" } ] } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/base/{object_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetEntity", "summary": "Get entity info", "description": "Get basic info and counts for this node.", "tags": [ "AD Base Entities", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.hydrate-counts" } ], "responses": { "200": { "$ref": "#/components/responses/entity-info-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/base/{object_id}/controllables": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetEntityControllables", "summary": "Get entity controllables", "description": "Get a list, graph, or count of the principals this node can control.", "tags": [ "AD Base Entities", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/base/{object_id}/controllers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetEntityControllers", "summary": "Get entity controllers", "description": "Get a list, graph, or count of the principals that can control this node.", "tags": [ "AD Base Entities", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntity", "summary": "Get computer entity info", "description": "Get info and counts for this computer node.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.hydrate-counts" } ], "responses": { "200": { "$ref": "#/components/responses/entity-info-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/admin-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntityAdminRights", "summary": "Get computer entity admin rights", "description": "Get a list, graph, or count of the systems this computer has admin rights to.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/admin-users": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntityAdmins", "summary": "Get computer entity admins", "description": "Get a list, graph, or count of the principals that have admin rights on this computer.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/constrained-delegation-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntityConstrainedDelegationRights", "summary": "Get computer entity constrained delegation rights", "description": "Get a list, graph, or count of the principals that this computer has constrained delegations rights to.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/constrained-users": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntityConstrainedUsers", "summary": "Get computer entity constrained users", "description": "Get a list, graph, or count of the principals that have constrained delegation rights to this computer.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/controllables": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntityControllables", "summary": "Get computer entity controllables", "description": "Get a list, graph, or count of the principals this computer can control.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/controllers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntityControllers", "summary": "Get computer entity controllers", "description": "Get a list, graph, or count of the principals that can control this computer.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/dcom-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntityDcomRights", "summary": "Get computer entity DCOM rights", "description": "Get a list, graph, or count of the systems this computer can execute DCOM on.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/dcom-users": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntityDcomUsers", "summary": "Get computer entity DCOM users", "description": "Get a list, graph, or count of the principals that can execute DCOM on this computer.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/group-membership": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntityGroupMembership", "summary": "Get computer entity group membership", "description": "Get a list, graph, or count of the groups this computer is a member of.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/ps-remote-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntityPsRemoteRights", "summary": "Get computer entity remote PowerShell rights", "description": "Get a list, graph, or count of the systems this computer has remote PowerShell rights on.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/ps-remote-users": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntityPsRemoteUsers", "summary": "Get computer entity remote PowerShell users", "description": "Get a list, graph, or count of the principals that have remote PowerShell rights on this computer.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/rdp-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntityRdpRights", "summary": "Get computer entity RDP rights", "description": "Get a list, graph, or count of the systems this computer can RDP to.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/rdp-users": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntityRdpUsers", "summary": "Get computer entity RDP users", "description": "Get a list, graph, or count of the principals that have RDP rights on this computer.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/sessions": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntitySessions", "summary": "Get computer entity sessions", "description": "Get a list, graph, or count of the principals with active sessions on this computer.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/computers/{object_id}/sql-admins": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetComputerEntitySqlAdmins", "summary": "Get computer entity SQL admins", "description": "Get a list, graph, or count of the principals that have SQL admin rights on this computer.", "tags": [ "Computers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/containers/{object_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetContainerEntity", "summary": "Get container entity info", "description": "Get basic info and counts for this container node.", "tags": [ "Containers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.hydrate-counts" } ], "responses": { "200": { "$ref": "#/components/responses/entity-info-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/containers/{object_id}/controllers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetContainerEntityControllers", "summary": "Get container entity controllers", "description": "Get a list, graph, or count of the principals that can control this container.", "tags": [ "Containers", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntity", "summary": "Get domain entity info", "description": "Get basic info and counts for this domain node.", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.hydrate-counts" } ], "responses": { "200": { "$ref": "#/components/responses/entity-info-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "patch": { "operationId": "UpdateDomainEntity", "summary": "Update the Domain entity", "description": "Updates the supported properties on the Domain entity.", "tags": [ "Domains", "Community", "Enterprise" ], "requestBody": { "description": "The patch request body for updating Domain", "content": { "application/json": { "schema": { "type": "object", "properties": { "collected": { "type": "boolean" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "collected": { "type": "boolean" } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/computers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityComputers", "summary": "Get domain entity computers", "description": "Get a list or count of the computers that belong to this domain.", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/controllers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityControllers", "summary": "Get domain entity controllers", "description": "Get a list, graph, or count of the principals that can control this domain.", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/dc-syncers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityDcSyncers", "summary": "Get domain entity DC Syncers", "description": "Get a list, graph, or count of the principals that can DC sync this domain.", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/foreign-admins": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityForeignAdmins", "summary": "Get domain entity foreign admins", "description": "Get a list, graph, or count of the principals outside of this domain that have admin\nrights on principals in this domain.\n", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/foreign-gpo-controllers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityForeignGpoControllers", "summary": "Get domain entity foreign GPO controllers", "description": "Get a list, graph, or count of the principals outside of this domain that can control\nGPOs inside this domain.\n", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/foreign-groups": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityForeignGroups", "summary": "Get domain entity foregin groups", "description": "Get a list, graph, or count of the groups outside of this domain that are members\nof groups inside this domain.\n", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/foreign-users": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityForeignUsers", "summary": "Get domain entity foreign users", "description": "Get a list, graph, or count of the users outside of this domain that are members\nof groups inside this domain.\n", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/gpos": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityGpos", "summary": "Get domain entity GPOs", "description": "Get a list or count of the GPOs in this domain.", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/groups": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityGroups", "summary": "Get domain entity groups", "description": "Get a list or count of the groups in this domain.", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/inbound-trusts": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityInboundTrusts", "summary": "Get domain entity inbound trusts", "description": "Get a list, graph, or count of the inbound trusts for this domain.", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/linked-gpos": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityLinkedGpos", "summary": "Get domain entity linked GPOs", "description": "Get a list, graph, or count of the GPOs linked to this domain.", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/ous": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityOus", "summary": "Get domain entity OUs", "description": "Get a list or count of the OUs in this domain.", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/outbound-trusts": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityOutboundTrusts", "summary": "Get domain entity outbound trusts", "description": "Get a list, graph, or count of the outbound trusts for this domain.", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/users": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityUsers", "summary": "Get domain entity users", "description": "Get a list or count of the users in this domain.", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{object_id}/adcs-escalations": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetDomainEntityAdcsEscalations", "summary": "Get ADCS escalations of Domain entity", "description": "Get a list, graph, or count of the ADCS escalations of this Domain.", "tags": [ "Domains", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/gpos/{object_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGpoEntity", "summary": "Get GPO entity info", "description": "Get info and counts for this GPO node.", "tags": [ "GPOs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.hydrate-counts" } ], "responses": { "200": { "$ref": "#/components/responses/entity-info-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/gpos/{object_id}/computers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGpoEntityComputers", "summary": "Get GPO entity computer", "description": "Get a list, graph, or count of the computers affected by this GPO.", "tags": [ "GPOs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/gpos/{object_id}/controllers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGpoEntityControllers", "summary": "Get GPO entity controllers", "description": "Get a list, graph, or count of the principals that can control this OU.", "tags": [ "GPOs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/gpos/{object_id}/ous": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGpoEntityOus", "summary": "Get GPO entity OUs", "description": "Get a list, graph, or count of the OUs affected by this GPO.", "tags": [ "GPOs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/gpos/{object_id}/tier-zero": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGpoEntityTierZero", "summary": "Get GPO entity tier-zero", "description": "Get a list, graph, or count of the tier-zero principals associated with this GPO.", "tags": [ "GPOs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/gpos/{object_id}/users": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGpoEntityUsers", "summary": "Get GPO entity users", "description": "Get a list, graph, or count of the users affected by this GPO.", "tags": [ "GPOs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/aiacas/{object_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetAiaCaEntity", "summary": "Get AIA CA entity info", "description": "Get info and counts for this AIA CA node.", "tags": [ "AIA CAs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.hydrate-counts" } ], "responses": { "200": { "$ref": "#/components/responses/entity-info-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/aiacas/{object_id}/controllers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetAiaCaEntityControllers", "summary": "Get AIA CA entity controllers", "description": "Get a list, graph, or count of the principals that can control this AIA CA.", "tags": [ "AIA CAs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/aiacas/{object_id}/pki-hierarchy": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetAiaCaEntityPkiHierarchy", "summary": "Get PKI hierarchy of AIA CA entity", "description": "Get a list, graph, or count of the PKI hierarchy of this AIA CA.", "tags": [ "AIA CAs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/rootcas/{object_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetRootCaEntity", "summary": "Get Root CA entity info", "description": "Get info and counts for this Root CA node.", "tags": [ "Root CAs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.hydrate-counts" } ], "responses": { "200": { "$ref": "#/components/responses/entity-info-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/rootcas/{object_id}/controllers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetRootCaEntityControllers", "summary": "Get Root CA entity controllers", "description": "Get a list, graph, or count of the principals that can control this Root CA.", "tags": [ "Root CAs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/rootcas/{object_id}/pki-hierarchy": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetRootCaEntityPkiHierarchy", "summary": "Get PKI hierarchy of Root CA entity", "description": "Get a list, graph, or count of the PKI hierarchy of this Root CA.", "tags": [ "Root CAs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/enterprisecas/{object_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetEnterpriseCaEntity", "summary": "Get Enterprise CA entity info", "description": "Get info and counts for this Enterprise CA node.", "tags": [ "Enterprise CAs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.hydrate-counts" } ], "responses": { "200": { "$ref": "#/components/responses/entity-info-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/enterprisecas/{object_id}/controllers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetEnterpriseCaEntityControllers", "summary": "Get Enterprise CA entity controllers", "description": "Get a list, graph, or count of the principals that can control this Enterprise CA.", "tags": [ "Enterprise CAs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/enterprisecas/{object_id}/pki-hierarchy": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetEnterpriseCaEntityPkiHierarchy", "summary": "Get PKI hierarchy of Enterprise CA entity", "description": "Get a list, graph, or count of the PKI hierarchy of this Enterprise CA.", "tags": [ "Enterprise CAs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/enterprisecas/{object_id}/published-templates": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetEnterpriseCaEntityPublishedTemplates", "summary": "Get published certificate templates of Enterprise CA entity", "description": "Get a list, graph, or count of the published certificate templates of this Enterprise CA.", "tags": [ "Enterprise CAs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/ntauthstores/{object_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetNtAuthStoreEntity", "summary": "Get NT Auth Store entity info", "description": "Get info and counts for this NT Auth Store node.", "tags": [ "NT Auth Stores", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.hydrate-counts" } ], "responses": { "200": { "$ref": "#/components/responses/entity-info-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/ntauthstores/{object_id}/controllers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetNtAuthStoreEntityControllers", "summary": "Get NT Auth Store entity controllers", "description": "Get a list, graph, or count of the principals that can control this NT Auth Store.", "tags": [ "NT Auth Stores", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/ntauthstores/{object_id}/trusted-cas": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetNtAuthStoreEntityTrustedCas", "summary": "Get trusted Enterprise CAs of NT Auth Store entity", "description": "Get a list, graph, or count of the trusted Enterprise CAs of this NT Auth Store.", "tags": [ "NT Auth Stores", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/certtemplates/{object_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetCertTemplateEntity", "summary": "Get Cert Template entity info", "description": "Get info and counts for this Cert Template node.", "tags": [ "Cert Templates", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.hydrate-counts" } ], "responses": { "200": { "$ref": "#/components/responses/entity-info-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/certtemplates/{object_id}/controllers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetCertTemplateEntityControllers", "summary": "Get Cert Template entity controllers", "description": "Get a list, graph, or count of the principals that can control this Cert Template.", "tags": [ "Cert Templates", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/certtemplates/{object_id}/published-to-cas": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetCertTemplateEntityPublishedToCAs", "summary": "Get Enterprise CAs having Cert Template entity published", "description": "Get a list, graph, or count of the Enterprise CAs having this Cert Template published.", "tags": [ "Cert Templates", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/ous/{object_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetOuEntity", "summary": "Get OU entity info", "description": "Get info and counts for this OU node.", "tags": [ "OUs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.hydrate-counts" } ], "responses": { "200": { "$ref": "#/components/responses/entity-info-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/ous/{object_id}/computers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetOuEntityComputers", "summary": "Get OU entity computers", "description": "Get a list, graph, or count of the computers contained by this OU.", "tags": [ "OUs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/ous/{object_id}/gpos": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetOuEntityGpos", "summary": "Get OU entity GPOs", "description": "Get a list, graph, or count of the GPOs that affect this OU.", "tags": [ "OUs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/ous/{object_id}/groups": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetOuEntityGroups", "summary": "Get OU entity groups", "description": "Get a list, graph, or count of the groups contained by this OU.", "tags": [ "OUs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/ous/{object_id}/users": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetOuEntityUsers", "summary": "Get OU entity users", "description": "Get a list, graph, or count of the users contained by this OU.", "tags": [ "OUs", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/users/{object_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetUserEntity", "summary": "Get User entity info", "description": "Get info and counts for this User node.", "tags": [ "AD Users", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.hydrate-counts" } ], "responses": { "200": { "$ref": "#/components/responses/entity-info-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/users/{object_id}/admin-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetUserEntityAdminRights", "summary": "Get User entity admin rights", "description": "Get a list, graph, or count of the systems this user has admin rights to.", "tags": [ "AD Users", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/users/{object_id}/constrained-delegation-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetUserEntityConstrainedDelegationRights", "summary": "Get User entity constrained delegation rights", "description": "Get a list, graph, or count of the systems this user has constrained delegation rights to.", "tags": [ "AD Users", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/users/{object_id}/controllables": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetUserEntityControllables", "summary": "Get User entity controllables", "description": "Get a list, graph, or count of the principals this user can control.", "tags": [ "AD Users", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/users/{object_id}/controllers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetUserEntityControllers", "summary": "Get User entity controllers", "description": "Get a list, graph, or count of the principals that can control this User.", "tags": [ "AD Users", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/users/{object_id}/dcom-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetUserEntityDcomRights", "summary": "Get User entity DCOM rights", "description": "Get a list, graph, or count of the systems this user can execute DCOM on.", "tags": [ "AD Users", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/users/{object_id}/memberships": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetUserEntityMembership", "summary": "Get User entity membership", "description": "Get a list, graph, or count of the groups this user is a member of.", "tags": [ "AD Users", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/users/{object_id}/ps-remote-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetUserEntityPsRemoteRights", "summary": "Get User entity PowerShell remote rights", "description": "Get a list, graph, or count of the systems this user can execute PowerShell remote on.", "tags": [ "AD Users", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/users/{object_id}/rdp-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetUserEntityRdpRights", "summary": "Get User entity RDP rights", "description": "Get a list, graph, or count of the systems this user has RDP rights to.", "tags": [ "AD Users", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/users/{object_id}/sessions": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetUserEntitySessions", "summary": "Get User entity sessions", "description": "Get a list, graph, or count of the systems this user has an active session on.", "tags": [ "AD Users", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/users/{object_id}/sql-admin-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetUserEntitySqlAdminRights", "summary": "Get User entity SQL admin rights", "description": "Get a list, graph, or count of the systems this user has SQL admin rights to.", "tags": [ "AD Users", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/groups/{object_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGroupEntity", "summary": "Get Group entity info", "description": "Get info and counts for this Group node.", "tags": [ "Groups", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.hydrate-counts" } ], "responses": { "200": { "$ref": "#/components/responses/entity-info-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/groups/{object_id}/admin-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGroupEntityAdminRights", "summary": "Get Group entity admin rights", "description": "Get a list, graph, or count of the systems this group has admin rights to.", "tags": [ "Groups", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/groups/{object_id}/controllables": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGroupEntityControllables", "summary": "Get Group entity controllables", "description": "Get a list, graph, or count of the principals this group can control.", "tags": [ "Groups", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/groups/{object_id}/controllers": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGroupEntityControllers", "summary": "Get Group entity controllers", "description": "Get a list, graph, or count of the principals that can control this group.", "tags": [ "Groups", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/groups/{object_id}/dcom-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGroupEntityDcomRights", "summary": "Get Group entity DCOMRights", "description": "Get a list, graph, or count of the systems this group can execute DCOM on.", "tags": [ "Groups", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/groups/{object_id}/members": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGroupEntityMembers", "summary": "Get Group entity members", "description": "Get a list, graph, or count of the principals that are a member of this group.", "tags": [ "Groups", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/groups/{object_id}/memberships": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGroupEntityMemberships", "summary": "Get Group entity memberships", "description": "Get a list, graph, or count of the groups this group is a member of.", "tags": [ "Groups", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/groups/{object_id}/ps-remote-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGroupEntityPsRemoteRights", "summary": "Get Group entity PowerShell remote rights", "description": "Get a list, graph, or count of the systems this group can execute PowerShell remote on.", "tags": [ "Groups", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/groups/{object_id}/rdp-rights": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGroupEntityRdpRights", "summary": "Get Group entity RDP rights", "description": "Get a list, graph, or count of the systems this group can RDP to.", "tags": [ "Groups", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/groups/{object_id}/sessions": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetGroupEntitySessions", "summary": "Get Group entity sessions", "description": "Get a list, graph, or count of the active sessions for users that belong to this group.", "tags": [ "Groups", "Community", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.entity.skip" }, { "$ref": "#/components/parameters/query.entity.limit" }, { "$ref": "#/components/parameters/query.entity.type" }, { "$ref": "#/components/parameters/query.entity.sort-by" } ], "responses": { "200": { "$ref": "#/components/responses/related-entity-query-results" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/completeness": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetCompletenessStats", "summary": "Get database completeness stats", "description": "Get the percentage of local admins and sessions collected", "tags": [ "Data Quality", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "type": "number", "format": "double" } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/ad-domains/{domain_id}/data-quality-stats": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "domain_id", "description": "Domain ID", "in": "path", "required": true, "schema": { "type": "string" } } ], "get": { "operationId": "GetAdDomainDataQualityStats", "summary": "Get AD domain data quality stats", "description": "Time series list of data quality stats for a given AD domain", "tags": [ "Data Quality", "Community", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are created_at, updated_at.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "start", "description": "Beginning datetime of range (inclusive) in RFC-3339 format; Defaults to current datetime minus 30 days", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "end", "description": "Ending datetime of range (inclusive) in RFC-3339 format; Defaults to current datetime", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "$ref": "#/components/schemas/api.response.time-window" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.ad-data-quality-stat" } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/azure-tenants/{tenant_id}/data-quality-stats": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "tenant_id", "description": "Tenant ID", "in": "path", "required": true, "schema": { "type": "string" } } ], "get": { "operationId": "GetAzureTenantDataQualityStats", "summary": "Get Azure tenant data quality stats", "description": "Time series list of data quality stats for a given Azure tenant", "tags": [ "Data Quality", "Community", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are created_at, updated_at.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "start", "description": "Beginning datetime of range (inclusive) in RFC-3339 format; Defaults to current datetime minus 30 days", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "end", "description": "Ending datetime of range (inclusive) in RFC-3339 format; Defaults to current datetime", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "$ref": "#/components/schemas/api.response.time-window" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.azure-data-quality-stat" } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/platform/{platform_id}/data-quality-stats": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "platform_id", "description": "Platform ID", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "ad", "azure" ] } } ], "get": { "operationId": "GetPlatformDataQualityAggregate", "summary": "Get platform data quality aggregate", "description": "Time series list of aggregate data quality stats for a given platform", "tags": [ "Data Quality", "Community", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are created_at, updated_at.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "start", "description": "Beginning datetime of range (inclusive) in RFC-3339 format; Defaults to current datetime minus 30 days", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "end", "description": "Ending datetime of range (inclusive) in RFC-3339 format; Defaults to current datetime", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.response.data-quality-platform-aggregate" } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/data-quality-stats": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetDataQualityStats", "summary": "Get environment-specific data quality stats", "description": "Time series list of data quality stats for a given environment", "tags": [ "Data Quality", "Community", "Enterprise" ], "parameters": [ { "name": "environment_id", "description": "Required. Filters results to the given environment.", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "sort_by", "description": "Sortable columns are created_at, updated_at.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "start", "description": "Beginning datetime of range (inclusive) in RFC-3339 format; Defaults to current datetime minus 30 days", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "end", "description": "Ending datetime of range (inclusive) in RFC-3339 format; Defaults to current datetime", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "$ref": "#/components/schemas/api.response.time-window" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.data-quality-stat" } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/data-quality-stats-aggregations": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetDataQualityAggregations", "summary": "Get data quality aggregations by environment kind", "description": "Returns data quality metric counts aggregated per environment kind, optionally scoped to an OpenGraph schema extension, combined across environment instances for each collection run. Results can be filtered, sorted, and paginated.\n", "tags": [ "Data Quality", "Community", "Enterprise" ], "parameters": [ { "name": "schema_environment_kind_id", "description": "Required. Scopes the aggregation to a single environment kind id.\n", "in": "query", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "schema_extension_id", "description": "Optional. Scopes the aggregation to a single OpenGraph schema extension id. The extension must exist or a 404 is returned.\n", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "sort_by", "description": "Sortable columns are created_at, updated_at.\n", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "start", "description": "Beginning datetime of range (inclusive) in RFC-3339 format; Defaults to current datetime minus 30 days", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "end", "description": "Ending datetime of range (inclusive) in RFC-3339 format; Defaults to current datetime", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "$ref": "#/components/schemas/api.response.time-window" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.data-quality-aggregation" } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clear-database": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "DeleteBloodHoundDatabase", "summary": "Delete your BloodHound data", "description": "Wipes your BloodHound data permanently. Specify the data to delete in the request body. Possible data includes collected graph data, relationships of specific types, custom high value selectors, file ingest history, and data quality history.", "tags": [ "Database", "Community", "Enterprise" ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "deleteCollectedGraphData": { "type": "boolean", "description": "When true, deletes all collected graph nodes and edges. Cannot be combined with deleteSourceKinds or deleteRelationships.\n" }, "deleteSourceKinds": { "type": "array", "description": "A list of source kind IDs (from the source_kinds table) whose associated graph nodes and source kind records will be deleted. Use 0 as a special value to delete all \"sourceless\" nodes - nodes that exist in the graph but are not attributed to any source kind. Non-existent IDs will result in a 400 error.\n", "items": { "type": "integer" } }, "deleteRelationships": { "type": "array", "description": "A list of relationship kind names (e.g. \"HasSession\") whose edges will be deleted from the graph. Each value must be a valid, known relationship kind. Cannot be combined with deleteCollectedGraphData.\n", "items": { "type": "string" } }, "deleteFileIngestHistory": { "type": "boolean", "description": "When true, deletes all file ingest job history records." }, "deleteDataQualityHistory": { "type": "boolean", "description": "When true, deletes all data quality history records." }, "deleteAssetGroupSelectors": { "type": "array", "description": "A list of asset group IDs whose custom selectors will be deleted. Triggers a re-analysis after deletion.\n", "items": { "type": "integer" } } } } } } }, "responses": { "204": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/datapipe/status": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetDatapipeStatus", "summary": "Get datapipe status", "description": "Gets the current status of the datapipe", "tags": [ "Datapipe", "Community", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/enum.datapipe-status" }, "updated_at": { "type": "string", "format": "date-time" }, "last_complete_analysis_at": { "type": "string", "format": "date-time" }, "last_analysis_run_at": { "type": "string", "format": "date-time" }, "next_scheduled_analysis_at": { "type": "string", "format": "date-time", "description": "The next time a scheduled analysis will run. Note this field is Enterprise-Only." } } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "429": { "$ref": "#/components/responses/too-many-requests" } } } }, "/api/v2/analysis": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetAnalysisRequest", "summary": "Gets analysis request information", "description": "Returns the current analysis request information. Always returns 200 OK with\nthe request details. When no request is pending, returns a zero-valued response\nwith empty strings, false booleans, null arrays, and zero timestamp.\n", "tags": [ "Datapipe", "Community", "Enterprise" ], "responses": { "200": { "description": "OK. Returns analysis request details if one exists, or a zero-valued\nresponse if no request is pending (requested_by and request_type will be\nempty strings, requested_at will be \"0001-01-01T00:00:00Z\", booleans will\nbe false, and arrays will be null).\n", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "requested_by": { "type": "string" }, "request_type": { "type": "string" }, "requested_at": { "type": "string", "format": "date-time" }, "delete_all_graph": { "type": "boolean" }, "delete_sourceless_graph": { "type": "boolean" }, "delete_source_kinds": { "type": "array", "items": { "type": "string" } }, "delete_relationships": { "type": "array", "items": { "type": "string" } } } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "put": { "operationId": "StartAnalysis", "summary": "Start analysis", "description": "Submits an analysis request attributed to the authenticated user. The\nendpoint is idempotent — at most one analysis request can be pending at a\ntime. Always returns 202 Accepted with no response body.\n", "tags": [ "Datapipe", "Community", "Enterprise" ], "responses": { "202": { "$ref": "#/components/responses/no-content" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "CancelAnalysisRequest", "summary": "Cancels an analysis request", "description": "Flags the API to request the cancellation of analyzing ingest data.", "tags": [ "Datapipe", "Community", "Enterprise" ], "responses": { "202": { "$ref": "#/components/responses/no-content" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "409": { "description": "Conflict. You cannot cancel an analysis request because a deletion request is pending", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" } } } }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/accept-eula": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "put": { "operationId": "AcceptEula", "summary": "Accept EULA", "description": "Accept BloodHound Enterprise EULA for logged in user (EULA applies to BHE customers only).", "tags": [ "EULA", "Enterprise" ], "responses": { "202": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/meta-nodes/{domain_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "domain_id", "description": "Domain ID", "in": "path", "required": true, "schema": { "type": "string" } }, { "$ref": "#/components/parameters/query.asset-group-tag-id" } ], "get": { "operationId": "GetLatestTierZeroComboNode", "summary": "Get latest tier zero combo node", "description": "Get latest tier zero combo node", "tags": [ "Analysis", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/model.bh-graph.node" } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/meta-trees/{domain_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "domain_id", "description": "Domain ID", "in": "path", "required": true, "schema": { "type": "string" } }, { "$ref": "#/components/parameters/query.asset-group-tag-id" } ], "get": { "operationId": "GetComboTreeGraph", "summary": "Get the graph for meta tree", "description": "Gets meta nodes and connecting edges", "tags": [ "Analysis", "Enterprise" ], "parameters": [ { "name": "node_id", "description": "Node ID", "in": "query", "schema": { "type": "integer", "format": "int64" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.bh-graph.graph" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/asset-groups/{asset_group_id}/combo-node": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "asset_group_id", "description": "Asset Group Object ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetAssetGroupComboNode", "deprecated": true, "summary": "Get the combo tree for an asset group", "description": "**Deprecated**: This endpoint will no longer be supported in future releases.\n", "tags": [ "Analysis", "Enterprise" ], "parameters": [ { "name": "domainsid", "description": "Filter by Domain security identifier.", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.bh-graph.graph" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/ingest": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "IngestData", "summary": "Endpoint for data ingestion", "description": "Ingests data from collector clients", "tags": [ "Client Ingest", "Enterprise" ], "responses": { "202": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clients": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListClients", "summary": "List Clients", "description": "Lists available clients for processing collection events.", "tags": [ "Clients", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" }, { "$ref": "#/components/parameters/query.clients.hydrate-domains" }, { "$ref": "#/components/parameters/query.clients.hydrate-ous" }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" }, { "name": "sort_by", "description": "Sortable columns are `name`, `ip_address`, `hostname`, `configured_user`, `last_checkin`, `completed_job_count`, `created_at`, `updated_at`, `deleted_at`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "name", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "ip_address", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "hostname", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "configured_user", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "version", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "user_sid", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "last_checkin", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "current_job_id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "name": "completed_job_count", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "name": "domain_controller", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.uuid" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.client-display" } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "post": { "operationId": "CreateClient", "summary": "Create Client", "description": "Creates a client for collection events", "tags": [ "Clients", "Enterprise" ], "requestBody": { "description": "The request body for creating a client", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "domain_controller": { "type": "string" }, "type": { "$ref": "#/components/schemas/enum.client-type" }, "events": { "type": "array", "items": { "$ref": "#/components/schemas/model.client-schedule" } } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clients/error": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "LogClientError", "summary": "Client Error", "description": "Endpoint for clients to log enumeration errors.\n\nNote: caller must be a client. For users, this endpoint will return a 404 as\nthey are not expected or allowed to call this endpoint.\n", "tags": [ "Clients", "Enterprise" ], "requestBody": { "description": "The request body for logging a client enumeration error", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "task_error": { "type": "string" }, "additional": { "type": "object", "additionalProperties": { "type": "string" } } } } } } }, "responses": { "202": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clients/update": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "put": { "operationId": "UpdateClientInfo", "summary": "Update Client Values", "description": "Endpoint for clients to update their own information at startup.\n\nNote: caller must be a client. For users, this endpoint will return a 404 as\nthey are not expected or allowed to call this endpoint.\n", "tags": [ "Clients", "Enterprise" ], "requestBody": { "description": "The request body for updating a client", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "address": { "type": "string" }, "hostname": { "type": "string" }, "username": { "type": "string" }, "version": { "type": "string" }, "usersid": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clients/{client_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "client_id", "description": "Client ID", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "get": { "operationId": "GetClient", "summary": "Get Client", "description": "Gets given client for processing collection events", "tags": [ "Clients", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-display" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "put": { "operationId": "UpdateClient", "summary": "Update Client", "description": "Update a client for processing collection events", "tags": [ "Clients", "Enterprise" ], "requestBody": { "description": "The request body for updating a client", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "domain_controller": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "DeleteClient", "summary": "Delete Client", "description": "Delete a client for processing collection events", "tags": [ "Clients", "Enterprise" ], "responses": { "200": { "$ref": "#/components/responses/no-content" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clients/{client_id}/token": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "client_id", "description": "Client ID", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "put": { "operationId": "ReplaceClientToken", "summary": "Regenerate the authentication token for a client", "description": "Regenerate the authentication token for a client", "tags": [ "Clients", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.auth-token" } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clients/{client_id}/completed-tasks": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "client_id", "description": "Client ID", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "get": { "operationId": "ListClientCompletedTasks", "deprecated": true, "summary": "List all completed tasks for a client", "description": "**Deprecated**: This endpoint will no longer be supported in future releases. Please use `GET /api/v2/clients/{client_id}/completed_jobs` instead.\n", "tags": [ "Clients", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" }, { "$ref": "#/components/parameters/query.clients.hydrate-domains" }, { "$ref": "#/components/parameters/query.clients.hydrate-ous" }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" }, { "name": "sort_by", "description": "Sortable columns are `event_id`, `execution_time`, `status`, `start_time`, `end_time`, `log_path`, `domain_controller`, `event_title`, `last_ingest`, `id`, `created_at`, `updated_at`, `deleted_at`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "$ref": "#/components/parameters/query.clients.job.log-path" }, { "$ref": "#/components/parameters/query.clients.job.session-collection" }, { "$ref": "#/components/parameters/query.clients.job.local-group-collection" }, { "$ref": "#/components/parameters/query.clients.job.cert-services-collection" }, { "$ref": "#/components/parameters/query.clients.job.ca-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.dc-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.ad-structure-collection" }, { "$ref": "#/components/parameters/query.clients.job.domain-controller" }, { "$ref": "#/components/parameters/query.clients.job.status" }, { "$ref": "#/components/parameters/query.clients.job.event-title" }, { "$ref": "#/components/parameters/query.clients.job.client-id" }, { "$ref": "#/components/parameters/query.clients.job.event-id" }, { "$ref": "#/components/parameters/query.clients.job.execution-time" }, { "$ref": "#/components/parameters/query.clients.job.start-time" }, { "$ref": "#/components/parameters/query.clients.job.end-time" }, { "$ref": "#/components/parameters/query.clients.job.last-ingest" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.client-scheduled-job-display" } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clients/{client_id}/completed-jobs": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "client_id", "description": "Client ID", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "get": { "operationId": "ListClientCompletedJobs", "summary": "List all completed jobs for a client", "description": "List all completed jobs for a client", "tags": [ "Clients", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" }, { "$ref": "#/components/parameters/query.clients.hydrate-domains" }, { "$ref": "#/components/parameters/query.clients.hydrate-ous" }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" }, { "name": "sort_by", "description": "Sortable columns are `event_id`, `execution_time`, `status`, `start_time`, `end_time`, `log_path`, `domain_controller`, `event_title`, `last_ingest`, `id`, `created_at`, `updated_at`, `deleted_at`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "$ref": "#/components/parameters/query.clients.job.log-path" }, { "$ref": "#/components/parameters/query.clients.job.session-collection" }, { "$ref": "#/components/parameters/query.clients.job.local-group-collection" }, { "$ref": "#/components/parameters/query.clients.job.cert-services-collection" }, { "$ref": "#/components/parameters/query.clients.job.ca-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.dc-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.ad-structure-collection" }, { "$ref": "#/components/parameters/query.clients.job.domain-controller" }, { "$ref": "#/components/parameters/query.clients.job.status" }, { "$ref": "#/components/parameters/query.clients.job.event-title" }, { "$ref": "#/components/parameters/query.clients.job.client-id" }, { "$ref": "#/components/parameters/query.clients.job.event-id" }, { "$ref": "#/components/parameters/query.clients.job.execution-time" }, { "$ref": "#/components/parameters/query.clients.job.start-time" }, { "$ref": "#/components/parameters/query.clients.job.end-time" }, { "$ref": "#/components/parameters/query.clients.job.last-ingest" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.client-scheduled-job-display" } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clients/{client_id}/tasks": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "client_id", "description": "Client ID", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "post": { "operationId": "CreateClientScheduledTask", "deprecated": true, "summary": "Creates a scheduled task", "description": "**Deprecated**: This endpoint will no longer be supported in future releases. Please use `POST /api/v2/clients/{client_id}/jobs` instead.\n", "tags": [ "Clients", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "requestBody": { "description": "The request body for creating a scheduled task", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.client-scheduled-job" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-scheduled-job" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clients/{client_id}/jobs": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "client_id", "description": "Client ID", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "post": { "operationId": "CreateClientScheduledJob", "summary": "Creates a scheduled job", "description": "Creates a new scheduled job", "tags": [ "Clients", "Enterprise" ], "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "requestBody": { "description": "The request body for creating a scheduled job", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.client-scheduled-job" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-scheduled-job" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/jobs/available": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListAvailableClientJobs", "summary": "List available client jobs", "description": "Endpoint for clients to get next available jobs.\n\nNote: caller must be a client. For users, this endpoint will return a 404 as\nthey are not expected or allowed to call this endpoint.\n", "tags": [ "Jobs", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are `event_id`, `execution_time`, `status`, `start_time`, `end_time`, `log_path`, `domain_controller`, `event_title`, `last_ingest`, `id`, `created_at`, `updated_at`, and `deleted_at`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "$ref": "#/components/parameters/query.clients.job.log-path" }, { "$ref": "#/components/parameters/query.clients.job.session-collection" }, { "$ref": "#/components/parameters/query.clients.job.local-group-collection" }, { "$ref": "#/components/parameters/query.clients.job.cert-services-collection" }, { "$ref": "#/components/parameters/query.clients.job.ca-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.dc-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.ad-structure-collection" }, { "$ref": "#/components/parameters/query.clients.job.domain-controller" }, { "$ref": "#/components/parameters/query.clients.job.status" }, { "$ref": "#/components/parameters/query.clients.job.event-title" }, { "$ref": "#/components/parameters/query.clients.job.client-id" }, { "$ref": "#/components/parameters/query.clients.job.event-id" }, { "$ref": "#/components/parameters/query.clients.job.execution-time" }, { "$ref": "#/components/parameters/query.clients.job.start-time" }, { "$ref": "#/components/parameters/query.clients.job.end-time" }, { "$ref": "#/components/parameters/query.clients.job.last-ingest" }, { "$ref": "#/components/parameters/query.clients.hydrate-ous" }, { "$ref": "#/components/parameters/query.clients.hydrate-domains" }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.client-scheduled-job-display" } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/jobs/finished": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListClientFinishedJobs", "summary": "List finished jobs", "description": "Gets all finished jobs", "tags": [ "Jobs", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are `client_name`, `event_id`, `execution_time`, `status`, `start_time`, `end_time`, `log_path`, `domain_controller`, `event_title`, `last_ingest`, `id`, `created_at`, `updated_at`, `deleted_at`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "$ref": "#/components/parameters/query.clients.job.log-path" }, { "$ref": "#/components/parameters/query.clients.job.session-collection" }, { "$ref": "#/components/parameters/query.clients.job.local-group-collection" }, { "$ref": "#/components/parameters/query.clients.job.cert-services-collection" }, { "$ref": "#/components/parameters/query.clients.job.ca-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.dc-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.ad-structure-collection" }, { "$ref": "#/components/parameters/query.clients.job.domain-controller" }, { "$ref": "#/components/parameters/query.clients.job.status" }, { "$ref": "#/components/parameters/query.clients.job.event-title" }, { "$ref": "#/components/parameters/query.clients.job.client-id" }, { "$ref": "#/components/parameters/query.clients.job.event-id" }, { "$ref": "#/components/parameters/query.clients.job.execution-time" }, { "$ref": "#/components/parameters/query.clients.job.start-time" }, { "$ref": "#/components/parameters/query.clients.job.end-time" }, { "$ref": "#/components/parameters/query.clients.job.last-ingest" }, { "$ref": "#/components/parameters/query.clients.hydrate-domains" }, { "$ref": "#/components/parameters/query.clients.hydrate-ous" }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.client-scheduled-job-display" } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/jobs": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetClientJobs", "summary": "Get jobs", "description": "Gets client jobs", "tags": [ "Jobs", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are `client_name`, `event_id`, `execution_time`, `status`, `start_time`, `end_time`, `log_path`, `domain_controller`, `event_title`, `last_ingest`, `id`, `created_at`, `updated_at`, `deleted_at`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "$ref": "#/components/parameters/query.clients.job.log-path" }, { "$ref": "#/components/parameters/query.clients.job.session-collection" }, { "$ref": "#/components/parameters/query.clients.job.local-group-collection" }, { "$ref": "#/components/parameters/query.clients.job.cert-services-collection" }, { "$ref": "#/components/parameters/query.clients.job.ca-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.dc-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.ad-structure-collection" }, { "$ref": "#/components/parameters/query.clients.job.domain-controller" }, { "$ref": "#/components/parameters/query.clients.job.status" }, { "$ref": "#/components/parameters/query.clients.job.event-title" }, { "$ref": "#/components/parameters/query.clients.job.client-id" }, { "$ref": "#/components/parameters/query.clients.job.event-id" }, { "$ref": "#/components/parameters/query.clients.job.execution-time" }, { "$ref": "#/components/parameters/query.clients.job.start-time" }, { "$ref": "#/components/parameters/query.clients.job.end-time" }, { "$ref": "#/components/parameters/query.clients.job.last-ingest" }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.client-scheduled-job-display" } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/jobs/current": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetClientCurrentJob", "summary": "Get client current job", "description": "Gets the current job for the authenticated client.\n\nNote: caller must be a client. For users, this endpoint will return a 404 as\nthey are not expected or allowed to call this endpoint.\n", "tags": [ "Jobs", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-scheduled-job-display" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/jobs/start": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "StartClientJob", "summary": "Notifies the API of a job start", "description": "Endpoint for clients to start a new job and mark the start time.\n\nNote: caller must be a client. For users, this endpoint will return a 404 as\nthey are not expected or allowed to call this endpoint.\n", "tags": [ "Jobs", "Enterprise" ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-scheduled-job" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/jobs/end": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "EndClientJob", "summary": "Notifies the API of a job ending", "description": "Endpoint for clients to end a job and mark the end time.\n\nNote: caller must be a client. For users, this endpoint will return a 404 as\nthey are not expected or allowed to call this endpoint.\n", "tags": [ "Jobs", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-scheduled-job" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/jobs/{job_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "job_id", "description": "Job ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "get": { "operationId": "GetClientJob", "summary": "Get client job", "description": "Gets client job", "tags": [ "Jobs", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-scheduled-job-display" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/jobs/{job_id}/cancel": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "job_id", "description": "Job ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "put": { "operationId": "CancelClientJob", "summary": "Cancels a scheduled job", "description": "Cancels a scheduled job", "tags": [ "Jobs", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-scheduled-job-display" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/jobs/{job_id}/log": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "job_id", "description": "Job ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "get": { "operationId": "GetClientJobLog", "summary": "Get Job Log File", "description": "Get the log file from a SharpHound run", "tags": [ "Jobs", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "log": { "type": "string" } } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clients/{client_id}/management": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "client_id", "description": "Client ID", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "post": { "operationId": "QueueClientManagementOperation", "summary": "Queues a management operation", "description": "Endpoint for users to queue a management operation for a client.\n", "tags": [ "Clients", "Enterprise" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.client-management-operation-queue-request" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-management-operation" } } } } } }, "201": { "description": "Created", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-management-operation" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clients/{client_id}/artifacts/{artifact_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "client_id", "description": "Client ID", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "artifact_id", "description": "Artifact ID", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "get": { "operationId": "DownloadClientArtifact", "summary": "Download a management operation artifact for the client", "description": "Downloads an operation artifact associated with the client.\n", "tags": [ "Clients", "Enterprise" ], "responses": { "200": { "description": "**OK**\nThis response will contain the artifact file.\n", "headers": { "Content-Disposition": { "schema": { "type": "string" } }, "Content-Length": { "schema": { "type": "integer", "format": "int64" } } }, "content": { "application/zip": { "schema": { "type": "string", "format": "binary" }, "example": "[this request has a binary response]" } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "409": { "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" }, "example": { "http_status": 409, "timestamp": "2026-07-01T13:44:43.247Z", "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "errors": [ { "context": "", "message": "artifact not finished uploading, must upload missing parts" } ] } } } }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "DeleteClientArtifact", "summary": "Delete a management operation artifact for the client", "description": "Deletes an operation artifact associated with the client.\n", "tags": [ "Clients", "Enterprise" ], "responses": { "204": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clients/management/available": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "summary": "Get available management operations", "description": "Endpoint for clients to get next available management operations.\n\nNote: caller must be a client. For users, this endpoint will return a 403 as\nthey are not expected or allowed to call this endpoint.\n", "tags": [ "Clients", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.client-management-operation" } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clients/management/start": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "StartClientManagementOperation", "summary": "Notifies the API of a management operation start", "description": "Endpoint for clients to start a management operation and mark the start time.\n\nNote: caller must be a client. For users, this endpoint will return a 403 as\nthey are not expected or allowed to call this endpoint.\n", "tags": [ "Clients", "Enterprise" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.client-management-operation-start-request" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-management-operation" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "409": { "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" }, "example": { "http_status": 409, "timestamp": "2026-07-01T13:44:43.247Z", "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "errors": [ { "context": "", "message": "invalid management operation status transition" } ] } } } }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/clients/management/end": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "EndClientManagementOperation", "summary": "Notifies the API of a management operation ending", "description": "Endpoint for clients to end a management operation and mark the completed time.\n\nNote: caller must be a client. For users, this endpoint will return a 403 as\nthey are not expected or allowed to call this endpoint.\n", "tags": [ "Clients", "Enterprise" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.client-management-operation-end-request" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-management-operation" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "409": { "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" }, "example": { "http_status": 409, "timestamp": "2026-07-01T13:44:43.247Z", "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "errors": [ { "context": "", "message": "invalid management operation status transition" } ] } } } }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/tasks/available": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListAvailableClientTasks", "deprecated": true, "summary": "List available client tasks", "description": "**Deprecated**: This endpoint will no longer be supported in future releases. Please use `GET /api/v2/jobs/available` instead.\n", "tags": [ "Tasks", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are `event_id`, `execution_time`, `status`, `start_time`, `end_time`, `log_path`, `domain_controller`, `event_title`, `last_ingest`, `id`, `created_at`, `updated_at`, and `deleted_at`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "$ref": "#/components/parameters/query.clients.job.log-path" }, { "$ref": "#/components/parameters/query.clients.job.session-collection" }, { "$ref": "#/components/parameters/query.clients.job.local-group-collection" }, { "$ref": "#/components/parameters/query.clients.job.cert-services-collection" }, { "$ref": "#/components/parameters/query.clients.job.ca-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.dc-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.ad-structure-collection" }, { "$ref": "#/components/parameters/query.clients.job.domain-controller" }, { "$ref": "#/components/parameters/query.clients.job.status" }, { "$ref": "#/components/parameters/query.clients.job.event-title" }, { "$ref": "#/components/parameters/query.clients.job.client-id" }, { "$ref": "#/components/parameters/query.clients.job.event-id" }, { "$ref": "#/components/parameters/query.clients.job.execution-time" }, { "$ref": "#/components/parameters/query.clients.job.start-time" }, { "$ref": "#/components/parameters/query.clients.job.end-time" }, { "$ref": "#/components/parameters/query.clients.job.last-ingest" }, { "$ref": "#/components/parameters/query.clients.hydrate-ous" }, { "$ref": "#/components/parameters/query.clients.hydrate-domains" }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.client-scheduled-job-display" } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/tasks/finished": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListClientFinishedTasks", "deprecated": true, "summary": "List finished tasks", "description": "**Deprecated**: This endpoint will no longer be supported in future releases. Please use `GET /api/v2/jobs/finished` instead.\n", "tags": [ "Tasks", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are `client_name`, `event_id`, `execution_time`, `status`, `start_time`, `end_time`, `log_path`, `domain_controller`, `event_title`, `last_ingest`, `id`, `created_at`, `updated_at`, `deleted_at`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "$ref": "#/components/parameters/query.clients.job.log-path" }, { "$ref": "#/components/parameters/query.clients.job.session-collection" }, { "$ref": "#/components/parameters/query.clients.job.local-group-collection" }, { "$ref": "#/components/parameters/query.clients.job.cert-services-collection" }, { "$ref": "#/components/parameters/query.clients.job.ca-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.dc-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.ad-structure-collection" }, { "$ref": "#/components/parameters/query.clients.job.domain-controller" }, { "$ref": "#/components/parameters/query.clients.job.status" }, { "$ref": "#/components/parameters/query.clients.job.event-title" }, { "$ref": "#/components/parameters/query.clients.job.client-id" }, { "$ref": "#/components/parameters/query.clients.job.event-id" }, { "$ref": "#/components/parameters/query.clients.job.execution-time" }, { "$ref": "#/components/parameters/query.clients.job.start-time" }, { "$ref": "#/components/parameters/query.clients.job.end-time" }, { "$ref": "#/components/parameters/query.clients.job.last-ingest" }, { "$ref": "#/components/parameters/query.clients.hydrate-domains" }, { "$ref": "#/components/parameters/query.clients.hydrate-ous" }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.client-scheduled-job-display" } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/tasks": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetClientTasks", "deprecated": true, "summary": "Get tasks", "description": "**Deprecated**: This endpoint will no longer be supported in future releases. Please use `GET /api/v2/jobs` instead.\n", "tags": [ "Tasks", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are `client_name`, `event_id`, `execution_time`, `status`, `start_time`, `end_time`, `log_path`, `domain_controller`, `event_title`, `last_ingest`, `id`, `created_at`, `updated_at`, `deleted_at`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "$ref": "#/components/parameters/query.clients.job.log-path" }, { "$ref": "#/components/parameters/query.clients.job.session-collection" }, { "$ref": "#/components/parameters/query.clients.job.local-group-collection" }, { "$ref": "#/components/parameters/query.clients.job.cert-services-collection" }, { "$ref": "#/components/parameters/query.clients.job.ca-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.dc-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.ad-structure-collection" }, { "$ref": "#/components/parameters/query.clients.job.domain-controller" }, { "$ref": "#/components/parameters/query.clients.job.status" }, { "$ref": "#/components/parameters/query.clients.job.event-title" }, { "$ref": "#/components/parameters/query.clients.job.client-id" }, { "$ref": "#/components/parameters/query.clients.job.event-id" }, { "$ref": "#/components/parameters/query.clients.job.execution-time" }, { "$ref": "#/components/parameters/query.clients.job.start-time" }, { "$ref": "#/components/parameters/query.clients.job.end-time" }, { "$ref": "#/components/parameters/query.clients.job.last-ingest" }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.client-scheduled-job-display" } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/tasks/current": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetClientCurrentTask", "deprecated": true, "summary": "Get client current task", "description": "**Deprecated**: This endpoint will no longer be supported in future releases. Please use `GET /api/v2/jobs/current` instead.\n", "tags": [ "Tasks", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-scheduled-job-display" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/tasks/start": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "StartClientTask", "deprecated": true, "summary": "Notifies the API of a task start", "description": "**Deprecated**: This endpoint will no longer be supported in future releases. Please use `POST /api/v2/jobs/start` instead.\n", "tags": [ "Tasks", "Enterprise" ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-scheduled-job" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/tasks/end": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "post": { "operationId": "EndClientTask", "deprecated": true, "summary": "Notifies the API of a task ending", "description": "**Deprecated**: This endpoint will no longer be supported in future releases. Please use `POST /api/v2/jobs/end` instead.\n", "tags": [ "Tasks", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-scheduled-job" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/tasks/{task_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "task_id", "description": "Task ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "get": { "operationId": "GetClientTask", "deprecated": true, "summary": "Get client task", "description": "**Deprecated**: This endpoint will no longer be supported in future releases. Please use `GET /api/v2/jobs/{job_id}` instead.\n", "tags": [ "Tasks", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-scheduled-job-display" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/tasks/{task_id}/cancel": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "task_id", "description": "Task ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "put": { "operationId": "CancelClientTask", "deprecated": true, "summary": "Cancels a scheduled task", "description": "**Deprecated**: This endpoint will no longer be supported in future releases. Please use `PUT /api/v2/jobs/{job_id}/cancel` instead.\n", "tags": [ "Tasks", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-scheduled-job-display" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/tasks/{task_id}/log": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "task_id", "description": "Task ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "get": { "operationId": "GetClientTaskLog", "deprecated": true, "summary": "Get Task Log File", "description": "**Deprecated**: This endpoint will no longer be supported in future releases. Please use `GET /api/v2/jobs/{job_id}/log` instead.\n", "tags": [ "Tasks", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "log": { "type": "string" } } } } } } } }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/events": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListClientSchedules", "summary": "List events", "description": "Gets all client scheduled events.", "tags": [ "Events (Schedules)", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are `next_scheduled_at`, `id`, `created_at`, `updated_at`, `deleted_at`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "name": "rrule", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "next_scheduled_at", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "$ref": "#/components/parameters/query.clients.job.client-id" }, { "$ref": "#/components/parameters/query.clients.job.session-collection" }, { "$ref": "#/components/parameters/query.clients.job.local-group-collection" }, { "$ref": "#/components/parameters/query.clients.job.ad-structure-collection" }, { "$ref": "#/components/parameters/query.clients.job.cert-services-collection" }, { "$ref": "#/components/parameters/query.clients.job.ca-registry-collection" }, { "$ref": "#/components/parameters/query.clients.job.dc-registry-collection" }, { "$ref": "#/components/parameters/query.clients.hydrate-domains" }, { "$ref": "#/components/parameters/query.clients.hydrate-ous" }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.client-schedule-display" } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "post": { "operationId": "CreateClientSchedule", "summary": "Create Event", "description": "Creates a scheduled event for data collection", "tags": [ "Events (Schedules)", "Enterprise" ], "requestBody": { "description": "The request body for creating an event", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.client-schedule" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-schedule-display" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/events/{event_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "event_id", "description": "Event ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "get": { "operationId": "GetClientSchedule", "summary": "Get Event", "description": "Gets a scheduled job event by ID.", "tags": [ "Events (Schedules)", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-schedule-display" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "put": { "operationId": "UpdateClientEvent", "summary": "Update Event", "description": "Updates a scheduled event", "tags": [ "Events (Schedules)", "Enterprise" ], "requestBody": { "description": "The request body for updating an event", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.client-schedule" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.client-schedule-display" } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } }, "delete": { "operationId": "DeleteClientEvent", "summary": "Delete Event", "description": "Deletes a scheduled event and associated tasks by id", "tags": [ "Events (Schedules)", "Enterprise" ], "responses": { "200": { "$ref": "#/components/responses/no-content" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{domain_id}/attack-path-findings": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "domain_id", "description": "Domain ID", "in": "path", "required": true, "schema": { "type": "string" } } ], "get": { "operationId": "ExportAttackPathFindings", "summary": "Export attack path findings", "description": "Export the finding table for a given attack path", "deprecated": true, "tags": [ "Attack Paths", "Enterprise" ], "parameters": [ { "name": "finding", "description": "Finding Type", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "filterAccepted", "description": "Risk acceptance filter", "in": "query", "schema": { "$ref": "#/components/schemas/enum.risk-acceptance" } }, { "name": "sort_by", "description": "Sort by column. The only sortable column is `finding`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } } ], "responses": { "200": { "$ref": "#/components/responses/csv-response" }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/attack-paths/finding-trends": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "FindingTrendsForEnvironment", "summary": "List finding trends", "description": "Lists findings and their changes in between two dates for an environment", "tags": [ "Attack Paths", "Enterprise" ], "parameters": [ { "name": "environments", "description": "Environment IDs", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "start", "description": "Beginning datetime of range (inclusive) in RFC-3339 format; Defaults to current datetime minus 30 days", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "end", "description": "Ending datetime of range (exclusive) in RFC-3339 format; Defaults to current datetime", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "$ref": "#/components/parameters/query.asset-group-tag-id" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.time-window" }, { "type": "object", "properties": { "environments": { "type": "array", "items": { "type": "string" } }, "data": { "type": "object", "properties": { "findings": { "type": "array", "items": { "type": "object", "properties": { "environment_ids": { "type": "array", "items": { "type": "string" } }, "finding": { "type": "string" }, "display_title": { "type": "string" }, "display_type": { "type": "string" }, "composite_risk": { "type": "number", "format": "double" }, "finding_count_start": { "type": "integer" }, "finding_count_end": { "type": "integer" }, "finding_count_increase": { "type": "integer" }, "finding_count_decrease": { "type": "integer" }, "impact_count": { "type": "integer", "nullable": true }, "exposure_count": { "type": "integer", "nullable": true }, "archived_count": { "type": "integer", "description": "Total number of findings of this type that were\narchived (deleted during analysis reconciliation)\nwithin the requested time window. Summed across\nall snapshots in the window.\n" } } } }, "total_finding_count_start": { "type": "integer" }, "total_finding_count_end": { "type": "integer" } } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/attack-path-types": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListAttackPathTypes", "summary": "List all attack path types", "description": "Lists all possible attack path types", "tags": [ "Attack Paths", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sort by column. The only sortable column is `finding`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "finding", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "string" } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/attack-paths/finding-types": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListAttackPathFindingTypes", "summary": "List attack path finding types", "description": "Returns distinct attack path finding types available to the caller.\nResults are always returned in ascending order by `title`.\n", "tags": [ "Attack Paths", "Enterprise" ], "parameters": [ { "name": "environment_id", "description": "Filter by one or more environment identifiers. Repeat the parameter to include multiple environments.\nResults are scoped to the caller's Environment access.\n", "in": "query", "style": "form", "explode": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "asset_group_tag_id", "description": "Filter by asset group tag identifier. Supported predicates are `eq` and `neq`.\n", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer-strict" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "object", "properties": { "finding": { "type": "string", "description": "Finding name." }, "title": { "type": "string", "description": "Finding title." } }, "required": [ "finding", "title" ] } } }, "required": [ "data" ] }, "examples": { "Finding types": { "value": { "data": [ { "finding": "Kerberoasting", "title": "Kerberoastable User Accounts" }, { "finding": "T0WriteOwner", "title": "Write Owner" } ] } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/attack-paths": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "put": { "operationId": "StartAnalysisBhe", "summary": "Start analysis", "description": "Starts generating attack paths", "tags": [ "Attack Paths", "Enterprise" ], "responses": { "202": { "$ref": "#/components/responses/no-content" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/attack-paths/details": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetAllAttackPathFindings", "summary": "Get all attack path findings", "description": "Fetches all attack path findings and their associated details, including documentation.", "tags": [ "Attack Paths", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.response.all-findings" } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/attack-paths/findings": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "ListAttackPathFindings", "summary": "List attack path findings", "description": "Returns a unified, paginated list of attack path findings. Defaults to active findings of both relationship and list types unless filtered otherwise.\n", "tags": [ "Attack Paths", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are `severity`, `finding_type`, `finding`, `title`, `platform`, `environment_id`, `environment_name`,\n`asset_group_tag_id`, `zone_name`, `source_principal_id`, `source_principal_kind`, `source_principal_name`, `target_principal_id`, `target_principal_kind`, `target_principal_name`, `status`, `first_seen`, `last_seen`.\n", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "severity", "description": "Filter by severity level.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "finding_type", "description": "Filter by finding type. When not provided, both types are returned.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "finding", "description": "Filter by finding name.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "title", "description": "Filter by human-readable finding title.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "platform", "description": "Filter by platform.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "environment_id", "description": "Filter by one or more environment identifiers. Repeat the parameter to include multiple environments — results are the union of all specified values.\n", "in": "query", "style": "form", "explode": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "environment_name", "description": "Filter by environment display name.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "asset_group_tag_id", "description": "Filter by asset group tag identifier.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "zone_name", "description": "Filter by zone name (e.g. \"Tier Zero\").", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "source_principal_id", "description": "Filter by source principal identifier.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "source_principal_kind", "description": "Filter by source principal kind.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "source_principal_name", "description": "Filter by source principal display name.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "target_principal_id", "description": "Filter by target principal identifier.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "target_principal_kind", "description": "Filter by target principal kind.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "target_principal_name", "description": "Filter by target principal display name.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "status", "description": "Filter by finding status.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "first_seen", "description": "Filter by first seen timestamp.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "last_seen", "description": "Filter by last seen timestamp.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit" } ], "responses": { "200": { "description": "OK", "content": { "text/csv": { "schema": { "type": "string", "format": "binary" }, "examples": { "Unified CSV export": { "value": "Severity,Finding,Title,FindingType,Platform,EnvironmentID,EnvironmentName,AssetGroupTagID,ZoneName,SourcePrincipalID,SourcePrincipalKind,SourcePrincipalName,TargetPrincipalID,TargetPrincipalKind,TargetPrincipalName,Status,FirstSeen,LastSeen\ncritical,T0GenericWrite,GenericWrite Privileges on Tier Zero Objects,relationship,Active Directory,S-1-5-21-1974516972-3116780949-2584384717,CORP1.LAB.HOME-LABS.LOL,1,Tier Zero,RPATTON@CORP1.LAB.HOME-LABS.LOL,User,Robert Patton,ADMIN@CORP1.LAB.HOME-LABS.LOL,User,Domain Admin,active,2026-04-11T00:30:18Z,2026-04-14T16:57:35Z\nhigh,Kerberoasting,Kerberoastable User Accounts,list,Active Directory,S-1-5-21-1974516972-3116780949-2584384717,CORP1.LAB.HOME-LABS.LOL,1,Tier Zero,,,, PSX_D_BA@CORP1.LAB.HOME-LABS.LOL,User,Backup Admin,accepted,2026-04-11T00:30:18Z,2026-04-14T16:57:35Z\n" } } }, "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "object", "properties": { "severity": { "type": "string", "description": "Severity level.", "enum": [ "critical", "high", "moderate", "low" ] }, "finding_type": { "type": "string", "description": "The type of finding.", "enum": [ "relationship", "list" ] }, "finding": { "type": "string", "description": "Finding name." }, "title": { "type": "string", "description": "Human-readable finding title. May vary based on the zone context (e.g., \"Tier Zero\" vs \"Privilege Zone\" variants)." }, "platform": { "type": "string", "description": "Platform the finding belongs to." }, "environment_id": { "type": "string", "description": "Environment identifier." }, "environment_name": { "type": "string", "description": "Human-readable environment display name resolved from the graph. Falls back to environment_id when unavailable." }, "asset_group_tag_id": { "type": "integer", "description": "Asset group tag identifier." }, "zone_name": { "type": "string", "description": "Human-readable zone name. Empty when the finding is not tied to a named zone." }, "source_principal_id": { "type": "string", "description": "Source principal identifier. Omitted for list findings." }, "source_principal_kind": { "type": "string", "description": "Source principal kind. Omitted for list findings." }, "source_principal_name": { "type": "string", "description": "Source principal display name resolved from principal properties. Empty when unavailable or for list findings." }, "target_principal_id": { "type": "string", "description": "Target principal identifier." }, "target_principal_kind": { "type": "string", "description": "Target principal kind." }, "target_principal_name": { "type": "string", "description": "Target principal display name resolved from principal properties. Empty when unavailable." }, "status": { "type": "string", "description": "Finding status.", "enum": [ "active", "accepted", "remediated", "deprecated" ] }, "first_seen": { "type": "string", "format": "date-time", "description": "Timestamp of when the finding was first created." }, "last_seen": { "type": "string", "format": "date-time", "description": "Timestamp of last update." } } } } } } ] }, "examples": { "Mixed findings (relationship and list)": { "summary": "Unified response with both finding types", "value": { "count": 2, "skip": 0, "limit": 10, "data": [ { "severity": "critical", "finding": "T0GenericWrite", "title": "GenericWrite Privileges on Tier Zero Objects", "finding_type": "relationship", "platform": "Active Directory", "environment_id": "S-1-5-21-1974516972-3116780949-2584384717", "environment_name": "CORP1.LAB.HOME-LABS.LOL", "asset_group_tag_id": 1, "zone_name": "Tier Zero", "source_principal_id": "RPATTON@CORP1.LAB.HOME-LABS.LOL", "source_principal_kind": "User", "source_principal_name": "Robert Patton", "target_principal_id": "ADMIN@CORP1.LAB.HOME-LABS.LOL", "target_principal_kind": "User", "target_principal_name": "Domain Admin", "status": "active", "first_seen": "2026-04-11T00:30:18.491666Z", "last_seen": "2026-04-14T16:57:35.675609Z" }, { "severity": "high", "finding": "Kerberoasting", "title": "Kerberoastable User Accounts", "finding_type": "list", "platform": "Active Directory", "environment_id": "S-1-5-21-1974516972-3116780949-2584384717", "environment_name": "CORP1.LAB.HOME-LABS.LOL", "asset_group_tag_id": 1, "zone_name": "Tier Zero", "source_principal_id": "", "source_principal_kind": "", "source_principal_name": "", "target_principal_id": "PSX_D_BA@CORP1.LAB.HOME-LABS.LOL", "target_principal_kind": "User", "target_principal_name": "Backup Admin", "status": "accepted", "first_seen": "2026-04-11T00:30:18.491666Z", "last_seen": "2026-04-14T16:57:35.675609Z" } ] } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{domain_id}/available-types": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "domain_id", "description": "Domain ID", "in": "path", "required": true, "schema": { "type": "string" } }, { "$ref": "#/components/parameters/query.asset-group-tag-id" } ], "get": { "operationId": "ListAvailableAttackPathTypesForDomain", "summary": "List available attack paths", "description": "Lists available attack path types for a domain", "tags": [ "Attack Paths", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sort by column. The only sortable column is `finding`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "finding", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "string" } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{domain_id}/details": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "domain_id", "description": "Domain, Tenant, or Environment ID", "in": "path", "required": true, "schema": { "type": "string" } }, { "$ref": "#/components/parameters/query.asset-group-tag-id" } ], "get": { "operationId": "ListDomainAttackPathsDetails", "summary": "List domain attack paths details", "description": "Lists detailed data about attack paths for a domain.\n\n__Note:__ `ImpactCount`, `ImpactPercentage`, `ExposureCount`, `ExposurePercentage` and `Severity` will have a value other than zero when butterfly analysis is enabled.\n", "tags": [ "Attack Paths", "Enterprise" ], "parameters": [ { "name": "Accept", "in": "query", "description": "Media type to determine the response format (application/json or text/csv).", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string", "enum": [ "application/json", "text/csv" ] } }, { "name": "finding", "in": "query", "required": true, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "sort_by", "description": "Sortable columns are `domain_sid`, `index`, `AcceptedUntil`, `id`, `created_at`, `updated_at`, `deleted_at`, `exposure_percentage`, `impact_percentage`. Relationship risks can be sorted on `FromPrincipal` and `ToPrincipal` in addition to the sortable columns for List Risks.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "FromPrincipal", "deprecated": true, "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "ToPrincipal", "deprecated": true, "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "from_principal", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "to_principal", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "principals_hash", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "Accepted", "deprecated": true, "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "AcceptedUntil", "deprecated": true, "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "accepted_until", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "Principal", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "domain_sid", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "$ref": "#/components/parameters/query.created-at" }, { "$ref": "#/components/parameters/query.updated-at" }, { "$ref": "#/components/parameters/query.deleted-at" }, { "$ref": "#/components/parameters/query.skip" }, { "$ref": "#/components/parameters/query.limit", "enum": [ "application/json", "text/csv" ] } ], "responses": { "200": { "description": "OK", "content": { "text/csv": { "schema": { "type": "string", "format": "binary" }, "examples": { "Butterfly Relationship Finding": { "value": "id,finding_type,exposure_count,exposure_percentage,impact_count,impact_percentage,domain_sid,from_principal_name,from_principal,from_principal_kind,to_principal_name,to_principal,to_principal_kind,combo_graph_relation_id,domain,accepted,accepted_until,principals_hash,created_at,updated_at,is_inherited\n1,Tier Zero Generic Write,500,0.6711,1000,0.9961,5,S-1-5-21-123-123-123,RPATTON@TITANCORP.LOCAL,S-1-5-21-123-123-123,User,RPATTON DELEGATION TEST@TITANCORP.LOCAL,S-1-5-21-124-124-124,User,2,TITANCORP,true,0001-01-01T00:00:00Z,1lQiVG3hOuM=,2022-08-17T23:44:24Z,2024-12-18T15:01:00.176572729Z,Yes\n" }, "Metatree Relationship Finding": { "value": "id,finding_type,exposure_count,exposure_percentage,impact_count,impact_percentage,domain_sid,from_principal_name,from_principal,from_principal_kind,to_principal_name,to_principal,to_principal_kind,combo_graph_relation_id,domain,accepted,accepted_until,principals_hash,created_at,updated_at,is_inherited\n1,Tier Zero Generic Write,0,0,0,0,5,S-1-5-21-123-123-123,RPATTON@TITANCORP.LOCAL,S-1-5-21-123-123-123,User,RPATTON DELEGATION TEST@TITANCORP.LOCAL,S-1-5-21-124-124-124,User,0,TITANCORP,true,0001-01-01T00:00:00Z,1lQiVG3hOuM=,2022-08-17T23:44:24Z,2024-12-18T15:01:00.176572729Z,Yes\n" }, "Butterfly List Finding": { "value": "id,finding_type,impact_count,impact_percentage,domain,domain_sid,principal_name,principal_kind,principal,accepted,accepted_until,created_at,updated_at\n1,Kerberoasting,800,0.9961,TITANCORP,S-1-5-21-123-123-123,RPATTON@TITANCORP.LOCAL,User,S-1-5-21-124-124-124,true,0001-01-01T00:00:00Z,2022-08-17T23:44:24Z,2024-12-18T15:01:00.176572729Z\n" }, "Metatree List Finding": { "value": "id,finding_type,impact_count,impact_percentage,domain,domain_sid,principal_name,principal_kind,principal,accepted,accepted_until,created_at,updated_at\n1,Kerberoasting,0,0,TITANCORP,S-1-5-21-123-123-123,RPATTON@TITANCORP.LOCAL,User,S-1-5-21-124-124-124,true,0001-01-01T00:00:00Z,2022-08-17T23:44:24Z,2024-12-18T15:01:00.176572729Z\n" } } }, "application/json": { "schema": { "oneOf": [ { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.relationship-finding", "type": "object", "properties": { "Accepted": { "type": "boolean" } } } } } } ] }, { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.list-finding", "type": "object", "properties": { "Accepted": { "type": "boolean" } } } } } } ] } ] }, "examples": { "Butterfly Relationship Finding": { "summary": "Butterfly Relationship Finding", "description": "When the butterfly analysis feature flag is on, impact count/percentage and exposure count/percentage will have a value other than zero.", "value": { "count": 0, "skip": 0, "limit": 0, "data": [ { "id": 0, "created_at": "2024-08-28T21:21:40.845Z", "updated_at": "2024-08-28T21:21:40.845Z", "deleted_at": { "time": "2024-08-28T21:21:40.845Z", "valid": true }, "FromPrincipal": "string", "ToPrincipal": "string", "FromPrincipalProps": { "additionalProp1": {}, "additionalProp2": {}, "additionalProp3": {} }, "FromPrincipalKind": "string", "ToPrincipalProps": { "additionalProp1": {}, "additionalProp2": {}, "additionalProp3": {} }, "ToPrincipalKind": "string", "RelProps": { "additionalProp1": {}, "additionalProp2": {}, "additionalProp3": {} }, "ComboGraphRelationID": { "int64": 0, "valid": true }, "Finding": "string", "DomainSID": "string", "PrincipalHash": "string", "AcceptedUntil": "2024-08-28T21:21:40.845Z", "ImpactPercentage": 0.12, "ImpactCount": 2, "ExposurePercentage": 0.24, "ExposureCount": 4, "Severity": "high", "Accepted": true } ] } }, "Metatree Relationship Finding": { "summary": "Metatree Relationship Finding", "description": "When the butterfly analysis feature flag is off and metatree is running, impact count/percentage and exposure count/percentage will have a value of zero.", "value": { "count": 0, "skip": 0, "limit": 0, "data": [ { "id": 0, "created_at": "2024-08-28T21:21:40.845Z", "updated_at": "2024-08-28T21:21:40.845Z", "deleted_at": { "time": "2024-08-28T21:21:40.845Z", "valid": true }, "FromPrincipal": "string", "ToPrincipal": "string", "FromPrincipalProps": { "additionalProp1": {}, "additionalProp2": {}, "additionalProp3": {} }, "FromPrincipalKind": "string", "ToPrincipalProps": { "additionalProp1": {}, "additionalProp2": {}, "additionalProp3": {} }, "ToPrincipalKind": "string", "RelProps": { "additionalProp1": {}, "additionalProp2": {}, "additionalProp3": {} }, "ComboGraphRelationID": { "int64": 0, "valid": true }, "Finding": "string", "DomainSID": "string", "PrincipalHash": "string", "AcceptedUntil": "2024-08-28T21:21:40.845Z", "ImpactPercentage": 0, "ImpactCount": 0, "ExposurePercentage": 0, "ExposureCount": 0, "Severity": "", "Accepted": true } ] } }, "Butterfly List Finding": { "summary": "Butterfly List Finding", "description": "When the butterfly analysis feature flag is on, impact count/percentage and exposure count/percentage will have a value other than zero.", "value": { "count": 0, "skip": 0, "limit": 0, "data": [ { "id": 0, "created_at": "2024-08-28T21:42:18.844Z", "updated_at": "2024-08-28T21:42:18.844Z", "deleted_at": { "time": "2024-08-28T21:42:18.844Z", "valid": true }, "Principal": "string", "PrincipalKind": "string", "Finding": "string", "DomainSID": "string", "Props": { "additionalProp1": {}, "additionalProp2": {}, "additionalProp3": {} }, "AcceptedUntil": "2024-08-28T21:42:18.844Z", "ImpactPercentage": 0.12, "ImpactCount": 2, "Severity": "high", "Accepted": true } ] } }, "Metatree List Finding": { "summary": "Metatree List Finding", "description": "When the butterfly analysis feature flag is off and metatree is running, impact count/percentage and exposure count/percentage will have a value of zero.", "value": { "count": 0, "skip": 0, "limit": 0, "data": [ { "id": 0, "created_at": "2024-08-28T21:42:18.844Z", "updated_at": "2024-08-28T21:42:18.844Z", "deleted_at": { "time": "2024-08-28T21:42:18.844Z", "valid": true }, "Principal": "string", "PrincipalKind": "string", "Finding": "string", "DomainSID": "string", "Props": { "additionalProp1": {}, "additionalProp2": {}, "additionalProp3": {} }, "AcceptedUntil": "2024-08-28T21:42:18.844Z", "ImpactPercentage": 0, "ImpactCount": 0, "Severity": "", "Accepted": true } ] } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/domains/{domain_id}/sparkline": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "domain_id", "description": "Domain ID", "in": "path", "required": true, "schema": { "type": "string" } }, { "$ref": "#/components/parameters/query.asset-group-tag-id" } ], "get": { "operationId": "ListAttackPathSparklineValues", "summary": "List attack path sparkline values", "description": "List the values that represent the sparklines for individual attack paths", "tags": [ "Attack Paths", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are `CompositeRisk`, `FindingCount`, `ImpactedAssetCount`, `domain_sid`, `id`, `created_at`, `updated_at`, `deleted_at`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "finding", "in": "query", "required": true, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "from", "description": "Beginning datetime of range (inclusive) in RFC-3339 format; Defaults to current datetime minus 30 days", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" }, "in": "query" }, { "name": "to", "description": "Ending datetime of range (exclusive) in RFC-3339 format; Defaults to current datetime", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" }, "in": "query" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.time-window" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.risk-counts" } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/attack-paths/{attack_path_id}/acceptance": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "attack_path_id", "description": "Attack Path ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "put": { "operationId": "UpdateAttackPathRisk", "summary": "Update attack path risk", "description": "Updates an attack path as an accepted or unaccepted risk until a given time.", "tags": [ "Attack Paths", "Enterprise" ], "requestBody": { "description": "The request body for updating risk acceptance", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "risk_type": { "type": "string" }, "accept_until": { "type": "string", "format": "date-time" }, "accepted": { "type": "boolean" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.response.finding" } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/posture-stats": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" } ], "get": { "operationId": "GetPostureStats", "summary": "Get Posture Statistics", "description": "Gets the history of database stats saved in the database", "tags": [ "Risk Posture", "Enterprise" ], "parameters": [ { "name": "sort_by", "description": "Sortable columns are `domain_sid`, `exposure_index`, `tier_zero_count`, `critical_risk_count`, `id`, `created_at`, `updated_at`, `deleted_at`.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, { "name": "from", "deprecated": true, "x-go-name": "fromDeprecated", "description": "Lower bound for created_at; to return posture stats starting at a specific date/time. This filter has been deprecated, please use created_at instead.", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "to", "deprecated": true, "x-go-name": "toDeprecated", "description": "Upper bound for created_at; to return posture stats upto a specific date/time. This filter has been deprecated, please use created_at instead.", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "domain_sid", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, { "name": "exposure_index", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "name": "asset_group_tag_id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "name": "tier_zero_count", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "name": "critical_risk_count", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "name": "id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, { "name": "created_at", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "updated_at", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, { "name": "deleted_at", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "$ref": "#/components/schemas/api.response.time-window" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/model.risk-posture-stat" } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/posture-history/{data_type}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "name": "data_type", "description": "The type of posture data to return", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/enum.posture-history-type" } }, { "$ref": "#/components/parameters/query.asset-group-tag-id" } ], "get": { "operationId": "PostureHistoryForEnvironments", "summary": "Get Posture History", "description": "Gets posture data count changes over a time period", "tags": [ "Risk Posture", "Enterprise" ], "parameters": [ { "name": "environments", "description": "Environment IDs", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "start", "description": "Beginning datetime of range (inclusive) in RFC-3339 format; Defaults to current datetime minus 30 days", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "end", "description": "Ending datetime of range (exclusive) in RFC-3339 format; Defaults to current datetime", "in": "query", "schema": { "type": "string", "format": "date-time" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.time-window" }, { "type": "object", "properties": { "environments": { "type": "array", "items": { "type": "string" } }, "data_type": { "$ref": "#/components/schemas/enum.posture-history-type" }, "data": { "type": "array", "items": { "type": "object", "properties": { "date": { "type": "string", "format": "date-time", "readOnly": true }, "value": { "type": "number", "format": "double", "readOnly": true } } } } } } ] } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } }, "/api/v2/meta/{object_id}": { "parameters": [ { "$ref": "#/components/parameters/header.prefer" }, { "$ref": "#/components/parameters/path.object-id" } ], "get": { "operationId": "GetMetaEntity", "summary": "Get Meta entity info", "description": "Get info and counts for this Meta node.", "tags": [ "Meta Entities", "Enterprise" ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "props": { "type": "object", "additionalProperties": { "type": "object" } } } } } } } } }, "400": { "$ref": "#/components/responses/bad-request" }, "401": { "$ref": "#/components/responses/unauthorized" }, "403": { "$ref": "#/components/responses/forbidden" }, "404": { "$ref": "#/components/responses/not-found" }, "429": { "$ref": "#/components/responses/too-many-requests" }, "500": { "$ref": "#/components/responses/internal-server-error" } } } } }, "components": { "securitySchemes": { "JWTBearerToken": { "description": "`Authorization: Bearer $JWT_TOKEN`\n", "type": "http", "scheme": "bearer", "bearerFormat": "JWT" }, "SignedRequest": { "description": "`Authorization: bhesignature $TOKEN_ID`\n", "type": "apiKey", "name": "Authorization", "in": "header" }, "RequestDate": { "description": "`RequestDate: $RFC3339_DATETIME`\n", "type": "apiKey", "name": "RequestDate", "in": "header" }, "HMACSignature": { "description": "`Signature: $BASE64ENCODED_HMAC_SIGNATURE`\n", "type": "apiKey", "name": "Signature", "in": "header" } }, "parameters": { "header.prefer": { "name": "Prefer", "description": "Prefer header, used to specify a custom timeout in seconds using the wait parameter as per RFC7240. Passing in wait=-1 bypasses all timeout limits when the feature is enabled.", "in": "header", "required": false, "schema": { "type": "string", "default": "wait=30", "pattern": "^wait=(-1|[0-9]+)$" } }, "query.created-at": { "name": "created_at", "in": "query", "description": "Filter results by `created_at` value. See filter schema details for valid predicates.", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, "query.updated-at": { "name": "updated_at", "in": "query", "description": "Filter results by `updated_at` value. See filter schema details for valid predicates.", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, "query.deleted-at": { "name": "deleted_at", "in": "query", "description": "Filter results by `deleted_at` value. See filter schema details for valid predicates.", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, "query.skip": { "name": "skip", "description": "This query parameter is used for determining the number of objects to skip in pagination.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.skip" } }, "query.limit": { "name": "limit", "description": "This query parameter is used for setting an upper limit of objects returned in paginated responses.", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.limit" } }, "query.environments": { "name": "environments", "description": "Environment IDs to filter response by", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.query.environments" } }, "path.object-id": { "name": "object_id", "description": "The object id of the entity being operated on.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique object identifier" } }, "query.hydrate-counts": { "description": "Include counts of related entities. Default value is `true`.", "name": "counts", "in": "query", "schema": { "type": "boolean", "default": true } }, "query.entity.skip": { "name": "skip", "description": "The number of entries to skip for pagination. Only available for `type=list`.", "in": "query", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, "query.entity.limit": { "name": "limit", "description": "The number of entries to limit in the response. Only available for `type=list`.", "in": "query", "schema": { "type": "integer", "minimum": 0, "default": 10 } }, "query.entity.type": { "name": "type", "description": "The type of return data requested. If no type is provided, query will default to `list`.\nThe only supported type is `list`, but the unsupported `graph` type can be used.\nSome entity query endpoints do not support the `graph` type. For those interested in\nusing the undocumented graph type parameter, the response type is described in the schema\n`model.bh-graph.graph`.\n", "in": "query", "schema": { "type": "string", "default": "list", "enum": [ "list", "graph" ] } }, "query.entity.sort-by": { "name": "sort_by", "in": "query", "description": "Sort by column. Can be used multiple times; prepend a hyphen for descending order. Columns available\nfor sorting are dependent on the entity object kind.\n", "schema": { "$ref": "#/components/schemas/api.params.query.sort-by" } }, "query.asset-group-tag-id": { "name": "asset_group_tag_id", "description": "The asset group tag id of the zone requested. If not supplied, the asset group tag id associated with 'Tier Zero' and 'Hygiene' is used.", "in": "query", "schema": { "type": "integer" } }, "query.clients.hydrate-domains": { "name": "hydrate_domains", "description": "When a value of `true` is passed, any Domains associated with scheduled and finished jobs for each client will have expanded properties including `name` and `type`. When a value of `false` is passed, these same Domains will only return as a list of `objectid`s.", "in": "query", "schema": { "type": "boolean", "default": true } }, "query.clients.hydrate-ous": { "name": "hydrate_ous", "description": "When a value of `true` is passed, any OUs associated with scheduled and finished jobs for each client will have expanded properties including `name` and `type`. When a value of `false` is passed, these same OUs will only return as a list of `objectid`s.", "in": "query", "schema": { "type": "boolean", "default": true } }, "query.clients.job.log-path": { "name": "log_path", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, "query.clients.job.session-collection": { "name": "session_collection", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.boolean" } }, "query.clients.job.local-group-collection": { "name": "local_group_collection", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.boolean" } }, "query.clients.job.cert-services-collection": { "name": "cert_services_collection", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.boolean" } }, "query.clients.job.ca-registry-collection": { "name": "ca_registry_collection", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.boolean" } }, "query.clients.job.dc-registry-collection": { "name": "dc_registry_collection", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.boolean" } }, "query.clients.job.ad-structure-collection": { "name": "ad_structure_collection", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.boolean" } }, "query.clients.job.domain-controller": { "name": "domain_controller", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, "query.clients.job.status": { "name": "status", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, "query.clients.job.event-title": { "name": "event_title", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.string" } }, "query.clients.job.client-id": { "name": "client_id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.uuid" } }, "query.clients.job.event-id": { "name": "event_id", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.integer" } }, "query.clients.job.execution-time": { "name": "execution_time", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, "query.clients.job.start-time": { "name": "start_time", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, "query.clients.job.end-time": { "name": "end_time", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } }, "query.clients.job.last-ingest": { "name": "last_ingest", "in": "query", "schema": { "$ref": "#/components/schemas/api.params.predicate.filter.time" } } }, "schemas": { "api.error-detail": { "type": "object", "properties": { "context": { "type": "string", "description": "The context in which the error took place" }, "message": { "type": "string", "description": "A human-readable description of the error" } } }, "api.error-wrapper": { "type": "object", "description": "", "properties": { "http_status": { "type": "integer", "description": "The HTTP status code", "minimum": 100, "maximum": 600 }, "timestamp": { "type": "string", "format": "date-time", "description": "The RFC-3339 timestamp in which the error response was sent" }, "request_id": { "type": "string", "format": "uuid", "description": "The unique identifier of the request that failed" }, "errors": { "type": "array", "items": { "$ref": "#/components/schemas/api.error-detail" }, "description": "The error(s) that occurred from processing the request" } } }, "model.components.uuid": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "readOnly": true, "description": "This is the unique identifier for this object." } } }, "null.time": { "type": "object", "properties": { "time": { "type": "string", "format": "date-time", "description": "An RFC-3339 formatted string" }, "valid": { "description": "Valid is true if `time` is not `null`.", "type": "boolean" } } }, "model.components.timestamps": { "type": "object", "properties": { "created_at": { "type": "string", "format": "date-time", "readOnly": true }, "updated_at": { "type": "string", "format": "date-time", "readOnly": true }, "deleted_at": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.time" } ] } } }, "null.int32": { "type": "object", "properties": { "int32": { "type": "integer", "format": "int32" }, "valid": { "description": "Valid is true if `int32` is not `null`.", "type": "boolean" } } }, "model.components.int32.id": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32", "readOnly": true, "description": "This is the unique identifier for this object." } } }, "model.auth-secret": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "digest_method": { "type": "string" }, "expires_at": { "type": "string", "format": "date-time" }, "totp_activated": { "type": "boolean" } } } ] }, "model.permission": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "authority": { "type": "string", "readOnly": true }, "name": { "type": "string", "readOnly": true } } } ] }, "model.role": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "name": { "type": "string", "readOnly": true }, "description": { "type": "string", "readOnly": true }, "permissions": { "type": "array", "readOnly": true, "items": { "$ref": "#/components/schemas/model.permission" } } } } ] }, "null.string": { "type": "object", "properties": { "string": { "type": "string" }, "valid": { "description": "Valid is true if `string` is not `null`", "type": "boolean" } } }, "model.user": { "allOf": [ { "$ref": "#/components/schemas/model.components.uuid" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "saml_provider_id": { "readOnly": true, "deprecated": true, "description": "Deprecated. Use sso_provider_id instead.", "allOf": [ { "$ref": "#/components/schemas/null.int32" } ] }, "sso_provider_id": { "readOnly": true, "description": "ID of the SSO provider for this user", "allOf": [ { "$ref": "#/components/schemas/null.int32" } ] }, "AuthSecret": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/model.auth-secret" } ] }, "roles": { "type": "array", "readOnly": true, "items": { "$ref": "#/components/schemas/model.role" } }, "first_name": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.string" } ] }, "last_name": { "$ref": "#/components/schemas/null.string" }, "email_address": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.string" } ] }, "principal_name": { "type": "string", "readOnly": true }, "last_login": { "type": "string", "readOnly": true, "format": "date-time" }, "is_disabled": { "type": "boolean", "readOnly": true }, "eula_accepted": { "type": "boolean", "readOnly": true } } } ] }, "model.client-schedule": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "client_id": { "type": "string", "format": "uuid", "readOnly": true }, "rrule": { "type": "string" }, "session_collection": { "type": "boolean" }, "local_group_collection": { "type": "boolean" }, "ad_structure_collection": { "type": "boolean" }, "cert_services_collection": { "type": "boolean" }, "ca_registry_collection": { "type": "boolean" }, "dc_registry_collection": { "type": "boolean" }, "all_trusted_domains": { "type": "boolean" }, "next_scheduled_at": { "type": "string", "format": "date-time", "readOnly": true }, "ous": { "type": "array", "items": { "type": "string" } }, "domains": { "type": "array", "items": { "type": "string" } } } } ] }, "null.uuid": { "type": "object", "properties": { "uuid": { "type": "string", "format": "uuid" }, "valid": { "description": "Valid is true if `uuid` is not `null`.", "type": "boolean" } } }, "model.auth-token": { "allOf": [ { "$ref": "#/components/schemas/model.components.uuid" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "user_id": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.uuid" } ] }, "name": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.string" } ] }, "key": { "type": "string", "readOnly": true }, "hmac_method": { "type": "string", "readOnly": true }, "last_access": { "type": "string", "format": "date-time", "readOnly": true }, "created_by": { "description": "The ID of the user who created the token", "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.uuid" } ] } } } ] }, "null.int64": { "type": "object", "properties": { "int64": { "type": "integer", "format": "int64" }, "valid": { "description": "Valid is true if `int64` is not `null`.", "type": "boolean" } } }, "model.components.int64.id": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64", "readOnly": true, "description": "This is the unique identifier for this object." } } }, "enum.job-status": { "type": "integer", "description": "This enum describes the current status of a Job. Values are:\n- `-1` Invalid\n- `0` Ready\n- `1` Running\n- `2` Complete\n- `3` Canceled\n- `4` Timed Out\n- `5` Failed\n- `6` Ingesting\n- `7` Analyzing\n- `8` Partially Complete\n", "enum": [ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8 ] }, "model.domain-collection-result": { "allOf": [ { "$ref": "#/components/schemas/model.components.int64.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "job_id": { "type": "integer", "format": "int64" }, "domain_name": { "description": "Name of the domain that was enumerated", "type": "string" }, "success": { "description": "A boolean value indicating whether the domain enumeration succeeded", "type": "boolean" }, "message": { "description": "A status message for a domain enumeration result", "type": "string" }, "user_count": { "description": "A count of users enumerated", "type": "integer" }, "group_count": { "description": "A count of groups enumerated", "type": "integer" }, "computer_count": { "description": "A count of computers enumerated", "type": "integer" }, "gpo_count": { "description": "A count of gpos enumerated", "type": "integer" }, "ou_count": { "description": "A count of ous enumerated", "type": "integer" }, "container_count": { "description": "A count of containers enumerated", "type": "integer" }, "aiaca_count": { "description": "A count of aiacas enumerated", "type": "integer" }, "rootca_count": { "description": "A count of rootcas enumerated", "type": "integer" }, "enterpriseca_count": { "description": "A count of enterprisecas enumerated", "type": "integer" }, "ntauthstore_count": { "description": "A count of ntauthstores enumerated", "type": "integer" }, "certtemplate_count": { "description": "A count of certtemplates enumerated", "type": "integer" }, "deleted_count": { "description": "A count of deleted objects enumerated", "type": "integer" } } } ] }, "model.client-scheduled-job": { "allOf": [ { "$ref": "#/components/schemas/model.components.int64.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "client_id": { "type": "string", "format": "uuid", "readOnly": true }, "client_name": { "type": "string", "readOnly": true }, "event_id": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.int32" } ] }, "status": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/enum.job-status" } ] }, "statusMessage": { "type": "string", "readOnly": true }, "start_time": { "type": "string", "format": "date-time", "readOnly": true }, "end_time": { "type": "string", "format": "date-time", "readOnly": true }, "log_path": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.string" } ] }, "session_collection": { "type": "boolean" }, "local_group_collection": { "type": "boolean" }, "ad_structure_collection": { "type": "boolean" }, "cert_services_collection": { "type": "boolean" }, "ca_registry_collection": { "type": "boolean" }, "dc_registry_collection": { "type": "boolean" }, "all_trusted_domains": { "type": "boolean" }, "domain_controller": { "$ref": "#/components/schemas/null.string" }, "event_title": { "type": "string", "readOnly": true }, "last_ingest": { "type": "string", "format": "date-time", "readOnly": true }, "ous": { "type": "array", "readOnly": true, "items": { "type": "string" } }, "domains": { "type": "array", "readOnly": true, "items": { "type": "string" } }, "domain_results": { "type": "array", "readOnly": true, "items": { "$ref": "#/components/schemas/model.domain-collection-result" } } } } ] }, "enum.client-type": { "type": "string", "description": "This enum describes the collector client type.", "enum": [ "sharphound", "azurehound", "openhound" ] }, "model.client": { "allOf": [ { "$ref": "#/components/schemas/model.components.uuid" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "name": { "type": "string", "readOnly": true }, "ip_address": { "type": "string", "format": "ipv4", "readOnly": true }, "hostname": { "type": "string", "format": "hostname", "readOnly": true }, "configured_user": { "type": "string", "readOnly": true }, "last_checkin": { "type": "string", "format": "date-time", "readOnly": true }, "events": { "type": "array", "readOnly": true, "items": { "$ref": "#/components/schemas/model.client-schedule" } }, "token": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/model.auth-token" } ] }, "current_job_id": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.int64" } ] }, "current_job": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/model.client-scheduled-job" } ] }, "completed_job_count": { "type": "integer", "format": "int32", "readOnly": true }, "domain_controller": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.string" } ] }, "version": { "type": "string", "readOnly": true }, "user_sid": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.string" } ] }, "type": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/enum.client-type" } ] } } } ] }, "api.response.authenticated-requester": { "type": "object", "properties": { "data": { "oneOf": [ { "$ref": "#/components/schemas/model.user" }, { "$ref": "#/components/schemas/model.client" } ] } } }, "model.saml-provider": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "name": { "type": "string", "readOnly": true }, "display_name": { "type": "string", "readOnly": true }, "idp_issuer_uri": { "type": "string", "readOnly": true }, "idp_sso_uri": { "type": "string", "readOnly": true }, "principal_attribute_mappings": { "type": "array", "readOnly": true, "items": { "type": "string" } }, "sp_issuer_uri": { "type": "string", "readOnly": true }, "sp_sso_uri": { "type": "string", "readOnly": true }, "sp_metadata_uri": { "type": "string", "readOnly": true }, "sp_acs_uri": { "type": "string", "readOnly": true }, "sso_provider_id": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.int32" } ] } } } ] }, "model.saml-sign-on-endpoint": { "type": "object", "properties": { "name": { "type": "string", "readOnly": true }, "idp_url": { "type": "string", "readOnly": true } } }, "model.oidc-provider": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "client_id": { "type": "string" }, "issuer": { "type": "string" }, "sso_provider_id": { "type": "integer", "format": "int32" } } } ] }, "model.auth-provider": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32", "description": "Unique identifier for the SSO provider" }, "name": { "type": "string", "description": "Name of the SSO provider" }, "type": { "type": "string", "description": "Type of SSO provider (SAML or OIDC)" }, "slug": { "type": "string", "description": "URL-friendly identifier for the provider" }, "details": { "oneOf": [ { "$ref": "#/components/schemas/model.oidc-provider" }, { "$ref": "#/components/schemas/model.saml-provider" } ] } } }, "api.params.query.sort-by": { "type": "string", "description": "Sort by column. Can be used multiple times; prepend a hyphen for descending order.\nSee parameter description for details about which columns are sortable.\n" }, "api.params.predicate.filter.string": { "type": "string", "pattern": "^((eq|~eq|neq):)?[^:]+$", "description": "Filter results by column string value. Valid filter predicates are `eq`, `~eq`, `neq`.\n" }, "api.params.predicate.filter.integer": { "type": "string", "pattern": "^((eq|neq|gt|gte|lt|lte):)?-?[0-9]+$", "description": "Filter results by column integer value. Valid filter predicates are `eq`, `neq`, `gt`, `gte`, `lt`, `lte`.\n" }, "api.params.predicate.filter.time": { "type": "string", "pattern": "^((eq|neq|gt|gte|lt|lte):)?[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,9})?([Zz]|-[0-9]{2}:[0-9]{2})$", "description": "Filter results by column timestamp value formatted as an RFC-3339 string.\nValid filter predicates are `eq`, `neq`, `gt`, `gte`, `lt`, `lte`.\n" }, "api.params.predicate.filter.uuid": { "type": "string", "pattern": "^((eq|neq):)?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$", "description": "Filter results by column string-formatted uuid value. Valid filter predicates are `eq`, `neq`.\n" }, "api.requests.user.update": { "type": "object", "properties": { "first_name": { "type": "string" }, "last_name": { "type": "string" }, "email_address": { "type": "string", "format": "email" }, "principal": { "type": "string" }, "roles": { "type": "array", "items": { "type": "integer", "format": "int32" } }, "saml_provider_id": { "type": "string", "deprecated": true, "description": "Deprecated. Use sso_provider_id instead." }, "sso_provider_id": { "allOf": [ { "$ref": "#/components/schemas/null.int32" } ], "description": "ID of the SSO provider for this user" }, "is_disabled": { "type": "boolean" } } }, "api.requests.user.set-secret": { "type": "object", "properties": { "secret": { "type": "string" }, "needs_password_reset": { "type": "boolean" } } }, "model.users-minimal": { "allOf": [ { "$ref": "#/components/schemas/model.components.uuid" }, { "type": "object", "properties": { "first_name": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.string" } ] }, "last_name": { "$ref": "#/components/schemas/null.string" }, "email": { "type": "string", "readOnly": true } } } ] }, "enum.mfa-activation-status": { "type": "string", "description": "The activation status of multi-factor authentication on a BloodHound user.", "enum": [ "activated", "deactivated", "pending" ] }, "model.collector-version": { "type": "object", "properties": { "version": { "type": "string" }, "sha256sum": { "type": "string" }, "deprecated": { "type": "boolean" } } }, "model.collector-manifest": { "type": "object", "properties": { "latest": { "type": "string" }, "versions": { "type": "array", "items": { "$ref": "#/components/schemas/model.collector-version" } } } }, "model.version-meta": { "type": "object", "properties": { "major": { "type": "integer" }, "minor": { "type": "integer" }, "patch": { "type": "integer" }, "prerelease": { "type": "string" } } }, "model.kennel-asset": { "type": "object", "properties": { "name": { "type": "string" }, "download_url": { "type": "string" }, "checksum_download_url": { "type": "string" }, "os": { "type": "string" }, "arch": { "type": "string" } } }, "model.kennel-version": { "type": "object", "properties": { "version": { "type": "string" }, "version_meta": { "$ref": "#/components/schemas/model.version-meta" }, "release_date": { "type": "string", "format": "date-time" }, "release_assets": { "type": "array", "items": { "$ref": "#/components/schemas/model.kennel-asset" } } } }, "model.kennel-manifest": { "type": "object", "properties": { "sharphound": { "type": "array", "items": { "$ref": "#/components/schemas/model.kennel-version" } }, "azurehound": { "type": "array", "items": { "$ref": "#/components/schemas/model.kennel-version" } } } }, "model.kennel-enterprise-manifest": { "type": "object", "properties": { "sharphound_enterprise": { "type": "array", "items": { "$ref": "#/components/schemas/model.kennel-version" } }, "azurehound_enterprise": { "type": "array", "items": { "$ref": "#/components/schemas/model.kennel-version" } } } }, "api.params.query.skip": { "type": "integer", "minimum": 0, "description": "The number of items to skip in a paginated response." }, "api.params.query.limit": { "type": "integer", "minimum": 0, "description": "The limit of results requested by the client." }, "api.response.pagination": { "type": "object", "properties": { "count": { "type": "integer", "minimum": 0, "description": "The total number of results." }, "skip": { "$ref": "#/components/schemas/api.params.query.skip" }, "limit": { "$ref": "#/components/schemas/api.params.query.limit" } } }, "model.file-upload-job": { "allOf": [ { "$ref": "#/components/schemas/model.components.int64.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "user_id": { "type": "string", "format": "uuid" }, "user_email_address": { "type": "string", "format": "email" }, "status": { "$ref": "#/components/schemas/enum.job-status" }, "status_message": { "type": "string" }, "start_time": { "type": "string", "format": "date-time" }, "end_time": { "type": "string", "format": "date-time" }, "last_ingest": { "type": "string", "format": "date-time" }, "total_files": { "type": "integer" }, "failed_files": { "type": "integer" } } } ] }, "model.file-upload-job.completed-tasks": { "allOf": [ { "$ref": "#/components/schemas/model.components.int64.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "file_name": { "type": "string" }, "parent_file_name": { "type": "string" }, "errors": { "type": "array", "items": { "type": "string" } } } } ] }, "model.custom-node.config": { "type": "object", "properties": { "icon": { "type": "object", "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "color": { "type": "string" } } } } }, "model.custom-node": { "type": "object", "properties": { "id": { "type": "integer" }, "kindName": { "type": "string" }, "config": { "$ref": "#/components/schemas/model.custom-node.config" } } }, "model.search-result": { "type": "object", "properties": { "objectid": { "type": "string", "readOnly": true }, "type": { "type": "string", "readOnly": true }, "name": { "type": "string", "readOnly": true }, "distinguishedname": { "type": "string", "readOnly": true }, "system_tags": { "type": "string", "readOnly": true } } }, "null.boolean": { "type": "object", "properties": { "bool": { "type": "boolean" }, "valid": { "description": "Valid is true if `boolean` is not `null`", "type": "boolean" } } }, "model.asset-group-tag": { "type": "object", "properties": { "id": { "type": "integer" }, "type": { "type": "integer" }, "kind_id": { "type": "integer" }, "name": { "type": "string" }, "description": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "created_by": { "type": "string" }, "updated_at": { "type": "string", "format": "date-time" }, "updated_by": { "type": "string" }, "position": { "$ref": "#/components/schemas/null.int32" }, "require_certify": { "$ref": "#/components/schemas/null.boolean" }, "analysis_enabled": { "$ref": "#/components/schemas/null.boolean" }, "glyph": { "$ref": "#/components/schemas/null.string" } } }, "model.domain-selector": { "type": "object", "properties": { "type": { "type": "string", "readOnly": true }, "name": { "type": "string", "readOnly": true }, "id": { "type": "string", "readOnly": true }, "collected": { "type": "boolean", "readOnly": true }, "environment_kind_id": { "type": "integer", "readOnly": true, "description": "OpenGraph environment kind ID for custom environments" }, "environment_kind_name": { "type": "string", "readOnly": true, "description": "OpenGraph environment kind name for custom environments" }, "environment_kind_display_name": { "type": "string", "readOnly": true, "description": "Human-readable display name for the node's environment kind" }, "impactValue": { "type": "integer", "readOnly": true, "description": "Enterprise Only" }, "hygiene_attack_paths": { "type": "integer", "readOnly": true, "description": "Enterprise Only" }, "exposures": { "type": "array", "readOnly": true, "description": "Enterprise Only", "items": { "type": "object", "properties": { "exposure_percent": { "type": "integer", "readOnly": true }, "asset_group_tag": { "$ref": "#/components/schemas/model.asset-group-tag" } } } } } }, "enum.audit-log-status": { "type": "string", "enum": [ "intent", "success", "failure" ] }, "model.audit-log": { "allOf": [ { "$ref": "#/components/schemas/model.components.int64.id" }, { "type": "object", "properties": { "created_at": { "type": "string", "format": "date-time", "readOnly": true }, "actor_id": { "type": "string", "format": "uuid", "readOnly": true }, "actor_name": { "type": "string", "readOnly": true }, "actor_email": { "type": "string", "format": "email", "readOnly": true }, "action": { "type": "string", "readOnly": true }, "fields": { "type": "object", "readOnly": true }, "request_id": { "type": "string", "format": "uuid", "readOnly": true }, "source_ip_address": { "type": "string", "format": "ipv4", "readOnly": true }, "commit_id": { "type": "string", "format": "uuid", "readOnly": true }, "status": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/enum.audit-log-status" } ] } } } ] }, "model.app-config-param": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "key": { "type": "string" }, "value": { "type": "object" }, "name": { "type": "string", "readOnly": true }, "description": { "type": "string", "readOnly": true } } } ] }, "model.feature-flag": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "key": { "type": "string", "readOnly": true }, "name": { "type": "string", "readOnly": true }, "description": { "type": "string", "readOnly": true }, "enabled": { "type": "boolean", "readOnly": true }, "user_updatable": { "type": "boolean", "readOnly": true } } } ] }, "model.asset-group-selector": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "asset_group_id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "selector": { "type": "string" }, "system_selector": { "type": "boolean" } } } ] }, "model.asset-group": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "name": { "type": "string" }, "tag": { "type": "string" }, "system_group": { "type": "boolean", "readOnly": true }, "selectors": { "type": "array", "readOnly": true, "items": { "$ref": "#/components/schemas/model.asset-group-selector" } }, "member_count": { "type": "integer", "readOnly": true } } } ] }, "model.asset-group-collection-entry": { "allOf": [ { "$ref": "#/components/schemas/model.components.int64.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "asset_group_collection_id": { "type": "integer", "format": "int64", "writeOnly": true }, "object_id": { "type": "string", "readOnly": true }, "node_label": { "type": "string", "readOnly": true }, "properties": { "type": "object", "readOnly": true } } } ] }, "model.asset-group-collection": { "allOf": [ { "$ref": "#/components/schemas/model.components.int64.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "entries": { "type": "array", "readOnly": true, "items": { "$ref": "#/components/schemas/model.asset-group-collection-entry" } } } } ] }, "model.asset-group-selector-spec": { "type": "object", "properties": { "selector_name": { "type": "string" }, "sid": { "type": "string" }, "action": { "type": "string", "enum": [ "add", "remove" ] } } }, "model.asset-group-member": { "type": "object", "properties": { "asset_group_id": { "type": "integer" }, "object_id": { "type": "string" }, "primary_kind": { "type": "string" }, "kinds": { "type": "array", "items": { "type": "string" } }, "environment_id": { "type": "string" }, "environment_kind": { "type": "string" }, "name": { "type": "string" }, "custom_member": { "type": "boolean" } } }, "model.asset-group-tags-member": { "type": "object", "properties": { "id": { "type": "integer" }, "object_id": { "type": "string" }, "environment_id": { "type": "string" }, "primary_kind": { "type": "string" }, "name": { "type": "string" }, "properties": { "type": "object", "additionalProperties": true }, "source": { "type": "integer" } } }, "null.time.response": { "type": "string", "nullable": true, "format": "date-time", "description": "An RFC-3339 formatted string" }, "null.string.response": { "type": "string", "nullable": true }, "model.asset-group-tags-selector-seed": { "type": "object", "properties": { "type": { "type": "integer", "description": "The type of selector, valid types are 1 - object id or 2 - cypher.", "enum": [ 1, 2 ] }, "value": { "description": "The string value representing either an objectid or cypher query depending on the selector type.", "type": "string" } } }, "model.asset-group-tags-selector-response": { "type": "object", "properties": { "id": { "type": "integer" }, "asset_group_tag_id": { "type": "integer" }, "created_at": { "type": "string", "format": "date-time" }, "created_by": { "type": "string" }, "updated_at": { "type": "string", "format": "date-time" }, "updated_by": { "type": "string" }, "disabled_at": { "$ref": "#/components/schemas/null.time.response" }, "disabled_by": { "$ref": "#/components/schemas/null.string.response" }, "name": { "type": "string" }, "description": { "type": "string" }, "auto_certify": { "type": "integer", "enum": [ 0, 1, 2 ], "description": "auto_certify must be an input value of 0 (Disabled), 1 (AllMembers), or 2 (SeedsOnly)" }, "is_default": { "type": "boolean" }, "allow_disable": { "type": "boolean" }, "seeds": { "type": "array", "items": { "$ref": "#/components/schemas/model.asset-group-tags-selector-seed" } } } }, "api.params.predicate.filter.integer-strict": { "type": "string", "pattern": "^((eq|neq):)?-?[0-9]+$", "description": "Filter results by column integer value. Valid filter predicates are `eq`, `neq`.\n" }, "api.params.predicate.filter.string-strict": { "type": "string", "pattern": "^((eq|neq):)?[^:]+$", "description": "Filter results by column string value. Valid filter predicates are `eq`, `neq`.\n" }, "api.params.predicate.filter.boolean": { "type": "string", "pattern": "^((eq|neq):)?(t|T|TRUE|true|True|f|F|FALSE|false|False)$", "description": "Filter results by column boolean value. Valid filter predicates are `eq`, `neq`.\n" }, "model.asset-group-tag-request": { "type": "object", "properties": { "name": { "type": "string", "description": "Only alphanumeric characters, underscores, and spaces are allowed." }, "type": { "type": "integer" }, "description": { "type": "string" }, "require_certify": { "type": "boolean" }, "position": { "type": "integer" }, "glyph": { "$ref": "#/components/schemas/null.string" } } }, "model.asset-group-tag-update": { "type": "object", "properties": { "name": { "type": "string", "description": "Only alphanumeric characters, underscores, and spaces are allowed." }, "description": { "type": "string" }, "require_certify": { "type": "boolean" }, "position": { "type": "integer" } } }, "api.params.query.environments": { "type": "array", "items": { "type": "string" } }, "model.asset-group-tags-selector-request": { "allOf": [ { "$ref": "#/components/schemas/model.asset-group-tags-selector-response" }, { "type": "object", "properties": { "auto_certify": { "type": "integer", "enum": [ 0, 1, 2 ], "description": "auto_certify must be an input value of 0 (Disabled), 1 (AllMembers), or 2 (SeedsOnly)" }, "description": { "type": "string" }, "disabled": { "type": "boolean" } } } ] }, "model.asset-group-tags-history": { "type": "object", "properties": { "count": { "type": "integer" }, "limit": { "type": "integer" }, "skip": { "type": "integer" }, "data": { "type": "array", "items": { "type": "object", "properties": { "records": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "created_at": { "type": "string", "format": "date-time" }, "actor": { "type": "string" }, "email": { "$ref": "#/components/schemas/null.string" }, "action": { "type": "string" }, "target": { "type": "string" }, "asset_group_tag_id": { "type": "integer" }, "environment_id": { "$ref": "#/components/schemas/null.string" }, "note": { "$ref": "#/components/schemas/null.string" } } } } } } } } }, "model.asset-group-tags-certification-response": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "type": "object", "properties": { "data": { "type": "object", "properties": { "members": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64", "description": "The graph ID of this node" }, "object_id": { "type": "string" }, "environment_id": { "type": "string" }, "primary_kind": { "type": "string" }, "name": { "type": "string" }, "asset_group_tag_id": { "type": "integer", "format": "int32" }, "created_at": { "type": "string", "format": "date-time" }, "certified_by": { "type": "string" }, "certified": { "type": "integer", "description": "0 = cert pending, 1 = cert revoked, 2 = manual cert, 3 = auto cert" } } } } } } } } ] }, "model.bh-graph.item-border": { "type": "object", "properties": { "color": { "type": "string" } } }, "model.bh-graph.font-icon": { "type": "object", "properties": { "color": { "type": "string" }, "fontFamily": { "type": "string" }, "text": { "type": "string" } } }, "model.bh-graph.label": { "type": "object", "properties": { "bold": { "type": "boolean" }, "color": { "type": "string" }, "fontFamily": { "type": "string" }, "text": { "type": "string" } } }, "model.bh-graph.glyph": { "type": "object", "properties": { "angle": { "type": "integer" }, "blink": { "type": "boolean" }, "border": { "$ref": "#/components/schemas/model.bh-graph.item-border" }, "color": { "type": "string" }, "fontIcon": { "$ref": "#/components/schemas/model.bh-graph.font-icon" }, "image": { "type": "string" }, "label": { "$ref": "#/components/schemas/model.bh-graph.label" }, "position": { "type": "string" }, "radius": { "type": "integer" }, "size": { "type": "integer" } } }, "model.bh-graph.item": { "type": "object", "properties": { "color": { "type": "string" }, "fade": { "type": "boolean" }, "data": { "type": "object", "additionalProperties": true }, "glyphs": { "type": "array", "items": { "$ref": "#/components/schemas/model.bh-graph.glyph" } } } }, "model.bh-graph.node": { "allOf": [ { "$ref": "#/components/schemas/model.bh-graph.item" }, { "type": "object", "properties": { "border": { "type": "object", "properties": { "color": { "type": "string" }, "lineStyle": { "type": "string" }, "width": { "type": "integer" } } }, "coordinates": { "type": "object", "properties": { "lat": { "type": "integer" }, "lng": { "type": "integer" } } }, "cutout": { "type": "boolean" }, "fontIcon": { "$ref": "#/components/schemas/model.bh-graph.font-icon" }, "halos": { "type": "array", "items": { "type": "object", "properties": { "color": { "type": "string" }, "radius": { "type": "integer" }, "width": { "type": "integer" } } } }, "image": { "type": "string" }, "label": { "type": "object", "properties": { "backgroundColor": { "type": "string" }, "bold": { "type": "boolean" }, "center": { "type": "boolean" }, "color": { "type": "string" }, "fontFamily": { "type": "string" }, "fontSize": { "type": "integer" }, "text": { "type": "string" } } }, "shape": { "type": "string" }, "size": { "type": "integer" } } } ] }, "model.bh-graph.link-end": { "type": "object", "properties": { "arrow": { "type": "boolean" }, "backOff": { "type": "integer" }, "color": { "type": "string" }, "glyphs": { "type": "array", "items": { "$ref": "#/components/schemas/model.bh-graph.glyph" } }, "label": { "$ref": "#/components/schemas/model.bh-graph.label" } } }, "model.bh-graph.edge": { "allOf": [ { "$ref": "#/components/schemas/model.bh-graph.item" }, { "type": "object", "properties": { "end1": { "$ref": "#/components/schemas/model.bh-graph.link-end" }, "end2": { "$ref": "#/components/schemas/model.bh-graph.link-end" }, "flow": { "type": "object", "properties": { "velocity": { "type": "integer" } } }, "id1": { "type": "string" }, "id2": { "type": "string" }, "label": { "$ref": "#/components/schemas/model.bh-graph.label" }, "lineStyle": { "type": "string" }, "width": { "type": "integer" } } } ] }, "model.bh-graph.graph": { "type": "object", "additionalProperties": { "anyOf": [ { "$ref": "#/components/schemas/model.bh-graph.node" }, { "$ref": "#/components/schemas/model.bh-graph.edge" } ] } }, "model.relationship-details": { "type": "object", "required": [ "relationship_id", "source_node_id", "target_node_id", "kind", "properties" ], "properties": { "relationship_id": { "type": "integer", "format": "int64", "readOnly": true, "example": 1234567890 }, "source_node_id": { "type": "integer", "format": "int64", "readOnly": true, "example": 1234567890 }, "target_node_id": { "type": "integer", "format": "int64", "readOnly": true, "example": 1234567890 }, "kind": { "type": "object", "required": [ "relationship_kind_id", "name" ], "properties": { "relationship_kind_id": { "type": "integer", "format": "int32", "nullable": true }, "name": { "type": "string" } } }, "properties": { "type": "object", "additionalProperties": true, "required": [ "is_traversable", "lastSeen" ], "properties": { "is_traversable": { "type": "boolean" }, "lastSeen": { "type": "string", "format": "date-time" } } } } }, "model.kind-info-base": { "type": "object", "required": [ "title", "position" ], "properties": { "title": { "type": "string", "example": "Entity Panel Section" }, "position": { "type": "integer", "minimum": 0 } } }, "model.kind-info-markdown": { "type": "object", "properties": { "markdown": { "type": "object", "required": [ "content" ], "properties": { "content": { "type": "string" } } } } }, "model.kind-info-type-markdown": { "allOf": [ { "$ref": "#/components/schemas/model.kind-info-markdown" }, { "type": "object", "required": [ "markdown" ] } ] }, "model.kind-info-content": { "type": "object", "oneOf": [ { "$ref": "#/components/schemas/model.kind-info-type-markdown" } ] }, "model.kind-info-response": { "allOf": [ { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "example": "panel_section_1" } } }, { "$ref": "#/components/schemas/model.kind-info-base" }, { "$ref": "#/components/schemas/model.kind-info-content" } ] }, "model.relationship-details-with-info": { "allOf": [ { "$ref": "#/components/schemas/model.relationship-details" }, { "type": "object", "properties": { "info": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/model.kind-info-response" }, { "type": "object", "required": [ "relationship_kind_id" ], "properties": { "relationship_kind_id": { "type": "integer" } } } ] } } } } ] }, "model.node-details": { "type": "object", "properties": { "node_id": { "type": "integer", "format": "int64", "readOnly": true, "example": 1234567890 }, "kinds": { "type": "array", "items": { "type": "object", "required": [ "name", "node_kind_id" ], "properties": { "node_kind_id": { "type": "integer", "format": "int32", "nullable": true, "description": "Schema node kind ID, or null if the kind is not registered in schema_node_kinds" }, "name": { "type": "string", "description": "The kind name from the graph node" } } } }, "properties": { "type": "object", "properties": { "objectid": { "type": "string" }, "name": { "type": "string" }, "displayName": { "type": "string" }, "lastSeen": { "type": "string", "format": "date-time" } }, "additionalProperties": true } } }, "api.params.predicate.filter.contains": { "type": "string", "pattern": "^(in|nin):(\\w+)(,\\s*\\w+)*$", "description": "The contains predicate checks a property against the values in a given comma separated list.\n- `in` checks if the property matches an element in the given comma separated list.\n - `in:Contains,GetChangesAll,MemberOf`\n- `nin` checks if the property does not match an element in the given comma separated list.\n - `nin:LocalToComputer,MemberOfLocalGroup`\n" }, "model.unified-graph.node": { "type": "object", "properties": { "label": { "type": "string" }, "kind": { "type": "string" }, "kinds": { "type": "array", "items": { "type": "string" } }, "objectId": { "type": "string" }, "isTierZero": { "type": "boolean" }, "isOwnedObject": { "type": "boolean" }, "lastSeen": { "type": "string", "format": "date-time" }, "properties": { "type": "object", "additionalProperties": { "type": "object" } } } }, "model.unified-graph.edge": { "type": "object", "properties": { "source": { "type": "string" }, "target": { "type": "string" }, "label": { "type": "string" }, "kind": { "type": "string" }, "lastSeen": { "type": "string", "format": "date-time" }, "properties": { "type": "object", "additionalProperties": { "type": "object" } } } }, "model.unified-graph.graph": { "type": "object", "properties": { "nodes": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/model.unified-graph.node" } }, "edges": { "type": "array", "items": { "$ref": "#/components/schemas/model.unified-graph.edge" } } } }, "api.response.graph-extensions-info": { "type": "object", "properties": { "data": { "type": "object", "required": [ "extensions" ], "properties": { "extensions": { "type": "array", "items": { "type": "object", "required": [ "id", "name", "version", "is_builtin", "namespace" ], "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "version": { "type": "string" }, "is_builtin": { "type": "boolean" }, "namespace": { "type": "string" } } } } } } }, "required": [ "data" ], "example": { "data": { "extensions": [ { "id": 1, "name": "Active Directory", "version": "v1.0.0", "is_builtin": true, "namespace": "AD" } ] } } }, "model.graph-extension.kind-info-definition": { "type": "object", "description": "A map of named info panels used in extension definitions.\nEach property key is a stable panel identifier and must match the pattern\n`^[a-z0-9_-]{1,128}$` (lowercase alphanumeric characters, hyphens, and underscores only).\nEach property value must be a valid KindInfo object with title, position, and content.\n", "additionalProperties": { "allOf": [ { "$ref": "#/components/schemas/model.kind-info-base" }, { "$ref": "#/components/schemas/model.kind-info-markdown" } ] } }, "model.graph-extension.payload": { "type": "object", "properties": { "schema": { "type": "object", "properties": { "name": { "type": "string", "example": "OpenGraph_Extension" }, "display_name": { "type": "string", "example": "OpenGraph Extension" }, "version": { "type": "string", "example": "v1.0.0" }, "namespace": { "type": "string", "example": "OGE" } } }, "node_kinds": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "example": "OGE_Computer" }, "display_name": { "type": "string", "example": "OGE Computer" }, "description": { "type": "string", "example": "An OpenGraph Extension Computer object" }, "is_display_kind": { "type": "boolean" }, "icon": { "type": "string", "example": "Desktop" }, "color": { "type": "string", "example": "#FF0000" }, "info": { "$ref": "#/components/schemas/model.graph-extension.kind-info-definition" } } } }, "relationship_kinds": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "example": "OGE_ConnectedTo" }, "description": { "type": "string", "example": "An OpenGraph Extension ConnectedTo edge" }, "is_traversable": { "type": "boolean" }, "info": { "$ref": "#/components/schemas/model.graph-extension.kind-info-definition" } } } }, "environments": { "type": "array", "items": { "type": "object", "properties": { "environment_kind": { "type": "string", "example": "OGE_Environment" }, "source_kind": { "type": "string", "example": "OGExtension" }, "principal_kinds": { "type": "array", "items": { "type": "string" }, "example": [ "OGE_User", "OGE_Computer" ] } } } }, "relationship_findings": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "example": "OGE_Malicious_Finding_1" }, "display_name": { "type": "string", "example": "Malicious Finding 1 (OG Extension)" }, "relationship_kind": { "type": "string", "example": "OGE_ConnectedTo" }, "environment_kind": { "type": "string", "example": "OGE_Environment" }, "remediation": { "type": "object", "properties": { "short_description": { "type": "string" }, "long_description": { "type": "string" }, "short_remediation": { "type": "string" }, "long_remediation": { "type": "string" } } } } } } } }, "model.graph-schema-edge-kinds": { "type": "object", "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "description": { "type": "string" }, "is_traversable": { "type": "boolean" }, "schema_name": { "type": "string" }, "is_builtin": { "type": "boolean" } } }, "model.extension-details": { "type": "object", "nullable": true, "properties": { "extension_id": { "type": "integer", "format": "int32", "example": 7 }, "name": { "type": "string", "example": "AD" }, "display_name": { "type": "string", "example": "Active Directory" }, "namespace": { "type": "string", "example": "AD" }, "version": { "type": "string", "example": "v1" } } }, "model.node-kind-response": { "type": "object", "properties": { "node_kind_id": { "type": "integer", "format": "int32", "example": 42 }, "name": { "type": "string", "example": "User" }, "display_name": { "type": "string", "example": "User" }, "description": { "type": "string", "example": "a user node kind" }, "is_display_kind": { "type": "boolean", "example": true }, "icon": { "type": "string", "example": "user" }, "color": { "type": "string", "example": "#FFFFFF" }, "extension": { "$ref": "#/components/schemas/model.extension-details" }, "info": { "$ref": "#/components/schemas/model.graph-extension.kind-info-definition" } } }, "model.saved-query": { "allOf": [ { "$ref": "#/components/schemas/model.components.int64.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "user_id": { "type": "string", "format": "uuid", "readOnly": true }, "name": { "type": "string" }, "query": { "type": "string" }, "description": { "type": "string" } } } ] }, "model.saved-queries-permissions.response": { "type": "object", "properties": { "shared_to_user_ids": { "type": "array", "items": { "$ref": "#/components/schemas/model.components.uuid" } }, "query_id": { "type": "integer", "format": "int64" }, "public": { "type": "boolean" } } }, "model.saved-queries-permissions": { "allOf": [ { "$ref": "#/components/schemas/model.components.int64.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "shared_to_user_id": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.uuid" } ] }, "query_id": { "type": "integer", "format": "int64" }, "public": { "type": "boolean" } } } ] }, "model.unified-graph.graph.w.property.keys": { "type": "object", "properties": { "node_keys": { "type": "array", "items": { "type": "string" } }, "edge_keys": { "type": "array", "items": { "type": "string" } }, "nodes": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/model.unified-graph.node" } }, "edges": { "type": "array", "items": { "$ref": "#/components/schemas/model.unified-graph.edge" } }, "literals": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "value": { "type": "object", "nullable": true, "anyOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" }, { "type": "array" }, { "type": "object" } ] } } } } } }, "api.response.time-window": { "type": "object", "properties": { "start": { "type": "string", "format": "date-time", "description": "The RFC-3339 timestamp to describe the beginning of a time range" }, "end": { "type": "string", "format": "date-time", "description": "The RFC-3339 timestamp to describe the end of a time range" } } }, "model.ad-data-quality-stat": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "domain_sid": { "type": "string" }, "users": { "type": "integer" }, "groups": { "type": "integer" }, "computers": { "type": "integer" }, "ous": { "type": "integer" }, "containers": { "type": "integer" }, "gpos": { "type": "integer" }, "aiacas": { "type": "integer" }, "rootcas": { "type": "integer" }, "enterprisecas": { "type": "integer" }, "ntauthstores": { "type": "integer" }, "certtemplates": { "type": "integer" }, "acls": { "type": "integer" }, "sessions": { "type": "integer" }, "relationships": { "type": "integer" }, "session_completeness": { "type": "number", "format": "double" }, "local_group_completeness": { "type": "number", "format": "double" }, "run_id": { "type": "string", "format": "uuid" } } } ] }, "model.azure-data-quality-stat": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "tenantid": { "type": "string", "format": "uuid" }, "users": { "type": "integer" }, "groups": { "type": "integer" }, "apps": { "type": "integer" }, "service_principals": { "type": "integer" }, "devices": { "type": "integer" }, "management_groups": { "type": "integer" }, "subscriptions": { "type": "integer" }, "resource_groups": { "type": "integer" }, "vms": { "type": "integer" }, "key_vaults": { "type": "integer" }, "relationships": { "type": "integer" }, "run_id": { "type": "string", "format": "uuid" } } } ] }, "model.ad-data-quality-aggregation": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "domains": { "type": "integer" }, "users": { "type": "integer" }, "groups": { "type": "integer" }, "computers": { "type": "integer" }, "ous": { "type": "integer" }, "containers": { "type": "integer" }, "gpos": { "type": "integer" }, "aiacas": { "type": "integer" }, "rootcas": { "type": "integer" }, "enterprisecas": { "type": "integer" }, "ntauthstores": { "type": "integer" }, "certtemplates": { "type": "integer" }, "acls": { "type": "integer" }, "sessions": { "type": "integer" }, "relationships": { "type": "integer" }, "session_completeness": { "type": "number", "format": "float" }, "local_group_completeness": { "type": "number", "format": "float" }, "run_id": { "type": "string", "format": "uuid" } } } ] }, "model.azure-data-quality-aggregation": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "tenants": { "type": "integer" }, "users": { "type": "integer" }, "groups": { "type": "integer" }, "apps": { "type": "integer" }, "service_principals": { "type": "integer" }, "devices": { "type": "integer" }, "management_groups": { "type": "integer" }, "subscriptions": { "type": "integer" }, "resource_groups": { "type": "integer" }, "vms": { "type": "integer" }, "key_vaults": { "type": "integer" }, "relationships": { "type": "integer" }, "run_id": { "type": "string", "format": "uuid" } } } ] }, "api.response.data-quality-platform-aggregate": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "$ref": "#/components/schemas/api.response.time-window" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/model.ad-data-quality-aggregation" }, { "$ref": "#/components/schemas/model.azure-data-quality-aggregation" } ] } } } } ] }, "model.data-quality-stat": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "extension_id": { "type": "integer" }, "environment_kind_id": { "type": "integer" }, "environment_id": { "type": "string" }, "metric_type": { "type": "string", "enum": [ "node", "relationship" ] }, "metric_name": { "type": "string" }, "metric_value": { "type": "number", "format": "double" }, "kind_id": { "description": "The kind ID for the counted node kind. Present when `metric_type` is `node`; otherwise null.", "type": "integer", "format": "int32", "nullable": true }, "run_id": { "type": "string", "format": "uuid" } } } ] }, "model.data-quality-aggregation": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "run_id": { "type": "string" }, "extension_id": { "type": "integer", "format": "int32" }, "environment_kind_id": { "type": "integer", "format": "int32" }, "metric_type": { "type": "string", "enum": [ "node", "relationship" ] }, "metric_name": { "type": "string" }, "metric_value": { "type": "number", "format": "double" }, "kind_id": { "description": "The kind ID for the counted node kind. Present when `metric_type` is `node`; otherwise null.", "type": "integer", "format": "int32", "nullable": true } } } ] }, "enum.datapipe-status": { "type": "string", "enum": [ "idle", "ingesting", "analyzing" ] }, "model.components.base-ad-entity": { "type": "object", "properties": { "objectid": { "type": "string" }, "name": { "type": "string", "nullable": true }, "exists": { "type": "boolean", "nullable": true } } }, "model.ou-details": { "allOf": [ { "$ref": "#/components/schemas/model.components.base-ad-entity" }, { "type": "object", "properties": { "distinguishedname": { "type": "string", "nullable": true }, "type": { "type": "string", "nullable": true } } } ] }, "model.domain-details": { "allOf": [ { "$ref": "#/components/schemas/model.components.base-ad-entity" }, { "type": "object", "properties": { "type": { "type": "string" } } } ] }, "model.client-schedule-display": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "type": "object", "properties": { "client_id": { "type": "string", "format": "uuid" }, "rrule": { "type": "string" }, "session_collection": { "type": "boolean" }, "local_group_collection": { "type": "boolean" }, "ad_structure_collection": { "type": "boolean" }, "cert_services_collection": { "type": "boolean" }, "ca_registry_collection": { "type": "boolean" }, "dc_registry_collection": { "type": "boolean" }, "all_trusted_domains": { "type": "boolean" }, "ous": { "type": "array", "items": { "$ref": "#/components/schemas/model.ou-details" } }, "domains": { "type": "array", "items": { "$ref": "#/components/schemas/model.domain-details" } } } } ] }, "model.client-scheduled-job-display": { "allOf": [ { "$ref": "#/components/schemas/model.components.int64.id" }, { "type": "object", "properties": { "client_id": { "type": "string", "format": "uuid" }, "client_name": { "type": "string" }, "event_id": { "$ref": "#/components/schemas/null.int32" }, "execution_time": { "type": "string", "format": "date-time" }, "start_time": { "type": "string", "format": "date-time" }, "end_time": { "type": "string", "format": "date-time" }, "status": { "$ref": "#/components/schemas/enum.job-status" }, "status_message": { "type": "string" }, "session_collection": { "type": "boolean" }, "local_group_collection": { "type": "boolean" }, "ad_structure_collection": { "type": "boolean" }, "cert_services_collection": { "type": "boolean" }, "ca_registry_collection": { "type": "boolean" }, "dc_registry_collection": { "type": "boolean" }, "all_trusted_domains": { "type": "boolean" }, "domain_controller": { "type": "string" }, "ous": { "type": "array", "items": { "$ref": "#/components/schemas/model.ou-details" } }, "domains": { "type": "array", "items": { "$ref": "#/components/schemas/model.domain-details" } }, "domain_results": { "type": "array", "items": { "$ref": "#/components/schemas/model.domain-collection-result" } } } } ] }, "enum.client-management-operation-type": { "type": "string", "enum": [ "support_bundle" ] }, "enum.client-management-operation-status": { "type": "string", "enum": [ "queued", "running", "succeeded", "failed", "canceled" ] }, "model.client-management-operation": { "allOf": [ { "$ref": "#/components/schemas/model.components.uuid" }, { "type": "object", "properties": { "client_id": { "type": "string", "format": "uuid", "readOnly": true }, "artifact_id": { "type": "string", "format": "uuid", "nullable": true }, "type": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/enum.client-management-operation-type" } ] }, "status": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/enum.client-management-operation-status" } ] }, "requested_by_user_id": { "type": "string", "format": "uuid", "nullable": true }, "created_at": { "type": "string", "format": "date-time", "readOnly": true }, "updated_at": { "type": "string", "format": "date-time", "readOnly": true }, "started_at": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.time.response" } ] }, "completed_at": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/null.time.response" } ] }, "execution_time": { "type": "string", "format": "date-time", "readOnly": true } } } ] }, "model.client-support-bundle-summary": { "type": "object", "properties": { "current": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/model.client-management-operation" } ] }, "last_finished": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/model.client-management-operation" } ] } } }, "model.client-display": { "allOf": [ { "$ref": "#/components/schemas/model.components.uuid" }, { "type": "object", "properties": { "name": { "type": "string" }, "ip_address": { "type": "string", "format": "ipv4" }, "hostname": { "type": "string" }, "configured_user": { "type": "string" }, "last_checkin": { "type": "string", "format": "date-time" }, "events": { "type": "array", "items": { "$ref": "#/components/schemas/model.client-schedule-display" } }, "token": { "$ref": "#/components/schemas/model.auth-token" }, "current_job_id": { "$ref": "#/components/schemas/null.int64" }, "current_task_id": { "$ref": "#/components/schemas/null.int64" }, "current_job": { "$ref": "#/components/schemas/model.client-scheduled-job-display" }, "current_task": { "$ref": "#/components/schemas/model.client-scheduled-job-display" }, "completed_job_count": { "type": "integer", "format": "int32" }, "completed_task_count": { "type": "integer", "format": "int32" }, "domain_controller": { "$ref": "#/components/schemas/null.string" }, "version": { "type": "string" }, "user_sid": { "$ref": "#/components/schemas/null.string" }, "type": { "$ref": "#/components/schemas/enum.client-type" }, "support_bundle_summary": { "$ref": "#/components/schemas/model.client-support-bundle-summary" } } } ] }, "model.client-management-operation-queue-request": { "type": "object", "required": [ "operation_type", "execution_time" ], "properties": { "operation_type": { "allOf": [ { "$ref": "#/components/schemas/enum.client-management-operation-type" } ] }, "execution_time": { "type": "string", "format": "date-time" } } }, "model.client-management-operation-start-request": { "type": "object", "required": [ "operation_id" ], "properties": { "operation_id": { "type": "string", "format": "uuid" } } }, "model.client-management-operation-end-request": { "type": "object", "required": [ "operation_id", "status" ], "properties": { "operation_id": { "type": "string", "format": "uuid" }, "status": { "type": "string", "enum": [ "succeeded", "failed", "canceled" ] } } }, "enum.risk-acceptance": { "type": "string", "enum": [ "accepted", "unaccepted", "all", "" ] }, "model.unified-finding": { "oneOf": [ { "type": "object", "required": [ "target_id", "target_kind", "target_properties", "finding_name", "environment_id", "impact_percentage", "impact_count", "accepted_until", "asset_group" ], "properties": { "target_id": { "type": "string" }, "target_kind": { "type": "string" }, "target_properties": { "type": "object", "additionalProperties": { "type": "object" } }, "finding_name": { "type": "string" }, "environment_id": { "type": "object", "additionalProperties": { "type": "object" } }, "impact_percentage": { "type": "number", "format": "double" }, "impact_count": { "type": "number", "format": "double" }, "accepted_until": { "type": "integer", "format": "int64" }, "asset_group": { "type": "string" } } }, { "type": "object", "required": [ "target_id", "target_kind", "target_properties", "source_id", "source_kind", "source_properties", "attack_path_edge_id", "finding_name", "environment_id", "impact_percentage", "impact_count", "exposure_percentage", "exposure_count", "accepted_until", "asset_group" ], "properties": { "target_id": { "type": "string" }, "target_kind": { "type": "string" }, "target_properties": { "type": "string", "additionalProperties": { "type": "object" } }, "source_id": { "type": "string" }, "source_kind": { "type": "string" }, "source_properties": { "type": "object", "additionalProperties": { "type": "object" } }, "attack_path_edge_id": { "type": "number", "format": "int64" }, "finding_name": { "type": "string" }, "environment_id": { "type": "object", "additionalProperties": { "type": "object" } }, "impact_percentage": { "type": "number", "format": "double" }, "impact_count": { "type": "number", "format": "int64" }, "exposure_percentage": { "type": "number", "format": "double" }, "exposure_count": { "type": "number", "format": "int64" }, "accepted_until": { "type": "integer", "format": "int64" }, "asset_group": { "type": "string" } } } ] }, "api.response.all-findings": { "type": "object", "properties": { "findings": { "type": "array", "description": "List of unified findings.", "items": { "$ref": "#/components/schemas/model.unified-finding" } }, "finding_assets": { "type": "object", "description": "Directory structure of Base64 encoded assets related to each finding organized by finding name.", "additionalProperties": { "type": "object" } } }, "required": [ "findings", "finding_assets" ] }, "model.relationship-finding": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "FromPrincipal": { "type": "string" }, "ToPrincipal": { "type": "string" }, "FromPrincipalProps": { "type": "object", "additionalProperties": { "type": "object" } }, "FromPrincipalKind": { "type": "string" }, "ToPrincipalProps": { "type": "object", "additionalProperties": { "type": "object" } }, "ToPrincipalKind": { "type": "string" }, "RelProps": { "type": "object", "additionalProperties": { "type": "object" } }, "ComboGraphRelationID": { "$ref": "#/components/schemas/null.int64" }, "Finding": { "type": "string" }, "DomainSID": { "type": "string" }, "PrincipalHash": { "type": "string" }, "AcceptedUntil": { "type": "string", "format": "date-time" }, "ImpactPercentage": { "type": "number", "format": "double" }, "ImpactCount": { "type": "integer", "format": "int64" }, "ExposurePercentage": { "type": "number", "format": "double" }, "ExposureCount": { "type": "integer", "format": "int64" }, "Severity": { "type": "string", "enum": [ "critical", "high", "moderate", "low", "" ] } } } ] }, "model.list-finding": { "allOf": [ { "$ref": "#/components/schemas/model.components.int32.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "Principal": { "type": "string" }, "PrincipalKind": { "type": "string" }, "Finding": { "type": "string" }, "DomainSID": { "type": "string" }, "Props": { "type": "object", "additionalProperties": { "type": "object" } }, "AcceptedUntil": { "type": "string", "format": "date-time" }, "ImpactPercentage": { "type": "number", "format": "double" }, "ImpactCount": { "type": "integer", "format": "int64" }, "Severity": { "type": "string", "enum": [ "critical", "high", "moderate", "low", "" ] } } } ] }, "model.risk-counts": { "allOf": [ { "$ref": "#/components/schemas/model.components.int64.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "CompositeRisk": { "type": "number", "format": "double" }, "FindingCount": { "type": "integer" }, "ImpactedAssetCount": { "type": "integer" }, "DomainSID": { "type": "string" }, "Finding": { "type": "string" } } } ] }, "api.response.finding": { "type": "object", "properties": { "data": { "oneOf": [ { "$ref": "#/components/schemas/model.list-finding" }, { "$ref": "#/components/schemas/model.relationship-finding" } ] } } }, "model.risk-posture-stat": { "allOf": [ { "$ref": "#/components/schemas/model.components.int64.id" }, { "$ref": "#/components/schemas/model.components.timestamps" }, { "type": "object", "properties": { "domain_sid": { "type": "string" }, "exposure_index": { "type": "number", "format": "double" }, "tier_zero_count": { "type": "integer", "format": "int64" }, "critical_risk_count": { "type": "integer" } } } ] }, "enum.posture-history-type": { "type": "string", "description": "This enum describes the valid data types for posture history results.", "enum": [ "findings", "exposure", "assets", "session-completeness", "group-completeness", "attack-paths", "archived-findings" ] } }, "responses": { "bad-request": { "description": "**Bad Request**\nThis could be due to one of the following reasons:\n- JSON payload is missing or malformed\n- Path or query parameters are missing or invalid/malformed\n- The data sent is not valid (ex- sending a `string` in an `integer` field)\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" }, "example": { "http_status": 400, "timestamp": "2024-02-19T19:27:43.866Z", "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "errors": [ { "context": "clients", "message": "The JSON payload could not be unmarshalled." } ] } } } }, "unauthorized": { "description": "**Unauthorized**\nThis endpoint failed an authentication requirement. Either the client tried to access\na protected endpoint without being authenticated, or an auth validation failed (ex- invalid\ncredentials or expired token).\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" }, "example": { "http_status": 401, "timestamp": "2024-02-19T19:27:43.866Z", "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "errors": [ { "context": "login", "message": "Unauthorized" } ] } } } }, "forbidden": { "description": "**Forbidden**\nThis is most commonly caused by an authenticated client trying to\naccess a resource that it does not have permission for.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" }, "example": { "http_status": 403, "timestamp": "2024-02-19T19:27:43.866Z", "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "errors": [ { "context": "clients", "message": "You do not have permission to access this resource" } ] } } } }, "too-many-requests": { "description": "**Too Many Requests**\nThe client has sent too many requests within a certain time window\nand tripped the rate limiting middleware.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" }, "example": { "http_status": 429, "timestamp": "2024-02-19T19:27:43.866Z", "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "errors": [ { "context": "middleware", "message": "Too many requests. Please try again later." } ] } } } }, "internal-server-error": { "description": "**Internal Server Error**\nThis is usually the result of either an unexpected database or application error.\nThe client may try modifying or resending the request, but the error is likely not related to the client\ndoing something wrong.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" }, "example": { "http_status": 500, "timestamp": "2024-02-19T19:27:43.866Z", "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "errors": [ { "context": "clients", "message": "The request could not be handled due to an unexpected database error." } ] } } } }, "not-found": { "description": "**Not Found**\nThis error typically comes from operations where a valid ID was passed to the request\nto look up an entity but the entity could not be found.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" }, "example": { "http_status": 404, "timestamp": "2024-02-19T19:27:43.866Z", "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "errors": [ { "context": "clients", "message": "The requested client could not be found." } ] } } } }, "no-content": { "description": "**No Content**\nThis response will contain no response body.\n", "content": { "text/plain": { "schema": { "type": "string" }, "example": "[this request has no response data]" } } }, "error-response": { "description": "The standard error response wrapper.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" } } } }, "binary-response": { "description": "**OK**\nThis response will contain binary content.\n", "headers": { "Content-Disposition": { "schema": { "type": "string" } } }, "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" }, "example": "[this request has a binary response]" } } }, "unsupported-media-type": { "description": "**Unsupported Media Type**\nContent-Type does not match expected formats.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/api.error-wrapper" }, "example": { "http_status": 415, "timestamp": "2024-02-19T19:27:43.866Z", "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "errors": [ { "context": "clients", "message": "invalid content-type: [application/incorrect]; Content type must be application/json or application/zip" } ] } } } }, "entity-info-query-results": { "description": "**OK**\n\nThis response is polymorphic and depends on the type of entity being queried and whether\nthe `count` param is true or not. All node types will return a `props` field with the graph node\nproperties and a `kinds` field with the graph node kinds. If `count=true` the response will also include additional fields with integer counts.\n", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "kinds": { "type": "array", "items": { "type": "string" } }, "props": { "type": "object", "additionalProperties": { "type": "object" } } } } } } } } }, "related-entity-query-results": { "description": "**OK**\n\nThis endpoint returns a response, dependent upon which return type is requested by the `type` parameter.\nThe only supported `type` parameter is `list`.\nWhile `list` is the only supported `type` parameter, the `graph` parameter can be used\nand will result in a different response structure then documented here.\nFor those interested in using the undocumented graph type parameter, the response type is described in the schema\n`model.bh-graph.graph`.\n", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/api.response.pagination" }, { "title": "list", "type": "object", "properties": { "data": { "type": "array", "items": { "title": "paged-node-list-entry", "type": "object", "properties": { "objectID": { "type": "string" }, "name": { "type": "string" }, "label": { "type": "string" }, "kinds": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "csv-response": { "description": "**OK**\nThis response will contain csv text content.\n", "content": { "text/csv": { "schema": { "type": "string" }, "example": "header1,header2,header3\ncell1,cell2,cell3\ncell4,cell5,cell6\n...\n" } } } } }, "x-tagGroups": [ { "name": "Community & Enterprise", "tags": [ "Auth", "Roles", "Permissions", "API Tokens", "BloodHound Users", "Collectors", "Collection Uploads", "Custom Node Management", "API Info", "Search", "Audit", "Config", "Asset Isolation", "Graph", "Azure Entities", "AD Base Entities", "Computers", "Containers", "Domains", "GPOs", "AIA CAs", "Root CAs", "Enterprise CAs", "NT Auth Stores", "Cert Templates", "OUs", "AD Users", "Groups", "Data Quality", "Datapipe", "Cypher", "OpenGraph (Experimental)" ] }, { "name": "Enterprise Only", "tags": [ "EULA", "BHE Users", "Analysis", "Client Ingest", "Clients", "Jobs", "Tasks", "Events (Schedules)", "Attack Paths", "Risk Posture", "Meta Entities", "Alerts" ] } ] }