Dosyalar API
Dosyalar modülünün tüm işlemleri (14) ve veri modelleri (3): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Yüklediğiniz, oluşturduğunuz veya size gelen her dosya; klasörlerde, önizlemeli.
Modül kodu files · 14 işlem · 3 veri modeli · 16 olay. Bir anahtar ya da token, arkasındaki kişinin bu modülde yapabildiğinden fazlasını asla yapamaz; satır düzeyindeki güvenlik uygulamadakiyle birebir aynıdır. Yetki kapsamları: files (hepsi), files:read (yalnız okuma) ya da files:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
file_links | file_link | /api/v1/file_links | |||
file_upload_links | file_upload_link | /api/v1/file_upload_links | |||
files | file | /api/v1/files | files.update |
Listeler limit (en çok 200), cursor, order (ör. -created_at), fields ve q alır; diğer her sorgu parametresi bir sütun süzgecidir: ?status=paid, ?total[gte]=100, ?id[in]=a,b, ?x=null.
İşlemler
| İşlem | Gereken izin | Ne yapar |
|---|---|---|
files.attach | files:read | Kayda dosya ekle |
files.create_folder | files:write | Klasör oluştur |
files.create_link | files:manage | Yükleme bağlantısı oluştur |
files.detach | files:read | Dosyayı kayıttan kaldır |
files.publish | files:manage | Dosyayı yayımla |
files.remove | files:delete | Dosya veya klasörü sil |
files.renew_link | files:manage | Yükleme bağlantısını uzat |
files.replace | files:write | Yeni içeriği kaydet |
files.revoke_link | files:manage | Yükleme bağlantısını kapat |
files.sign_url | files:read | İndirme bağlantısı al |
files.sweep | files:manage | Dosyaları temizle |
files.unpublish | files:manage | Dosyayı gizli yap |
files.update | files:write | Dosya bilgilerini düzenle |
files.upload | files:write | Yüklenen dosyayı kaydet |
files.attach
Kayda dosya ekle — Dosyalar’daki bir dosyayı kaydın Dosyalar sekmesine koyar. O kaydı düzenleme yetkisi gerekir.
Gereken izin files:read · veriyi değiştirir
https://app.getera.io/api/v1/file_links/actions/attach- Asıl adres:
POST /api/v1/actions/files.attach
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
fileId | uuid | evet | Dosya · kimliği: file |
recordType | string | evet | Kayıt türü · en çok 60 |
recordId | uuid | evet | Kayıt |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
unknown_record_type | Kayıt türü bir modülün sahip olduğu türlerden olmalı. |
cannot_write_record | Eklemek, o kaydın modülünde yazma yetkisi gerektirir. |
file_not_found | Dosya bulunmalı ve klasör olmamalı. |
record_not_found | Kayıt bulunmalı. |
Yayımladığı olaylar: files.attached
Neye yazar: file_link (insert) — Links the file to the record
curl -X POST https://app.getera.io/api/v1/file_links/actions/attach \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"fileId":"FILE_ID","recordType":"Record type","recordId":"RECORD_ID"}'{
"ok": true,
"result": "…",
"events": [
"files.attached"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.fileLinks.attach({
fileId: "FILE_ID",
recordType: "Record type",
recordId: "RECORD_ID"
})era file_links attach \
--file-id "FILE_ID" \
--record-type "Record type" \
--record-id "RECORD_ID"{
"name": "era__files__attach",
"arguments": {
"fileId": "FILE_ID",
"recordType": "Record type",
"recordId": "RECORD_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde files:read izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 unknown_record_type, cannot_write_record, file_not_found, record_not_found · 429 çok sık istek
files.create_folder
Klasör oluştur — Var olan bir yolun altına klasör ekler; orada zaten kullanılan bir adı reddeder.
Gereken izin files:write · veriyi değiştirir
https://app.getera.io/api/v1/files/actions/create_folder- Asıl adres:
POST /api/v1/actions/files.create_folder
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
parentPath | string | İçeride · en çok 500 | |
name | string | evet | Ad · en çok 255 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
name_required | Klasörün bir adı olmalı. |
name_has_separator | Klasör adı eğik çizgi içeremez. |
folder_exists | Aynı yerde bu adı taşıyan başka bir klasör olamaz. |
Yayımladığı olaylar: files.folder_created
Neye yazar: file (insert) — Adds the folder row
curl -X POST https://app.getera.io/api/v1/files/actions/create_folder \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"files.folder_created"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.files.createFolder({
name: "Name"
})era files create_folder \
--name "Name"{
"name": "era__files__create_folder",
"arguments": {
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde files:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 name_required, name_has_separator, folder_exists · 429 çok sık istek
files.create_link
Yükleme bağlantısı oluştur — Çalışma alanı dışından birinin tek bir klasöre yükleme yapabilmesi için anahtarlı bir bağlantı açar.
Gereken izin files:manage · veriyi değiştirir
https://app.getera.io/api/v1/file_upload_links/actions/create_link- Asıl adres:
POST /api/v1/actions/files.create_link
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
label | string | Etiket · en çok 255 | |
description | string | Açıklama · en çok 2000 | |
targetFolder | string | Yüklemelerin düştüğü yer · en çok 500 | |
maxFiles | number | En fazla dosya | |
maxFileSizeMb | number | En büyük boyut (MB) | |
allowedFileTypes | string | Kabul edilen türler · Virgülle ayrılmış uzantılar ya da MIME önekleri. Boş bırakılırsa her şey kabul edilir. · en çok 500 | |
expiresAt | date-time | Sona erme |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_limits | Bağlantı en az bir megabaytlık en az bir dosya kabul etmeli. |
expiry_in_past | Son tarih gelecekte olmalı. |
Yayımladığı olaylar: files.link_created
Neye yazar: file_upload_link (insert) — Creates the link and its token
curl -X POST https://app.getera.io/api/v1/file_upload_links/actions/create_link \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"label":"Label"}'{
"ok": true,
"result": "…",
"events": [
"files.link_created"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.fileUploadLinks.createLink({
label: "Label"
})era file_upload_links create_link \
--label "Label"{
"name": "era__files__create_link",
"arguments": {
"label": "Label"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde files:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_limits, expiry_in_past · 429 çok sık istek
files.detach
Dosyayı kayıttan kaldır — Dosyayı silmeden kayıttan çıkarır.
Gereken izin files:read · siler ya da geri alınamaz
https://app.getera.io/api/v1/file_links/actions/detach- Asıl adres:
POST /api/v1/actions/files.detach
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
fileId | uuid | evet | Dosya · kimliği: file |
recordType | string | evet | Kayıt türü · en çok 60 |
recordId | uuid | evet | Kayıt |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
unknown_record_type | Kayıt türü bir modülün sahip olduğu türlerden olmalı. |
cannot_write_record | Kaldırmak, o kaydın modülünde yazma yetkisi gerektirir. |
Yayımladığı olaylar: files.detached
Neye yazar: file_link (delete) — Unlinks the file from the record
curl -X POST https://app.getera.io/api/v1/file_links/actions/detach \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"fileId":"FILE_ID","recordType":"Record type","recordId":"RECORD_ID"}'{
"ok": true,
"result": "…",
"events": [
"files.detached"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.fileLinks.detach({
fileId: "FILE_ID",
recordType: "Record type",
recordId: "RECORD_ID"
})era file_links detach \
--file-id "FILE_ID" \
--record-type "Record type" \
--record-id "RECORD_ID"{
"name": "era__files__detach",
"arguments": {
"fileId": "FILE_ID",
"recordType": "Record type",
"recordId": "RECORD_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde files:read izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 unknown_record_type, cannot_write_record · 429 çok sık istek
files.publish
Dosyayı yayımla — Dosyayı herkese açık adresinde herkese sunulan bir varlık yapar.
Gereken izin files:manage · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/files/{id}/actions/publish- Asıl adres:
POST /api/v1/actions/files.publish
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Dosya · kimliği: file |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Dosya bu çalışma alanında hâlâ bulunmalı. |
is_folder | Klasör yayımlanamaz. |
already_public | Dosya gizli olmalı. |
uploaded_through_link | Dışarıdan biri tarafından gönderilen dosya yayımlanmadan önce yeniden yüklenir. |
no_object | Kaydın arkasında saklanan bir dosya olmalı. |
Yayımladığı olaylar: files.published
Neye yazar: file (update) — Sets is_public
curl -X POST https://app.getera.io/api/v1/files/FILE_ID/actions/publish \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"files.published"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.files.publish("FILE_ID")era files publish FILE_ID{
"name": "era__files__publish",
"arguments": {
"id": "FILE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde files:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, is_folder, already_public, uploaded_through_link, no_object · 429 çok sık istek
files.remove
Dosya veya klasörü sil — Kaydı silindi olarak işaretler — klasörse altındaki her şeyi de — ve temizlenecek nesneleri döndürür.
Gereken izin files:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/files/{id}/actions/remove- Asıl adres:
POST /api/v1/actions/files.remove
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Dosya · kimliği: file |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Dosya bu çalışma alanında hâlâ bulunmalı. |
Yayımladığı olaylar: files.deleted, files.folder_deleted
Neye yazar: file (update) — Marks the row, and its descendants, deleted
curl -X POST https://app.getera.io/api/v1/files/FILE_ID/actions/remove \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"files.deleted",
"files.folder_deleted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.files.remove("FILE_ID")era files remove FILE_ID{
"name": "era__files__remove",
"arguments": {
"id": "FILE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde files:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found · 429 çok sık istek
files.renew_link
Yükleme bağlantısını uzat — Açık bir bağlantının son tarihini, gönderilmiş adresi değiştirmeden ileri alır.
Gereken izin files:manage · veriyi değiştirir
https://app.getera.io/api/v1/file_upload_links/{id}/actions/renew_link- Asıl adres:
POST /api/v1/actions/files.renew_link
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Bağlantı · kimliği: file_upload_link |
expiresAt | date-time | evet | Açık kalacağı tarih |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bağlantı bu çalışma alanında bulunmalı. |
already_revoked | Kapatılmış bir bağlantı yeniden açılmaz; bunun yerine yenisi oluşturulur. |
expiry_in_past | Yeni son tarih gelecekte olmalı. |
Yayımladığı olaylar: files.link_renewed
Neye yazar: file_upload_link (update) — Moves the expiry date
curl -X POST https://app.getera.io/api/v1/file_upload_links/FILE_UPLOAD_LINK_ID/actions/renew_link \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"expiresAt":"2026-11-02T09:00:00Z"}'{
"ok": true,
"result": "…",
"events": [
"files.link_renewed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.fileUploadLinks.renewLink("FILE_UPLOAD_LINK_ID", {
expiresAt: "2026-11-02T09:00:00Z"
})era file_upload_links renew_link FILE_UPLOAD_LINK_ID \
--expires-at "2026-11-02T09:00:00Z"{
"name": "era__files__renew_link",
"arguments": {
"id": "FILE_UPLOAD_LINK_ID",
"expiresAt": "2026-11-02T09:00:00Z"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde files:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_revoked, expiry_in_past · 429 çok sık istek
files.replace
Yeni içeriği kaydet — Dosyanın içeriğinin üzerine yazılmasına izin verir ve yeni boyutu yeni sürüm olarak kaydeder.
Gereken izin files:write · veriyi değiştirir
https://app.getera.io/api/v1/files/{id}/actions/replace- Asıl adres:
POST /api/v1/actions/files.replace
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Dosya · kimliği: file |
fileSize | number | evet | Bayt cinsinden yeni boyut · en az 0 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Dosya bu çalışma alanında hâlâ bulunmalı. |
is_folder | Klasörün kaydedilecek içeriği yok. |
no_object | Kaydın arkasında saklanan bir dosya olmalı. |
file_too_large | Yeni içerik boyut sınırı içinde olmalı. |
storage_quota_exceeded | Organizasyonun planında bu büyüme için yer kalmış olmalı. |
Yayımladığı olaylar: files.replaced
Neye yazar: file (update) — Records the new size and version
curl -X POST https://app.getera.io/api/v1/files/FILE_ID/actions/replace \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"fileSize":1}'{
"ok": true,
"result": "…",
"events": [
"files.replaced"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.files.replace("FILE_ID", {
fileSize: 1
})era files replace FILE_ID \
--file-size 1{
"name": "era__files__replace",
"arguments": {
"id": "FILE_ID",
"fileSize": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde files:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, is_folder, no_object, file_too_large, storage_quota_exceeded · 429 çok sık istek
files.revoke_link
Yükleme bağlantısını kapat — Bağlantı anahtarının kabul edilmesini durdurur; onunla gelmiş dosyalara dokunmaz.
Gereken izin files:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/file_upload_links/{id}/actions/revoke_link- Asıl adres:
POST /api/v1/actions/files.revoke_link
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Bağlantı · kimliği: file_upload_link |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bağlantı bu çalışma alanında bulunmalı. |
already_revoked | Bağlantı hâlâ açık olmalı. |
Yayımladığı olaylar: files.link_revoked
Neye yazar: file_upload_link (update) — Closes the link
curl -X POST https://app.getera.io/api/v1/file_upload_links/FILE_UPLOAD_LINK_ID/actions/revoke_link \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"files.link_revoked"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.fileUploadLinks.revokeLink("FILE_UPLOAD_LINK_ID")era file_upload_links revoke_link FILE_UPLOAD_LINK_ID{
"name": "era__files__revoke_link",
"arguments": {
"id": "FILE_UPLOAD_LINK_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde files:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_revoked · 429 çok sık istek
files.sign_url
İndirme bağlantısı al — Özel bir nesnenin verilip verilemeyeceğine ve ne kadar süreyle verileceğine karar verir.
Gereken izin files:read · veriyi değiştirir
https://app.getera.io/api/v1/files/{id}/actions/sign_url- Asıl adres:
POST /api/v1/actions/files.sign_url
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Dosya · kimliği: file |
ttlSeconds | number | Geçerlilik süresi (saniye) |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Dosya bu çalışma alanında hâlâ bulunmalı. |
is_folder | Klasör indirilemez. |
no_object | Kaydın arkasında saklanan bir dosya olmalı. |
ttl_too_long | İndirme bağlantısı en fazla 24 saat geçerli olabilir. |
Yayımladığı olaylar: files.url_signed
Neye yazar: file (update) — Counts the download
curl -X POST https://app.getera.io/api/v1/files/FILE_ID/actions/sign_url \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"ttlSeconds":1}'{
"ok": true,
"result": "…",
"events": [
"files.url_signed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.files.signUrl("FILE_ID", {
ttlSeconds: 1
})era files sign_url FILE_ID \
--ttl-seconds 1{
"name": "era__files__sign_url",
"arguments": {
"id": "FILE_ID",
"ttlSeconds": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde files:read izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, is_folder, no_object, ttl_too_long · 429 çok sık istek
files.sweep
Dosyaları temizle — Süresi ya da kotası dolan yükleme bağlantılarını kapatır; uzun süre önce silinen dosyaların depolanan içeriğini kaldırmak üzere sıraya koyar.
Gereken izin files:manage · veriyi değiştirir
https://app.getera.io/api/v1/file_upload_links/actions/sweep- Asıl adres:
POST /api/v1/actions/files.sweep
Girdi
Bu işlem girdi almaz.
Yayımladığı olaylar: files.link_expired, files.swept
Neye yazar: file_upload_link (update) — Closes links that expired or filled up
curl -X POST https://app.getera.io/api/v1/file_upload_links/actions/sweep \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"files.link_expired",
"files.swept"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.fileUploadLinks.sweep()era file_upload_links sweep{
"name": "era__files__sweep",
"arguments": {}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde files:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 429 çok sık istek
files.unpublish
Dosyayı gizli yap — Dosyanın herkese açık sunumunu durdurur; artık yalnızca imzalı bir bağlantıyla çıkabilir.
Gereken izin files:manage · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)
https://app.getera.io/api/v1/files/{id}/actions/unpublish- Asıl adres:
POST /api/v1/actions/files.unpublish
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Dosya · kimliği: file |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Dosya bu çalışma alanında hâlâ bulunmalı. |
is_folder | Klasör yayımlanamaz. |
already_private | Dosya herkese açık olmalı. |
Yayımladığı olaylar: files.unpublished
Neye yazar: file (update) — Clears is_public
curl -X POST https://app.getera.io/api/v1/files/FILE_ID/actions/unpublish \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"files.unpublished"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.files.unpublish("FILE_ID")era files unpublish FILE_ID{
"name": "era__files__unpublish",
"arguments": {
"id": "FILE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde files:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, is_folder, already_private · 429 çok sık istek
files.update
Dosya bilgilerini düzenle — Dosyanın görünen adını, alternatif metnini, açıklamasını veya kategorisini değiştirir.
Gereken izin files:write · veriyi değiştirir
https://app.getera.io/api/v1/files/{id}/actions/update- REST kısayolu:
PATCH /api/v1/files/{id} - Asıl adres:
POST /api/v1/actions/files.update
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Dosya · kimliği: file |
originalName | string | Ad · en çok 500 | |
altText | string | Alternatif metin · en çok 2000 | |
description | string | Açıklama · en çok 4000 | |
category | string | Kategori · en çok 255 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Dosya bu çalışma alanında hâlâ bulunmalı. |
Yayımladığı olaylar: files.updated
Neye yazar: file (update) — Updates the editable metadata
curl -X POST https://app.getera.io/api/v1/files/FILE_ID/actions/update \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"originalName":"Name"}'{
"ok": true,
"result": "…",
"events": [
"files.updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.files.update("FILE_ID", {
originalName: "Name"
})era files update FILE_ID \
--original-name "Name"{
"name": "era__files__update",
"arguments": {
"id": "FILE_ID",
"originalName": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde files:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found · 429 çok sık istek
files.upload
Yüklenen dosyayı kaydet — Depolanan bir nesneyi bir klasöre kaydeder; boyut, tür ve bağlantı sınırlarını uygular.
Gereken izin files:write · veriyi değiştirir
https://app.getera.io/api/v1/files/actions/upload- Asıl adres:
POST /api/v1/actions/files.upload
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
originalName | string | evet | Dosya adı · en çok 500 |
storedName | string | evet | Saklanan ad · en çok 500 |
storageKey | string | evet | Nesne anahtarı · en çok 1024 |
fileUrl | string | Başvuru URL’si · en çok 2048 | |
mimeType | string | İçerik türü · en çok 255 | |
fileType | string (enum) | Tür · İzin verilen değerler: image, document, video, audio, other | |
fileSize | number | evet | Bayt cinsinden boyut · en az 0 |
folderPath | string | Klasör · en çok 500 | |
category | string | Kategori · en çok 255 | |
agentId | string | Üreten ajan · en çok 64 | |
sourceConnector | string | Kaynak bağlayıcı · en çok 64 | |
artifactKind | string | Çıktı türü · en çok 24 | |
uploadToken | string | Yükleme bağlantısı anahtarı · en çok 64 | |
context | string (enum) | Saklayan · İzin verilen değerler: file, workspace, knowledge, execution, chat, copilot | |
executionId | string | İş akışı çalıştırması · en çok 128 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
file_too_large | Dosya, çalışma alanı veya bağlantı boyut sınırı içinde olmalı. |
type_not_allowed | Bağlantı bu tür dosyayı kabul etmeli. |
link_unknown | Yükleme bağlantısı bulunmalı. |
link_revoked | Yükleme bağlantısı kapatılmamış olmalı. |
link_expired | Yükleme bağlantısının süresi dolmamış olmalı. |
link_full | Yükleme bağlantısı dosya sınırına ulaşmamış olmalı. |
storage_quota_exceeded | Organizasyonun planında yer kalmış olmalı. |
Yayımladığı olaylar: files.uploaded
Neye yazar: file (insert) — Records the file and any folder it needed; file_upload_link (update) — Counts the upload against the link
curl -X POST https://app.getera.io/api/v1/files/actions/upload \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"originalName":"File name","storedName":"Stored name","storageKey":"Object key","fileSize":1}'{
"ok": true,
"result": "…",
"events": [
"files.uploaded"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.files.upload({
originalName: "File name",
storedName: "Stored name",
storageKey: "Object key",
fileSize: 1
})era files upload \
--original-name "File name" \
--stored-name "Stored name" \
--storage-key "Object key" \
--file-size 1{
"name": "era__files__upload",
"arguments": {
"originalName": "File name",
"storedName": "Stored name",
"storageKey": "Object key",
"fileSize": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde files:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 file_too_large, type_not_allowed, link_unknown, link_revoked, link_expired, link_full, storage_quota_exceeded · 429 çok sık istek
Veri modelleri
FileLink
Tablo file_link · Kaynak file_links
GET /api/v1/file_linksGET /api/v1/file_links/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
file_id | string (uuid) · uuid | file | ||
record_type | string · text | |||
record_id | string (uuid) · uuid | |||
linked_by_user_id | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: file_id, record_type, record_id
FileUploadLink
Tablo file_upload_link · Kaynak file_upload_links
GET /api/v1/file_upload_linksGET /api/v1/file_upload_links/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
label | string · text | evet | ||
description | string · text | evet | ||
target_folder | string · text | |||
max_files | integer · int4 | |||
max_file_size_mb | integer · int4 | |||
allowed_file_types | string[] · text[] | |||
expires_at | string (date-time) · timestamptz | evet | ||
is_active | boolean · bool | |||
upload_count | integer · int4 | |||
owner_user_id | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: token
Denetimler:
CHECK ((max_file_size_mb > 0))CHECK ((max_files > 0))CHECK ((upload_count >= 0))
File
Tablo file · Kaynak files
GET /api/v1/filesGET /api/v1/files/{id}PATCH /api/v1/files/{id}→files.update
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
name | string · text | |||
original_name | string · text | |||
storage_key | string · text | evet | ||
file_url | string · text | evet | ||
file_type | string · text | image, document, video, audio, other | ||
mime_type | string · text | evet | ||
file_size | string (int64) · int8 | evet | ||
folder_path | string · text | |||
parent_id | string (uuid) · uuid | evet | file | |
category | string · text | evet | ||
alt_text | string · text | evet | ||
description | string · text | evet | ||
is_folder | boolean · bool | |||
is_public | boolean · bool | |||
sort_order | integer · int4 | |||
download_count | integer · int4 | |||
owner_user_id | string (uuid) · uuid | evet | app_user | |
agent_id | string · text | evet | ||
source_connector | string · text | evet | ||
artifact_kind | string · text | evet | ||
version | integer · int4 | |||
upload_link_id | string (uuid) · uuid | evet | file_upload_link | |
deleted_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
context | string · text | file, workspace, knowledge, execution, chat, copilot | ||
execution_id | string · text | evet |
Birincil anahtar: id
Denetimler:
CHECK (((file_size IS NULL) OR (file_size >= 0)))
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
files.attached | Bir dosya bir kayda eklendi. | id, recordType, recordId |
files.deleted | Bir dosya silindi. | id, name |
files.detached | Bir dosya bir kayıttan çıkarıldı. | id, recordType, recordId |
files.folder_created | Bir klasör oluşturuldu. | id, name, folderPath |
files.folder_deleted | Bir klasör ve içindekiler silindi. | id, name, count |
files.link_created | Bir yükleme bağlantısı açıldı. | id, label |
files.link_expired | Bir yükleme bağlantısı süresi ya da kullanım hakkı dolduğu için kapatıldı. | id |
files.link_renewed | Bir yükleme bağlantısının süresi uzatıldı. | id, expiresAt |
files.link_revoked | Bir yükleme bağlantısı kapatıldı. | id |
files.published | Bir dosya herkese açık bir varlık oldu. | id, name |
files.replaced | Bir dosyanın içeriğinin üzerine yazıldı. | id, name, size |
files.swept | Günlük dosya temizliği çalıştı. | linksClosed, objectsQueued, days |
files.unpublished | Herkese açık bir dosya özel yapıldı. | id, name |
files.updated | Bir dosyanın ayrıntıları düzenlendi. | id, name |
files.uploaded | Bir dosya yüklendi. | id, name, folderPath, size |
files.url_signed | Özel bir dosya için indirme bağlantısı verildi. | id, name, ttlSeconds |