{"type":"api","title":"Remove member from Enterprise Agent cluster","meta":{"id":"/apps/pubhub/media/000-v7-apis/5b3454a4300b838cc17f7b2cdc0690fdd15058d5/301f59de-3d0d-342e-94f3-1388b071308d","info":{"description":"\n## Overview\nManage all agents available to your account in ThousandEyes, including both Cloud and Enterprise Agents.","title":"Agents API","version":"7.0.34"},"security":[{"BearerAuth":[]}],"tags":[{"name":"Cloud and Enterprise Agents"},{"name":"Enterprise Agent Cluster"},{"name":"Cloud and Enterprise Agent Notification Rules"},{"name":"Agent Proxies"}],"externalDocs":{"description":"Find out more about Agents & Monitors","url":"https://docs.thousandeyes.com/product-documentation/global-vantage-points/working-with-agent-settings"},"openapi":"3.0.1","servers":[{"description":"ThousandEyes API production URL","url":"https://api.thousandeyes.com/v7"}],"securitySchemes":{"BearerAuth":{"description":"Bearer authentication token","scheme":"bearer","type":"http"}}},"spec":{"description":"Converts a cluster with a single or multiple Enterprise Agent members back to a standalone Enterprise Agent(s). This operation can also be used to remove one or more members from an Enterprise Agent cluster. Removed members revert to being standalone Enterprise Agents. If all members are removed from the cluster, the Enterprise Agent Cluster is deleted.\n\nThe response is an list of agents, containing both the Enterprise Agent Cluster (if it still exists), and the removed members, now as standalone Enterprise Agents. This operation is exclusive to Enterprise Agent clusters and can be accessed only by users with the `Edit agents in account group` permission.\n\nOn successful completion, the response contains the following information:\n\n* The updated cluster information is provided in the response body, unless all members are removed from the cluster.\n\n* Information about each removed member, now a standalone agent.\n\n* When a non-last member is removed from the cluster, it receives a new `agentId` value. This new `agentId` is different from the `agentId` the agent had before joining the cluster, and it is also unrelated to the `memberId` value the agent had while being a part of the cluster.\n\n* If all members are removed from the cluster, the cluster itself is converted back to a standalone Enterprise Agent too. Such standalone agent inherits the old cluster’s `agentId` value. The last `memberId` listed in the POST body inherits the cluster’s `agentId` value.\n\n**Example - removing a single member**\n```\ncurl -X POST https://api.thousandeyes.com/v7/agents/64965/cluster/unassign \\\n'{\"members\":[\"55974\"]}' \\\n-H \"content-type:application/json\" \\\n-H \"Authorization: Bearer $Bearer_token\" \n```\n\n**Example - removing multiple members**\n```\ncurl https://api.thousandeyes.com/v7/agents/64965/cluster/unassign \\\n'{\"members\":[\n \"55974\",\n \"12313\"]\n }' \\\n-H \"content-type:application/json\" \\\n-H \"Authorization: Bearer $Bearer_token\" \n```","operationId":"unassignAgentFromCluster","parameters":[{"description":"Unique ID for the Enterprise Agent cluster to remove agents from.","example":"281474976710706","explode":false,"in":"path","name":"agentId","required":true,"schema":{"type":"string"},"style":"simple"},{"description":"A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response.","in":"query","name":"aid","required":false,"schema":{"example":"1234","type":"string"}},{"description":"Optional parameter, off by default. Indicates which agent sub-resource to expand. For example, if you wish to expand the `clusterMembers` sub-resource, pass the `?expand=cluster-member` query.","explode":false,"in":"query","name":"expand","required":false,"schema":{"example":["cluster-member"],"items":{"enum":["cluster-member","test","notification-rule"],"type":"string","$$ref":"#/components/schemas/AgentDetailsExpand"},"type":"array"},"style":"form"}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"members":{"description":"Contains list of member IDs. (get `memberId` from `/agents/{agentId}` operation)","example":["281474976710706"],"items":{"description":"member ID","type":"string"},"type":"array"}},"type":"object","$$ref":"#/components/schemas/AgentClusterUnassignRequest"}}},"required":true},"responses":{"200":{"content":{"application/hal+json":{"schema":{"properties":{"agents":{"items":{"anyOf":[{"properties":{"agentType":{"description":"Type of the agent.","enum":["cloud","enterprise-cluster","enterprise"],"example":"enterprise-cluster","readOnly":true,"type":"string","$$ref":"#/components/schemas/CloudEnterpriseAgentType"},"ipAddresses":{"description":"Array of private IP addresses.","example":["99.139.65.220","9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce"],"items":{"type":"string"},"readOnly":true,"type":"array"},"publicIpAddresses":{"description":"Array of public IP addresses.","example":["192.168.1.78","f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c"],"items":{"type":"string"},"readOnly":true,"type":"array"},"network":{"description":"Network (including ASN) of agent’s public IP.","example":"AT&T Services, Inc. (AS 7018)","readOnly":true,"type":"string"},"agentId":{"description":"Unique ID of the agent.","example":"281474976710706","readOnly":true,"type":"string"},"agentName":{"description":"Name of the agent.","example":"thousandeyes-stg-va-254","type":"string"},"location":{"description":"Location of the agent.","example":"San Francisco Bay Area","readOnly":true,"type":"string"},"countryId":{"description":"2-digit ISO country code","example":"US","readOnly":true,"type":"string"},"enabled":{"description":"Flag indicating if the agent is enabled.","example":true,"type":"boolean"},"prefix":{"description":"Prefix containing agents public IP address.","example":"99.128.0.0/11","readOnly":true,"type":"string"},"verifySslCertificates":{"description":"Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.","example":true,"readOnly":true,"type":"boolean"}},"required":["agentType"],"type":"object","$$ref":"#/components/schemas/AgentResponse"},{"properties":{"agentType":{"description":"Type of the agent.","enum":["cloud","enterprise-cluster","enterprise"],"example":"enterprise-cluster","readOnly":true,"type":"string","$$ref":"#/components/schemas/CloudEnterpriseAgentType"},"ipAddresses":{"description":"Array of private IP addresses.","example":["99.139.65.220","9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce"],"items":{"type":"string"},"readOnly":true,"type":"array"},"publicIpAddresses":{"description":"Array of public IP addresses.","example":["192.168.1.78","f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c"],"items":{"type":"string"},"readOnly":true,"type":"array"},"network":{"description":"Network (including ASN) of agent’s public IP.","example":"AT&T Services, Inc. (AS 7018)","readOnly":true,"type":"string"},"agentId":{"description":"Unique ID of the agent.","example":"281474976710706","readOnly":true,"type":"string"},"agentName":{"description":"Name of the agent.","example":"thousandeyes-stg-va-254","type":"string"},"location":{"description":"Location of the agent.","example":"San Francisco Bay Area","readOnly":true,"type":"string"},"countryId":{"description":"2-digit ISO country code","example":"US","readOnly":true,"type":"string"},"enabled":{"description":"Flag indicating if the agent is enabled.","example":true,"type":"boolean"},"prefix":{"description":"Prefix containing agents public IP address.","example":"99.128.0.0/11","readOnly":true,"type":"string"},"verifySslCertificates":{"description":"Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.","example":true,"readOnly":true,"type":"boolean"},"clusterMembers":{"description":"If an enterprise agent is clustered, detailed information about each cluster member will be shown as array entries in the clusterMembers field. This field is not shown for Enterprise Agents in standalone mode, or for Cloud Agents.","items":{"properties":{"ipAddresses":{"description":"Array of private IP addresses.","example":["99.139.65.220","9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce"],"items":{"type":"string"},"readOnly":true,"type":"array"},"publicIpAddresses":{"description":"Array of public IP addresses.","example":["192.168.1.78","f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c"],"items":{"type":"string"},"readOnly":true,"type":"array"},"network":{"description":"Network (including ASN) of agent’s public IP.","example":"AT&T Services, Inc. (AS 7018)","readOnly":true,"type":"string"},"memberId":{"description":"Unique ID of the cluster member","example":"10","readOnly":true,"type":"string"},"name":{"description":"Name of the cluster member","example":"Cluster member name","readOnly":true,"type":"string"},"errorDetails":{"description":"If an enterprise agent or a cluster member presents at least one error, the errors will be shown as an array of entries in the errorDetails field (Enterprise Agents and Enterprise Cluster members only)","items":{"properties":{"code":{"description":"Code for the agent error.","enum":["agent-version-outdated","browserbot-version-outdated","appliance-version-outdated","clock-offset","os-end-of-installation-support","os-end-of-support","os-end-of-life","nat-traversal-error"],"example":"agent-version-outdated","readOnly":true,"type":"string","$$ref":"#/components/schemas/ErrorDetailCode"},"description":{"description":"Description for the agent error.","example":"Agent Version 0.1.1 (latest: 1.0.0)","readOnly":true,"type":"string"}},"type":"object","$$ref":"#/components/schemas/ErrorDetail"},"readOnly":true,"type":"array"},"lastSeen":{"description":"UTC last seen date (ISO date-time format).","example":"2022-07-17T22:00:54Z","format":"date-time","readOnly":true,"type":"string"},"agentState":{"description":"State of the agent.","enum":["online","offline","disabled"],"example":"online","readOnly":true,"type":"string","$$ref":"#/components/schemas/EnterpriseAgentState"},"targetForTests":{"description":"Test target IP address.","example":"1.1.1.1","format":"ipv4","type":"string"},"utilization":{"description":"Shows overall utilization percentage (online Enterprise Agents and Enterprise Clusters only).","example":25,"readOnly":true,"type":"integer"}},"type":"object","$$ref":"#/components/schemas/ClusterMember"},"readOnly":true,"type":"array"},"utilization":{"description":"Shows overall utilization percentage (online Enterprise Agents and Enterprise Clusters only).","example":25,"readOnly":true,"type":"integer"},"accountGroups":{"description":"List of account groups. See /accounts-groups to pull a list of account IDs","items":{"properties":{"aid":{"description":"A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint.","example":"1234","type":"string"},"accountGroupName":{"description":"Account group name","example":"Account A","type":"string"}},"type":"object","$$ref":"#/components/schemas/AccountGroup"},"type":"array"},"ipv6Policy":{"description":"IP version policy, (Enterprise Agents and Enterprise Clusters only)","enum":["force-ipv4","prefer-ipv6","force-ipv6"],"example":"force-ipv4","type":"string","$$ref":"#/components/schemas/EnterpriseAgentIpv6Policy"},"errorDetails":{"description":"If an enterprise agent or a cluster member presents at least one error, the errors will be shown as an array of entries in the errorDetails field (Enterprise Agents and Enterprise Cluster members only)","items":{"properties":{"code":{"description":"Code for the agent error.","enum":["agent-version-outdated","browserbot-version-outdated","appliance-version-outdated","clock-offset","os-end-of-installation-support","os-end-of-support","os-end-of-life","nat-traversal-error"],"example":"agent-version-outdated","readOnly":true,"type":"string","$$ref":"#/components/schemas/ErrorDetailCode"},"description":{"description":"Description for the agent error.","example":"Agent Version 0.1.1 (latest: 1.0.0)","readOnly":true,"type":"string"}},"type":"object","$$ref":"#/components/schemas/ErrorDetail"},"readOnly":true,"type":"array"},"hostname":{"description":"Fully qualified domain name of the agent (Enterprise Agents only)","example":"thousandeyes.com","readOnly":true,"type":"string"},"lastSeen":{"description":"UTC last seen date (ISO date-time format).","example":"2022-07-17T22:00:54Z","format":"date-time","readOnly":true,"type":"string"},"agentState":{"description":"State of the agent.","enum":["online","offline","disabled"],"example":"online","readOnly":true,"type":"string","$$ref":"#/components/schemas/EnterpriseAgentState"},"keepBrowserCache":{"description":"Flag indicating if the agent retains cache.","example":true,"type":"boolean"},"createdDate":{"description":"UTC Agent creation date (ISO date-time format).","example":"2022-07-17T22:00:54Z","format":"date-time","readOnly":true,"type":"string"},"targetForTests":{"description":"Test target IP address.","example":"1.1.1.1","format":"ipv4","type":"string"},"localResolutionPrefixes":{"description":"To perform rDNS lookups for public IP ranges, this field represents the public IP ranges. The range must be in CIDR notation; for example, 10.1.1.0/24. Maximum of 5 prefixes allowed (Enterprise Agents and Enterprise Agent clusters only).","items":{"example":"10.2.3.3/24","type":"string"},"type":"array"},"interfaceIpMappings":{"items":{"properties":{"interfaceName":{"description":"Name of the mapping","example":"wlp4s0","readOnly":true,"type":"string"},"ipAddresses":{"description":"Array of ipAddress entries","example":["73.252.207.219","2601:646:300:3ae0::b977"],"items":{"type":"string"},"readOnly":true,"type":"array"}},"type":"object","$$ref":"#/components/schemas/InterfaceIpMapping"},"readOnly":true,"type":"array"}},"required":["agentType"],"type":"object","$$ref":"#/components/schemas/EnterpriseAgent"}],"$$ref":"#/components/schemas/CloudEnterpriseAgent"},"type":"array"},"_links":{"description":"A links object containing the self link.","properties":{"self":{"description":"A hyperlink from the containing resource to a URI.","properties":{"href":{"description":"Its value is either a URI [RFC3986] or a URI template [RFC6570].","example":"https://api.thousandeyes.com/v7/link/to/resource/id","type":"string"},"templated":{"description":"Should be true when the link object's \"href\" property is a URI template.","type":"boolean"},"type":{"description":"Used as a hint to indicate the media type expected when dereferencing the target resource.","type":"string"},"deprecation":{"description":"Its presence indicates that the link is to be deprecated at a future date. Its value is a URL that should provide further information about the deprecation.","type":"string"},"name":{"description":"Its value may be used as a secondary key for selecting link objects that share the same relation type.","type":"string"},"profile":{"description":"A URI that hints about the profile of the target resource.","type":"string"},"title":{"description":"Intended for labelling the link with a human-readable identifier","type":"string"},"hreflang":{"description":"Indicates the language of the target resource","type":"string"}},"required":["href"],"type":"object","$$ref":"#/components/schemas/Link"}},"readOnly":true,"type":"object","$$ref":"#/components/schemas/SelfLinks"}},"type":"object","$$ref":"#/components/schemas/CloudEnterpriseAgents"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"example":{"type":"about:blank","title":"Request validation failed. There are invalid or missing fields","status":400,"detail":"Your request object contains invalid fields.","instance":"/v7","errors":[{"code":"AM-5432","field":"firstName","message":"firstName cannot have fancy characters"},{"code":"DASH-5622","field":"password","message":"Password cannot be blank"}]},"schema":{"properties":{"type":{"description":"A URI reference that identifies the problem type. When this member is not present, its value is assumed to be \"about:blank\".","type":"string"},"title":{"description":"A short, human-readable summary of the problem type.","type":"string"},"status":{"description":"The HTTP status code generated by the origin server for this occurrence of the problem.","type":"integer"},"detail":{"description":"A human-readable explanation specific to this occurrence of the problem.","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence of the problem.","type":"string"},"errors":{"description":"(Optional) When multiple errors occur, the details for each error are listed.","items":{"properties":{"code":{"description":"(Optional) A unique error type/code that can be referenced in the documentation for further details.","type":"string"},"field":{"description":"Identifies the field that triggered this particular error.","type":"string"},"message":{"description":"A short, human-readable summary of the error.","type":"string"}},"type":"object","$$ref":"#/components/schemas/ValidationErrorItem"},"nullable":true,"type":"array"}},"type":"object","$$ref":"#/components/schemas/ValidationError"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"properties":{"error":{"example":"invalid_token","type":"string"},"error_description":{"example":"Invalid access token","type":"string"}},"type":"object","$$ref":"#/components/schemas/UnauthorizedError"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"properties":{"type":{"description":"A URI reference that identifies the problem type. When this member is not present, its value is assumed to be \"about:blank\".","type":"string"},"title":{"description":"A short, human-readable summary of the problem type.","type":"string"},"status":{"description":"The HTTP status code generated by the origin server for this occurrence of the problem.","type":"integer"},"detail":{"description":"A human-readable explanation specific to this occurrence of the problem.","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence of the problem.","type":"string"}},"type":"object","$$ref":"#/components/schemas/Error"}}},"description":"Insufficient permissions to query endpoint"},"404":{"content":{"application/problem+json":{"example":{"type":"about:blank","title":"URI Resource Not Found","status":404,"detail":"Details explaining if the 404 error is related to an invalid URI or a wrong ID","instance":"/v7"},"schema":{"properties":{"type":{"description":"A URI reference that identifies the problem type. When this member is not present, its value is assumed to be \"about:blank\".","type":"string"},"title":{"description":"A short, human-readable summary of the problem type.","type":"string"},"status":{"description":"The HTTP status code generated by the origin server for this occurrence of the problem.","type":"integer"},"detail":{"description":"A human-readable explanation specific to this occurrence of the problem.","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence of the problem.","type":"string"}},"type":"object","$$ref":"#/components/schemas/Error"}}},"description":"Not found"},"429":{"content":{"application/problem+json":{"schema":{"properties":{"type":{"description":"A URI reference that identifies the problem type. When this member is not present, its value is assumed to be \"about:blank\".","type":"string"},"title":{"description":"A short, human-readable summary of the problem type.","type":"string"},"status":{"description":"The HTTP status code generated by the origin server for this occurrence of the problem.","type":"integer"},"detail":{"description":"A human-readable explanation specific to this occurrence of the problem.","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence of the problem.","type":"string"}},"type":"object","$$ref":"#/components/schemas/Error"}}},"description":"Exhausted rate limit for the organization"},"500":{"content":{"application/problem+json":{"example":{"type":"about:blank","title":"Internal server error","status":500,"detail":"Optional detail about the internal error message.","instance":"/v7"},"schema":{"properties":{"type":{"description":"A URI reference that identifies the problem type. When this member is not present, its value is assumed to be \"about:blank\".","type":"string"},"title":{"description":"A short, human-readable summary of the problem type.","type":"string"},"status":{"description":"The HTTP status code generated by the origin server for this occurrence of the problem.","type":"integer"},"detail":{"description":"A human-readable explanation specific to this occurrence of the problem.","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence of the problem.","type":"string"}},"type":"object","$$ref":"#/components/schemas/Error"}}},"description":"Internal server error"},"502":{"content":{"application/problem+json":{"schema":{"properties":{"type":{"description":"A URI reference that identifies the problem type. When this member is not present, its value is assumed to be \"about:blank\".","type":"string"},"title":{"description":"A short, human-readable summary of the problem type.","type":"string"},"status":{"description":"The HTTP status code generated by the origin server for this occurrence of the problem.","type":"integer"},"detail":{"description":"A human-readable explanation specific to this occurrence of the problem.","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence of the problem.","type":"string"}},"type":"object","$$ref":"#/components/schemas/Error"}}},"description":"Bad Gateway"},"default":{"description":"An error occurred"}},"summary":"Remove member from Enterprise Agent cluster","tags":["Enterprise Agent Cluster"],"__originalOperationId":"unassignAgentFromCluster","security":[{"BearerAuth":[]}],"method":"post","path":"/agents/{agentId}/cluster/unassign"}}