Skip to main content

Cloud ConnectorsOpen API

Table of Contents

Accounts API v1

Note

v2 of this API supersedes some of the v1 APIs. v2 is only new additions, so an API not present in v2 can still be used in v1.

Prefix all v1 API URLs with:

https://<your-server-ip>:8443/openapi/api/rest/v1/accounts

Authentication

See Add Open API Authentication and Roles.

Objects used with these APIs

AccountConfiguration

{
   "id":"string",
   "name":"string", # max of 64 characters
   "description":"string",
   "application":"string",
   "tenant":{
      "id":"string",
      "name":"string"
   },
   "authn-data":{
      "type":"BASIC",
      "fields":[
         {
            "name":"string",
            "value":"string"
         },
         "..."
      ]
   }
}

AccountStatus

{
   "id":"string", # unique id of account
   "tenant":{
      "id":"string",
      "name":"string"
   },
   "name":"string", # name given to account during onboard. e.g. MyAWS E
   "application":"string", # name of service. e.g. AWS
   "status":"StatusSummary", # "worst active endpoint"
   "is-active":"boolean", # true when the account is in "RUNNING" status; false otherwise
   "endpoint-status":"Array<EndpointStatus>"
}

ExportedAccountPackage

{
   "account":{
      "src-tenant-id":"string", # tenant ID from which the account was exported
      "src-tenant-name":"string", # tenant name from which the account was exported
      "src-account-id":"string", # account ID in the SkyFormation server from which it was exported
      "name":"string", # account name
      "service":"string", # service name
      "description":"string", # optional 
      "active":"boolean", # account activation state
      "dlp-active":"boolean", # account DLP activation state
      "malware-active":"boolean", # account malware activation state
      "identity-reconciliation-rule":"JSON object", # identity reconciliation rule, optional
      "account-settings":"JSON object" # account settings
      "authn-data":"JSON object" # account authentication data
   },
   "mng-data":"JSON object" # account latest runtime information from the Exabeam Cloud Connector server from which it was exported"
}

EndpointStatus

{
   "name":"string", # Unique name of endpoint
   "health-status":"StatusSummary",
   "is-active":"boolean",
   "last-successful-sync":"SyncResult",
   "latest-syncs":"List<SyncResult>" # up to last 3 syncs, successful and errornous, sorted by update time, desc.
}

SyncResult

{ 
   "result-size": long, number of events retreived, 
   "total-sync-time": long, sec of duration, e.g. 60.000000, 
   "sync-date": double, sec since epoch, e.g. 1500207395.152, 
   "earliest-retrieved": long, sec since epoch, e.g. 1500194885, date of earliest event retrieved in the sync result, 
   "latest-retrieved": long, sec since epoch, e.g. 1500194885, date of latest event retreived in the sync result, 
   "earliest-requested": long, sec since epoch, e.g. 1500194885, date of earliest event requested to be synced, 
   "latest-requested": long, sec since epoch, e.g. 1500194885, date of latest event requested to be synced, 
   "result": StatusSummary 
}

StatusSummary

{
   "state":"enum string", # "OK|WARN|ERROR"
   "cause":"string", # optional, present when WARN or ERROR, describes the reason for the state
   "locked-until":"number", # optional, present when in ERROR due to account lock, describes future unlock time; since 2.2.4; e.g. 1516195097.449
}

User

{
   "id":"string",
   "full-name":"string", # display name of the user
   "username":"string", 
   "email":"string",
   "last-login":"string", # optional
   "status":"enum string", # "locked_out|suspended|dormant|active"
}

ConnectorsSyncSettings

{
    "user-identity-assignment": JSON object, when user reconciliation is configured, defines the LDAP/AD user property to be sent accross all events as a user identifier (null by default),
    "failover-enabled": boolean, enable/disable account recovery machanism (true by default),
    "global-sync-target": string, ["siem" | "local-bus"], decides whether events synced from all accounts, accross all endpoints, would be sent to a local event bus ("local-bus") or be sent directly to the configured SIEM. If defined it overrides the configured sync target at the level of each of endpoints (null by default)  
}

ExposedResource

{  
  "scope": enum string, public|public_authenticated,  
  "path": string,  
  "content-modified-time": date, time in epoch milli  
  "last-modified-time": date, time in epoch milli  
  "content-type": string,  
  "creation-time": date, time in epoch milli  
  "owner": {  
    "type": string, email|user name  
    "value": string  
  },  
  "expiration-time": date, time in epoch milli  
  "name": string,  
  "resource-type": string, file|folder  
  "is-container": boolean,  
  "size": long, size in bytes  
  "classification": string, data classification type for sensitive data  
  "shared-with-users": Array of user details that the file was shared with  
  [  
    {  
      "type": string, email|user name,  
      "value": string  
    },  
    {  
      "type": string, email|user name,  
      "value": string  
    }  
    ...  
  ],  
  "app-specific-property-bag" : {  
     "key" : "value",  
     ...  
  }  
} 

AccountResetFilter

Formal JSON Schema

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "definitions": {
        "AccountResetFilter": {
            "properties": {
                "type": {
                    "enum": [
                        "all",
                        "some"
                    ],
                    "type": "string"
                }
            },
            "type": "object"
        },
        "AccountResetFilterUnion": {
            "anyOf": [
                {
                    "$ref": "#/definitions/Some"
                },
                {
                    "$ref": "#/definitions/All"
                }
            ]
        },
        "All": {
            "properties": {
                "type": {
                    "enum": [
                        "all"
                    ],
                    "type": "string"
                }
            },
            "type": "object"
        },
        "EndpointCondition": {
            "properties": {
                "type": {
                    "enum": [
                        "exact",
                        "starts-with"
                    ],
                    "type": "string"
                }
            },
            "type": "object"
        },
        "EndpointConditionUnion": {
            "anyOf": [
                {
                    "$ref": "#/definitions/Exact"
                },
                {
                    "$ref": "#/definitions/StartsWith"
                }
            ]
        },
        "Exact": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "type": {
                    "enum": [
                        "exact"
                    ],
                    "type": "string"
                }
            },
            "type": "object"
        },
        "Some": {
            "properties": {
                "endpoint-conditions": {
                    "items": {
                        "anyOf": [
                            {
                                "$ref": "#/definitions/Exact"
                            },
                            {
                                "$ref": "#/definitions/StartsWith"
                            }
                        ]
                    },
                    "type": "array"
                },
                "type": {
                    "enum": [
                        "some"
                    ],
                    "type": "string"
                }
            },
            "type": "object"
        },
        "StartsWith": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "type": {
                    "enum": [
                        "starts-with"
                    ],
                    "type": "string"
                }
            },
            "type": "object"
        }
    }
}

Examples:

Reset all of an account’s endpoints:

{
    "type": "all"
}

Reset some of an account’s endpoints: Will reset the endpoint "my-endpoint" as well as all endpoint that start-with "my-other-endp" , e.g. "my-other-endpoint-1" and "my-other-endp"

{
    "type": "some",
    "endpoint-conditions": [
        {
            "type": "exact",
            "name": "my-endpoint"
        },
        {
            "type": "starts-with",
            "name": "my-other-endp"
        }
    ]
}

AccountResetResponse

A list (array) of endpoint names that were successfully reset. e.g.

[
    "endpoint-1", "endpoint-2"
]

Get all accounts

GET /

Response:

200,

List<AccountConfiguration>

Get single account

GET /{account-id}

Response:

200,

AccountConfiguration

Create an account

Refer to required authentication fields to detailed list of what each application type requires for authentication

POST /

Body:

AccountConfiguration w/o id.

Response:

200,

AccountConfiguration w/ id.

Modify an account

Refer to required authentication fields to detailed list of what each application type requires for authentication

PUT /{account-id}

Body:

AccountConfiguration

Response:

200,

AccountConfiguration

Delete an account

DELETE /{account-id}

Response:

200

Reset an account’s history

Reset the account’s sync history; as if it were just on-boarded.

An AccountResetFilter allows to filer/select which endpoint(s) to reset

POST /{tenant-id}/{account-id}/{reset-history}

Body:

AccountResetFilter

Response:

200,

AccountResetResponse

Get all accounts’ health statuses

GET /status

Response:

200,

List<AccountStatus>

Get an account’s health status

GET /status/{account-id}

Response:

200,

AccountStatus

Activate an account

PUT /{account-id}/activate

Response:

200

Deactivate an account

PUT /{account-id}/deactivate

Response:

200

(Deprecated) Activate an account’s endpoint

A list of endpoint names for each account is in its AccountStatus response.

DEPRECATED since 2.1.25. Use Activate an account’s endpoint instead

PUT /{account-id}/{endpoint-name}/activate

Response:

200

(Deprecated) Deactivate an account’s endpoint

A list of endpoint names for each account is in its AccountStatus response.

DEPRECATED since 2.1.25. Use Deactivate an account’s endpoint instead

PUT /{account-id}/{endpoint-name}/deactivate

Response:

200

Activate an account’s endpoint

A list of endpoint names for each account is in its AccountStatus response.

PUT /{account-id}/endpoint/activate?endpoint={endpoint-name}

Response:

200

Deactivate an account’s endpoint

A list of endpoint names for each account is in its AccountStatus response.

PUT /{account-id}/endpoint/deactivate?endpoint={endpoint-name}

Response:

200

Test Account Connection

GET /{account-id}/test-connection

Response:

200, OK

404 - account with given ID not found

412 - incomplete data (missing application name, incomplete authN data)

500

{
    "status": int, an http-style status code, i.e. 200, 400,
    "success": boolean,
    "msg": string, 'N/A' | message returned from connector
}

Get Account Users

GET /{account-id}/users

Response:

200, OK

List<User>

Get Exposed Resources

Refer to required authentication fields to detailed list of what each application type requires for authentication

POST /{account-id}/exposed-resources?type=file|folder&exposure-level=public|public_authenticaded

Body: Empty on the first call, Next (JsonObject) on subsequent callse (retrieved from ExposedResourcesResult of the previous response.

Response:

200, OK

ExposedResourcesResult

Export Account

Available from 2.3.51, supported for inactive accounts only

POST /{tenant-id}/{account-id}/export

Body: Empty

Response:

200, OK

ExportedAccountPackage with account.authn-data set to null

Import Account

Available from 2.3.51, supported for inactive accounts only

POST /{tenant-id}/import

Body: ExportedAccountPackage with account.authn-data set

Response:

200, OK

String - the generated account ID

Get ConnectorsSyncSettings

Available from 2.3.106

GET /{tenant-id}/sync-settings

Response:

200, OK

ConnectorsSyncSettings

Set ConnectorsSyncSettings

Available from 2.3.106

PUT /{tenant-id}/sync-settings``Body: ConnectorsSyncSettings

Response:

204, No Content