API v2: Collection Management 🆕¶
Overview¶
Collections are organizational containers for secrets in Fudo Enterprise’s vault system. They provide hierarchical structure, permission management, and access control for secret storage. Collections support both organizational vaults and personal vaults, with comprehensive permission inheritance and granular access policies.
Data Structures¶
Attribute |
Type |
Required |
Description |
|---|---|---|---|
|
string |
Read-only. Unique secret collection identifier. |
|
|
string |
yes |
Collection name. Uniqueness is required in the combination with |
|
string |
Parent collection identifier for hierarchical structure. Uniqueness is required in the combination with |
|
|
string |
Read-only. Hidden. Protected. User ID of the personal vault owner. |
|
|
boolean |
Inherit permissions from parent collection. |
|
|
string |
Read-only. ID of the collection that permissions are inherited from. |
|
|
number |
Read-only. Number of direct child collections. |
|
|
number |
Read-only. Number of descendant secrets. |
|
|
string-array |
Read-only. Hidden. Ordered list of ancestor collection IDs. |
|
|
string-array |
Read-only. Hidden. Ordered list of ancestor collection names. |
|
|
string |
Read-only. Hidden. Accessible parent collection ID. |
|
|
string |
Read-only. Hidden. Vault type (organization, personal). |
|
|
boolean |
Read-only. Indicates whether the collection contains secrets with exposure alerts. |
|
|
string-array |
Read-only. List of rights the subject has to this object. |
|
|
datetime |
Read-only. Timestamp of creation. |
|
|
datetime |
Read-only. Timestamp of modification. |
|
|
boolean |
Read-only. |
Retrieve Available Attributes of the CollectionModel¶
Request
Method |
|
Path |
|
To check allowed methods, available URL parameters and possible responses please refer to the API Overview section.
Note
Collections support hierarchical organization with parent-child relationships. Permission inheritance allows collections to automatically inherit access policies from parent collections.
List Collections¶
Request
Method |
|
Path |
|
GET /api/v2/collection
Example Request
curl -s -k -X GET \
-H 'Authorization: <token>' \
'https://10.31.135.179/api/v2/collection'
Response
{
"result": "success",
"collection": [
{
"id": "8754997675608244225",
"name": "Development Team",
"inherit_permissions": false,
"inheritance_target_collection_id": "8754997675608244225",
"subcollections_count": 2,
"secrets_count": 2,
"contains_exposed_secrets": true,
"rights": [
"create",
"delete",
"modify",
"move",
"read"
],
"created_at": "2026-03-25 01:46:50.823004-07",
"modified_at": "2026-04-03 06:36:25.545952-07"
}
]
}
Get Collection by ID¶
Request
Method |
|
Path |
|
GET /api/v2/collection/<id>
Example Request
curl -s -k -X GET \
-H 'Authorization: <token>' \
'https://10.31.135.179/api/v2/collection/8754997675608244225'
Response
{
"result": "success",
"collection": {
"id": "8754997675608244225",
"name": "Development Team",
"inherit_permissions": false,
"inheritance_target_collection_id": "8754997675608244225",
"subcollections_count": 2,
"secrets_count": 2,
"contains_exposed_secrets": true,
"rights": [
"create",
"delete",
"modify",
"move",
"read"
],
"created_at": "2026-03-25 01:46:50.823004-07",
"modified_at": "2026-04-03 06:36:25.545952-07"
}
}
Create Collection¶
Request
Method |
|
Path |
|
Body |
|
POST /api/v2/collection
Example Request
curl -s -k -X POST \
-H 'Authorization: <token>' \
-H 'Content-Type: application/json' \
-d '{
"name": "Database Credentials",
"parent_id": "8754997675608244225",
"inherit_permissions": true
}' \
'https://10.31.135.179/api/v2/collection'
Response
{
"result": "success",
"collection": [
{
"id": "8754997675608244228",
"name": "Database Credentials",
"parent_id": "8754997675608244225",
"inherit_permissions": true,
"inheritance_target_collection_id": "8754997675608244225",
"subcollections_count": 0,
"secrets_count": 0
}
]
}
Update Collection¶
Request
Method |
|
Path |
|
Body |
|
PATCH /api/v2/collection/<id>
Example Request
curl -s -k -X PATCH \
-H 'Authorization: <token>' \
-H 'Content-Type: application/json' \
-d '{
"name": "Database Credentials",
"inherit_permissions": false
}' \
'https://10.31.135.179/api/v2/collection/8754997675608244228'
Response
{
"result": "success",
"collection": [
{
"id": "8754997675608244228",
"name": "Database Credentials",
"parent_id": "8754997675608244225",
"inherit_permissions": false,
"inheritance_target_collection_id": "8754997675608244228",
"modified_at": "2026-04-17T14:45:00Z"
}
]
}
Delete Collection¶
Request
Method |
|
Path |
|
DELETE /api/v2/collection/<id>
Example Request
curl -s -k -X DELETE \
-H 'Authorization: <token>' \
'https://10.31.135.179/api/v2/collection/8754997675608244228'
Response
{
"result": "success"
}
Import Secrets to Collection¶
This endpoint imports secrets from a CSV file into a collection. The CSV file must be constructed according to the following rules:
The first row is a header row containing names corresponding to the API fields names (refer to API Documentation: API v2: Secrets).
The header row must include all fields that are required when manually creating a secret of specific type. Other fields are optional and can be left empty.
A comma (,) has to be used as a field separator.
Example CSV file:
name,type,login,domain,secret,uri
login,login,admin,portal.example.com,SuperSecure123!,https://portal.example.com/login
login2,login,db_admin,db.example.com,DbPassword2024,https://db.example.com/admin
note,note,,,Quarterly meeting notes: Q4 targets discussed.,
api_key,apikey,aws_service_account,api.aws.amazon.com,AKIAIOSFODNN7EXAMPLE,https://api.aws.amazon.com
cert,certificate,,,,
ssh_key,sshkey,,,,
Note
SSH private keys and certificates are typically stored in multi-line PEM format. When importing them from a CSV file, enclose the entire value in double quotes ("") so it is treated as a single CSV field.
Example CSV for a certificate secret:
name,type,login,domain,certificate,secret
"secret-1","certificate","","","-----BEGIN CERTIFICATE-----
MIID...EXAMPLE...DATA
-----END CERTIFICATE-----","-----BEGIN PRIVATE KEY-----
MIIE...EXAMPLE...DATA
-----END PRIVATE KEY-----"
Request
Method |
|
Path |
|
Headers |
|
Body |
|
POST /api/v2/collection/<id>/secret_import
Example Request
curl -s -k -X POST \
-H 'Authorization: <token>' \
-F 'file=@secrets.csv' \
'https://10.31.135.179/api/v2/collection/8754997675608244225/secret_import'
Note
The CSV file should contain a header row with columns such as name, type, login, password, url, notes, etc.
Response
{
"result": "success",
"imported_count": 2,
"failed_count": 0,
"details": [
{
"name": "Database Admin",
"status": "imported",
"secret_id": "3260606130216239118"
},
{
"name": "API Key",
"status": "imported",
"secret_id": "3260606130216239119"
}
]
}