Resource Explorer API
Key information
IAM role management
Role management for the Resource Explorer service follows KakaoCloud’s IAM Role-Based Access Control (RBAC). Project roles are verified using a user token, and API access is granted according to each role.
Project roles
Permission | Project Admin | Project Member | Project Reader |
---|---|---|---|
View resources | ✓ | ✓ | ✓ |
View tags | ✓ | ✓ | ✓ |
Create/delete tags | ✓ | ✓ | |
Assign tags | ✓ | ✓ |
KCRN
KCRN stands for KakaoCloud Resource Name, a unique identifier assigned to resources in KakaoCloud. Resources with KCRNs can be explored in various ways using Resource Explorer.
Format | Description |
---|---|
kcrn:region:project-id:service:resource-type:resource-id | Starts with kcrn: and includes region, project ID, service, resource type, and resource ID |
For the list of resource types supported by Resource Explorer, see Supported Resource Types.
Resource
There may be a delay in reflecting resource creation or deletion in the Resource Explorer.
The resource-related APIs are as follows.
Query resource
Resources can be queried using the KCRN format or via filters.
API method
Method | Request URL |
---|---|
POST | https://resource-explorer.kr-central-2.kakaocloud.com/api/v1/resources/search |
Request header
Header | Type | Required | Description |
---|---|---|---|
X-Auth-Token | string | Yes | Provide your authentication token. |
Content-Type | string | Yes | Always set to application/json |
Request body (KCRN Format)
Query resources using a KCRN pattern.
{
"filter": {
"filter_kcrn": "kcrn:*:91e6b4bf1ac441eaa99ba7802e64970c:Virtual Machine:Instance:*"
}
}
Request elements
Field Name | Type | Required | Description |
---|---|---|---|
filter | object | Optional | Object containing filter conditions for resource queries. You can specify filter_kcrn inside to query using the KCRN format. |
filter.filter_kcrn | string | Optional | Filters resources based on the KCRN format: kcrn:region:project-id:service:resource-type:resource-id . Wildcards (* ) can be used to specify a range.- The example in the Request Body represents a query for all Instance resources in the Virtual Machine service within a specific project. |
Request body (via filter)
You can query resources using various filter parameters.
{
"filter": {
"filter_string": "string"
},
"offset": 0, # optional
"limit": 10, # optional (max, default 500)
"sort": "string" # optional
}
Request elements
Field Name | Type | Required | Description |
---|---|---|---|
filter | object | Optional | Object containing filter conditions used to query resources. - You can retrieve all resources without specifying any filters. |
filter.filter_string | string | Optional | Parameter that specifies search filter conditions in string format when querying resources. Use this to filter by service or tagged resources. - Format: "key=value" - Example: service=Virtual Machine → Retrieves only resources under the Virtual Machine service- Refer to filter_string items for supported |
filter_string
These are the supported filter options when querying resources. Multiple conditions are combined using logical AND.
Key | Type | Search Support | Required | Description |
---|---|---|---|---|
resource_name | string | exact, not, contains, start with, end with, * | Optional | Filter by resource name. Examples: - exact : resource_name=myResource - not : -resource_name=myResource - contains : resource_name=*my* - start with : resource_name=my* - end with : resource_name=*my - * : resource_name=* → Retrieves all resources |
resource_id | string | exact, not, contains, start with, end with, * | Optional | Filter by resource ID. Examples: - exact : resource_id=63cbe932-3a14-4d39-a24e-ed2fa28cc410 - not : -resource_id=63cbe932-3a14-4d39-a24e-ed2fa28cc410 - contains : resource_id=*3a14* - start with : resource_id=3a14* - end with : resource_id=*3a14 - * : resource_id=* |
region | string | exact, not, * | Optional | Filter by region. Examples: - exact : region=kr-central-2 - not : -region=kr-central-2 - * : region=* |
service | string | exact, not, * | Optional | Filter by service. Examples: - exact : service=Virtual Machine - not : -service=Virtual Machine - * : service=* |
resource_type | string | exact, not, * | Optional | Filter by resource type. Examples: - exact : resource_type=Instance - not : -resource_type=Instance - * : resource_type=* |
tag.key | string | exact, not, * | Optional | Filter by tag key. Examples: - exact : tag.key=myKey - not : -tag.key=myKey - * : tag.key=* |
tag.value | string | exact, not, * | Optional | Filter by tag value. Examples: - exact : tag.value=myValue - not : -tag.value=myValue - * : tag.value=* |
Others | - | - | Optional | Filter by tag presence. Examples: - tag:all → Resources with tags- tag:none → Resources without tags |
sort
Item | Search Support & Examples |
---|---|
resource_name | - Ascending: +resource_name - Descending: -resource_name |
resource_id | - Ascending: +resource_id - Descending: -resource_id |
resource_type | - Ascending: +resource_type - Descending: -resource_type |
service | - Ascending: +service - Descending: -service |
Response body
{
"success": boolean,
"resources": [
{
"kcrn": "string",
"project_id": "string",
"region": "string",
"resource_type": "string",
"service": "string",
"resource_id": "string",
"resource_name": "string",
"user_name": "string",
"tags": [
{
"tag_id": "string",
"key": "string",
"value": "string",
"type": "string"
}
]
}
],
"count": integer,
"total_count": integer
}
Response elements
Field Name | Type | Description |
---|---|---|
success | boolean | Indicates whether the API request was successful. - true , false |
resources | list | A list of resource objects retrieved. Each item contains information about a resource. |
resources[].kcrn | string | The unique identifier for the resource (KakaoCloud Resource Name). |
resources[].project_id | string | The ID of the project to which the resource belongs. |
resources[].region | string | The region where the resource is located. |
resources[].resource_type | string | The type of resource. - Example: Instance , Volume , etc. |
resources[].service | string | The name of the service providing the resource. - Example: Virtual Machine |
resources[].resource_id | string | The unique ID of the resource. |
resources[].resource_name | string | The name of the resource set by the user or assigned by the service. |
resources[].user_name | string | The user account or service agent that created the resource. |
resources[].tags | list | A list of tags associated with the resource. |
resources[].tags[].tag_id | string | The unique ID of the tag. |
resources[].tags[].key | string | The key of the tag. |
resources[].tags[].value | string | The value of the tag. |
resources[].tags[].type | string | The type of the tag. - Custom tag: custom - System tag: system |
count | integer | The number of resources returned in this request. |
total_count | integer | The total number of resources that match the filter conditions. |
Status codes
Code | Response Content | Description |
---|---|---|
200 | OK | Success |
400 | Bad Request | Invalid request - Please refer to the error message and modify the request. |
403 | Forbidden | Authentication succeeded, but no permission for the requested resource or action. - Check if the request was made with an account or project that has proper permissions. |
500 | Internal Server Error | Internal server error - Please try again later. |
Search tag
It may take some time for newly created or deleted tags to be reflected in the Resource Explorer tag list.
The API for tag retrieval is as follows.
Only custom tags are assigned a tag_id
, while system tags do not have a tag_id
.
Query multiple tag
API method
Method | Request URL |
---|---|
POST | https://resource-explorer.kr-central-2.kakaocloud.com/api/v1/tags/search |
Request Header
Request Header | Type | Required | Description |
---|---|---|---|
X-Auth-Token | string | Required | Enter User Authentication Token |
Content-Type | string | Required | Always set to application/json |
Request body
{
"filter": {
"filter_string": "string"
},
"offset": integer, # optional
"limit": integer, # optional
"sort": "string" # optional
}
Request elements
Field Name | Type | Required | Description |
---|---|---|---|
filter | object | Optional | Contains the filter conditions for tag search. It includes filter_string and allows specifying various filter conditions.- You can search all tags without any filter. |
filter.filter_string | string | Optional | Specifies the filter conditions for tag search in a string format. - Example: tag.type=system&tag.value=Kubernetes Engine allows you to search based on specific tag information, and when multiple conditions are specified, they are treated as logical AND.- Refer to filter_string items for supported filter fields. |
offset | integer | Optional | The index of the data to retrieve from the search results. For example, if you set offset to 0 , it will start from the first result, and if set to 10 , it will return data starting from the 11th result.- Default: 0 |
limit | integer | Optional | Specifies the maximum number of resources to return in a single request. When there are many results, it can be used with offset to retrieve the resources in pages.- Default: 500 - Maximum: 500 - Example: limit: 10 → will return a maximum of 10 resources. |
sort | integer | Optional | A parameter used to sort the result list. - Format: +sort_key (ascending) or -sort_key (descending)- Example: +key → sort by tag key in ascending order.- Refer to sort items for supported sort fields. |
filter_string
The available filter fields for multiple tag searches. When multiple conditions are specified, they work as logical AND.
Key | Type | Search Support | Required | Description |
---|---|---|---|---|
tag.key | string | exact, not, * | Optional | Search by tag key. Example: - exact : tag.key=myKey - not : -tag.key=myKey - * : tag.key=* → search all tags |
tag.value | string | exact, not, * | Optional | Search by tag value. Example: - exact : tag.value=myValue - not : -tag.value=myValue - * : tag.value=* → search all tags |
tag.type | string | exact, not, * | Optional | Search by tag type. Tag types include system tags (system ) and custom tags (custom ).Example: - exact : tag.type=system - not : -tag.type=system - * : tag.type=* → search all tags |
Others | - | - | Optional | Search by tag usage. Example: - tag:in_use → tags connected to resources- tag:not_in_use → tags not connected to any resources |
sort
Field | Search Support and Example |
---|---|
tag.key | - Ascending: +tag.key - Descending: -tag.key |
tag.value | - Ascending: +tag.value - Descending: -tag.value |
tag.type | - Ascending: +tag.type - Descending: -tag.type |
tag.created_at | - Ascending: +tag.created_at - Descending: -tag.created_at |
Response body
{
"success": boolean,
"total_count": integer,
"count": integer,
"tags": [
{
"tag_id": "string",
"key": "string",
"value": "string",
"type": "string",
"created_at": "string",
"resource_count": integer
}
]
}
Response elements
Field Name | Type | Description |
---|---|---|
success | boolean | Indicates the success of the API request. - true , false |
total_count | integer | The total number of tags that match the conditions. |
count | integer | The number of tags included in the current response. Some may be returned if pagination (offset, limit) is applied. |
tags | list | A list of tag objects. |
tags[].tag_id | string | The unique ID of the tag. |
tags[].key | string | The key of the tag. |
tags[].value | string | The value of the tag. |
tags[].type | string | The type of the tag. - Custom tag: custom - System tag: system |
tags[].created_at | string | The time when the tag was created. - ISO 8601 format UTC timestamp - Example: 2025-03-17T05:46:52.537490588Z |
tags[].resource_count | integer | The number of resources connected to the tag. |
Status codes
Code | Response Message | Description |
---|---|---|
200 | OK | Success |
400 | Bad Request | Invalid request - Modify the request based on the error message |
403 | Forbidden | Authentication succeeded but insufficient permissions for the requested resource or action - Ensure the request is made with the correct account or project that has the appropriate permissions |
500 | Internal Server Error | Internal server error - Please retry after some time |
Query single tag
API method
Method | Request URL |
---|---|
GET | https://resource-explorer.kr-central-2.kakaocloud.com/api/v1/tags/search/{tag_id} |
Request header
Request Header | Type | Required | Description |
---|---|---|---|
X-Auth-Token | string | Required | Enter the user authentication token |
Request
curl --location --request GET 'https://resource-explorer.kr-central-2.kakaocloud.com/api/v1/tags/search/{tag_id}' \
--header 'X-Auth-Token: {x-auth-token}'
Request body
No request body.
Request elements
Field Name | Location | Required | Description |
---|---|---|---|
tag_id | path | Required | The unique ID of the tag you want to query. |
X-Auth-Token | header | Required | Enter the user authentication token. - If using this value, Credential-ID and Credential-Secret are omitted. |
Response Body
{
"success": boolean,
"tag": {
"tag_id": "string",
"key": "string",
"value": "string",
"type": "string",
"created_at": "string"
}
}
Response Elements
Field Name | Type | Description |
---|---|---|
success | boolean | Indicates the success of the API request. - true , false |
tag | object | An object containing the returned tag information. |
tag.tag_id | string | The unique ID of the tag. |
tag.key | string | The key of the tag. |
tag.value | string | The value of the tag. |
tag.type | string | The type of the tag. - Custom tag: custom - System tag: system |
tag.created_at | string | The timestamp when the tag was created. - ISO 8601 formatted UTC timestamp - Example: 2025-03-17T05:46:52.537490588Z |
Status codes
Code | Response Message | Description |
---|---|---|
200 | OK | Success |
400 | Bad Request | Invalid request - Check error messages and modify the request |
403 | Forbidden | Authentication succeeded, but no permission for the requested resource or action - Verify that the correct permissions are granted to the account or project |
404 | Not Found | The tag does not exist - Check tag_id information |
500 | Internal Server Error | Internal server error - Please try again later |
Manage tag
The APIs related to tag creation and deletion are as follows.
Create tag
Up to 100 tags can be created at once. Tag creation or deletion requests are processed asynchronously, and it may take some time to complete.
Additionally, if tag creation, deletion, or assigning tags to resources is in progress, the next request can only be processed once all previous tasks are completed.
API method
Method | Request URL |
---|---|
POST | https://resource-explorer.kr-central-2.kakaocloud.com/api/v1/tags |
Request header
Request Header | Type | Required | Description |
---|---|---|---|
X-Auth-Token | string | Required | Enter User Authentication Token |
Content-Type | string | Required | Always set to application/json |
Request body
{
"tags": [
{
"key": "string",
"value": "string"
}
]
}
Request Elements
Field Name | Type | Required | Description |
---|---|---|---|
tags | list | Required | A list of tag objects to be created. You can create up to 100 tags at once. |
tags[].key | string | Required | The key of the tag. |
tags[].value | string | Required | The value of the tag. |
Response body
{
"success": boolean,
"tags": [
{
"tag_id": "string"
"key": "string"
"value": "string"
}
]
}
Response elements
Field Name | Type | Description |
---|---|---|
success | boolean | Indicates whether the API request was successful. - true , false |
tags | list | List of the created tags. |
tags[].tag_id | string | The unique ID of the created tag. |
tags[].key | string | The key of the created tag. |
tags[].value | string | The value of the created tag. |
Status codes
Code | Response Status | Description |
---|---|---|
202 | Accepted | Success |
400 | Bad Request | Invalid request - Please refer to the error message to modify the request. |
403 | Forbidden | Authentication succeeded, but no permission for the requested resource or action. - Ensure you are using an account or project with the correct permissions. |
500 | Internal Server Error | Internal server error. - Please retry after a short period. |
Delete tag
Tags that are no longer in use can be deleted. You can delete up to 100 tags at once. Tag creation and deletion requests are processed asynchronously, and it may take some time to complete.
Furthermore, tag creation, deletion, or the assignment of tags to resources must be completed before any further requests can be processed.
API method
Method | Request URL |
---|---|
POST | https://resource-explorer.kr-central-2.kakaocloud.com/console/api/v1/tags/delete |
Request header
Request Header | Type | Required | Description |
---|---|---|---|
X-Auth-Token | string | Required | Enter the user authentication token |
Content-Type | string | Required | Always set to application/json |
Request body
{
"tag_ids": [
"string"
]
}
Request elements
Field Name | Type | Required | Description |
---|---|---|---|
tag_ids | list | Required | A list of tag IDs to be deleted. A maximum of 100 tags can be deleted at once. |
tag_ids[] | string | Required | The unique ID of each tag. IDs that do not exist will result in an error. |
Response body
{
"success": boolean
}
Response elements
Field Name | Type | Description |
---|---|---|
success | boolean | Indicates whether the API request was successful. - true , false |
Status codes
Code | Response Message | Description |
---|---|---|
202 | OK | Success |
400 | Bad Request | Invalid request - Refer to the error message and modify the request |
403 | Forbidden | Authentication succeeded, but the user lacks permission for the requested resource or action - Ensure the correct account or project with proper permissions is used |
500 | Internal Server Error | Internal server error - Please retry later |
Assign tag
Tag assignment allows you to attach the desired tags to specific resources. This operation is processed asynchronously and may take some time to complete.
Additionally, tag creation, deletion, or assignment to resources can only proceed after the current operations have completed.
Only custom tags are assigned a tag_id
, while system tags do not have a tag_id
.
API method
Method | Request URL |
---|---|
PATCH | https://resource-explorer.kr-central-2.kakaocloud.com/api/v1/resources/tags |
Request Header
Request Header | Type | Required | Description |
---|---|---|---|
X-Auth-Token | string | Required | User Authentication Token |
Content-Type | string | Required | Always set to application/json |
{
"kcrns": ["string"],
"connect_tag_ids": ["string"],
"disconnect_tag_ids": ["string"]
}
Request Elements
Field Name | Type | Required | Description |
---|---|---|---|
kcrns | list | Required | An array of KCRNs (KakaoCloud Resource Names) for the resources to assign tags to. - Tags can be assigned to multiple resources simultaneously. |
connect_tag_ids | list | Required | A list of tag IDs to be connected. - The specified tags will be linked to the resources. |
disconnect_tag_ids | list | Required | A list of tag IDs to be disconnected. - The specified tags will be removed from the resources. |
Response Body
{
"success": boolean
}
Response elements
Field Name | Type | Description |
---|---|---|
success | boolean | Indicates whether the API request was successful. - true , false |
Status codes
Code | Response Content | Description |
---|---|---|
202 | OK | Success |
400 | Bad Request | Invalid request - Modify the request according to the error message |
403 | Forbidden | Authentication succeeded, but no permission for the requested resource or action. - Ensure that the request was made with the correct account or project that has appropriate permissions |
500 | Internal Server Error | Internal server error - Please try again later |