الخزنات والأسرار
كل الطلبات أدناه تستخدم Authorization: Bearer <access_token> — راجع المصادقة. نقاط نهاية السرد تقبل ?limit= و?cursor= — راجع شكل الاستجابة والتقسيم إلى صفحات.
حقول الخزنة
{
"id": "429110bc-...",
"org_id": "7a1c2e3f-...",
"name": "My API",
"icon_index": 4,
"color": "#4F46E5",
"team_id": null,
"role": "admin",
"created_at": "2026-01-15T10:20:30.000Z"
}
role هو دور المفتاح أو المستخدم المستدعي على هذه الخزنة: admin أو editor أو member.
GET /v1/vaults
كل خزنة يراها المستدعي، الأحدث أولًا.
curl -s https://api.oneguard.one/v1/vaults \
-H "Authorization: Bearer $TOKEN"POST /v1/vaults
curl -s https://api.oneguard.one/v1/vaults \
-X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Marketing site"}'يعيد 201 مع الخزنة المُنشأة وترويسة Location.
GET /v1/vaults/{vaultId}
curl -s https://api.oneguard.one/v1/vaults/{vaultId} \
-H "Authorization: Bearer $TOKEN"PATCH /v1/vaults/{vaultId}
تحديث جزئي — أي من name أو team_id أو icon_index أو color. الحقول غير المرسَلة تبقى على قيمتها الحالية. أرسل "team_id": null لإزالة خزنة من فريقها.
curl -s https://api.oneguard.one/v1/vaults/{vaultId} \
-X PATCH \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"New name"}'DELETE /v1/vaults/{vaultId}
204 No Content عند النجاح.
curl -s https://api.oneguard.one/v1/vaults/{vaultId} \
-X DELETE \
-H "Authorization: Bearer $TOKEN"أعضاء الخزنة
{
"id": "9e2a...",
"vault_id": "429110bc-...",
"user": { "id": "3f1a...", "name": "Sam", "email": "sam@example.com" },
"role": "editor",
"created_at": "2026-02-01T09:00:00.000Z"
}
GET /v1/vaults/{vaultId}/members — قائمة مقسَّمة إلى صفحات.
curl -s https://api.oneguard.one/v1/vaults/{vaultId}/members \
-H "Authorization: Bearer $TOKEN"POST /v1/vaults/{vaultId}/members يضيف عضوًا.
curl -s https://api.oneguard.one/v1/vaults/{vaultId}/members \
-X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"user_id":"3f1a...","role":"editor"}'PATCH /v1/vaults/{vaultId}/members/{memberId} يغيّر دور العضو، ويعيد فقط {"id", "vault_id", "role"} — لا كائن العضو الكامل.
curl -s https://api.oneguard.one/v1/vaults/{vaultId}/members/{memberId} \
-X PATCH \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"role":"admin"}'DELETE /v1/vaults/{vaultId}/members/{memberId} يزيل عضوًا — 204 No Content.
curl -s https://api.oneguard.one/v1/vaults/{vaultId}/members/{memberId} \
-X DELETE \
-H "Authorization: Bearer $TOKEN"حقول السر
{
"id": "3cb0cce2-...",
"vault_id": "429110bc-...",
"name": "production",
"type": "env",
"expired_at": null,
"delete_after_expired": false,
"is_archived": false,
"created_at": "2026-02-01T09:00:00.000Z"
}
GET /v1/vaults/{vaultId}/secrets
قائمة بيانات وصفية مقسَّمة إلى صفحات — بلا قيم.
curl -s https://api.oneguard.one/v1/vaults/{vaultId}/secrets \
-H "Authorization: Bearer $TOKEN"POST /v1/vaults/{vaultId}/secrets
curl -s https://api.oneguard.one/v1/vaults/{vaultId}/secrets \
-X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "production",
"value": {
"DB_PASSWORD": "supersecret",
"API_KEY": "sk_live_..."
}
}'يعيد 201 مع الشكل الوصفي أعلاه (لا القيمة التي أرسلتها للتو) وترويسة Location.
PATCH /v1/secrets/{secretId}
جزئي: أرسل name و/أو value. القيمة value التي ترسلها تستبدل القيمة المخزَّنة بالكامل — لا تُدمج مفتاحًا بمفتاح.
curl -s https://api.oneguard.one/v1/secrets/{secretId} \
-X PATCH \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"value":{"DB_PASSWORD":"new-password"}}'DELETE /v1/secrets/{secretId}
يؤرشف السر (حذف ناعم — يتوقف عن الظهور في القوائم). 204 No Content.
curl -s https://api.oneguard.one/v1/secrets/{secretId} \
-X DELETE \
-H "Authorization: Bearer $TOKEN"GET /v1/secrets/{secretId}/value
الشكل الوصفي بالإضافة إلى كائن value مفكوك التشفير. راجع البدء السريع لمثال كامل.
curl -s https://api.oneguard.one/v1/secrets/{secretId}/value \
-H "Authorization: Bearer $TOKEN"GET /v1/vaults/{vaultId}/secrets/values
كل أسرار الخزنة الحية، كل واحد بقيمته مفكوكة التشفير، في استدعاء واحد بلا مؤشر:
curl -s https://api.oneguard.one/v1/vaults/{vaultId}/secrets/values \
-H "Authorization: Bearer $TOKEN"{
"statusCode": 200,
"errorCode": null,
"message": null,
"data": [
{ "id": "...", "name": "production", "...": "...", "value": { "DB_PASSWORD": "..." } },
{ "id": "...", "name": "staging", "...": "...", "value": { "DB_PASSWORD": "..." } }
]
}
لا next_cursor في هذه الحالة — راجع ملاحظة التقسيم إلى صفحات لمعرفة السبب.