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

KaynakTabloListeleme ve okumaPOSTPATCHDELETE
file_linksfile_link/api/v1/file_links
file_upload_linksfile_upload_link/api/v1/file_upload_links
filesfile/api/v1/filesfiles.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

İşlemGereken izinNe yapar
files.attachfiles:readKayda dosya ekle
files.create_folderfiles:writeKlasör oluştur
files.create_linkfiles:manageYükleme bağlantısı oluştur
files.detachfiles:readDosyayı kayıttan kaldır
files.publishfiles:manageDosyayı yayımla
files.removefiles:deleteDosya veya klasörü sil
files.renew_linkfiles:manageYükleme bağlantısını uzat
files.replacefiles:writeYeni içeriği kaydet
files.revoke_linkfiles:manageYükleme bağlantısını kapat
files.sign_urlfiles:readİndirme bağlantısı al
files.sweepfiles:manageDosyaları temizle
files.unpublishfiles:manageDosyayı gizli yap
files.updatefiles:writeDosya bilgilerini düzenle
files.uploadfiles:writeYü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

POSThttps://app.getera.io/api/v1/file_links/actions/attach
API anahtarı ya da OAuth token · files:read
  • Asıl adres: POST /api/v1/actions/files.attach

Girdi

AlanTürZorunluAçıklama
fileIduuidevetDosya · kimliği: file
recordTypestringevetKayıt türü · en çok 60
recordIduuidevetKayıt

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
unknown_record_typeKayıt türü bir modülün sahip olduğu türlerden olmalı.
cannot_write_recordEklemek, o kaydın modülünde yazma yetkisi gerektirir.
file_not_foundDosya bulunmalı ve klasör olmamalı.
record_not_foundKayı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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/files/actions/create_folder
API anahtarı ya da OAuth token · files:write
  • Asıl adres: POST /api/v1/actions/files.create_folder

Girdi

AlanTürZorunluAçıklama
parentPathstringİçeride · en çok 500
namestringevetAd · en çok 255

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
name_requiredKlasörün bir adı olmalı.
name_has_separatorKlasör adı eğik çizgi içeremez.
folder_existsAynı 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

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

POSThttps://app.getera.io/api/v1/file_upload_links/actions/create_link
API anahtarı ya da OAuth token · files:manage
  • Asıl adres: POST /api/v1/actions/files.create_link
AlanTürZorunluAçıklama
labelstringEtiket · en çok 255
descriptionstringAçıklama · en çok 2000
targetFolderstringYüklemelerin düştüğü yer · en çok 500
maxFilesnumberEn fazla dosya
maxFileSizeMbnumberEn büyük boyut (MB)
allowedFileTypesstringKabul 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
expiresAtdate-timeSona erme

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
invalid_limitsBağlantı en az bir megabaytlık en az bir dosya kabul etmeli.
expiry_in_pastSon 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/file_links/actions/detach
API anahtarı ya da OAuth token · files:read
  • Asıl adres: POST /api/v1/actions/files.detach

Girdi

AlanTürZorunluAçıklama
fileIduuidevetDosya · kimliği: file
recordTypestringevetKayıt türü · en çok 60
recordIduuidevetKayıt

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
unknown_record_typeKayıt türü bir modülün sahip olduğu türlerden olmalı.
cannot_write_recordKaldı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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/files/{id}/actions/publish
API anahtarı ya da OAuth token · files:manage
  • Asıl adres: POST /api/v1/actions/files.publish

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Dosya · kimliği: file

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundDosya bu çalışma alanında hâlâ bulunmalı.
is_folderKlasör yayımlanamaz.
already_publicDosya gizli olmalı.
uploaded_through_linkDışarıdan biri tarafından gönderilen dosya yayımlanmadan önce yeniden yüklenir.
no_objectKaydı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 '{}'
Yanıt
{
  "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
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/files/{id}/actions/remove
API anahtarı ya da OAuth token · files:delete
  • Asıl adres: POST /api/v1/actions/files.remove

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Dosya · kimliği: file

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundDosya 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 '{}'
Yanıt
{
  "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
tools/call
{
  "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

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

POSThttps://app.getera.io/api/v1/file_upload_links/{id}/actions/renew_link
API anahtarı ya da OAuth token · files:manage
  • Asıl adres: POST /api/v1/actions/files.renew_link
AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Bağlantı · kimliği: file_upload_link
expiresAtdate-timeevetAçık kalacağı tarih

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundBağlantı bu çalışma alanında bulunmalı.
already_revokedKapatılmış bir bağlantı yeniden açılmaz; bunun yerine yenisi oluşturulur.
expiry_in_pastYeni 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/files/{id}/actions/replace
API anahtarı ya da OAuth token · files:write
  • Asıl adres: POST /api/v1/actions/files.replace

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Dosya · kimliği: file
fileSizenumberevetBayt cinsinden yeni boyut · en az 0

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundDosya bu çalışma alanında hâlâ bulunmalı.
is_folderKlasörün kaydedilecek içeriği yok.
no_objectKaydın arkasında saklanan bir dosya olmalı.
file_too_largeYeni içerik boyut sınırı içinde olmalı.
storage_quota_exceededOrganizasyonun 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}'
Yanıt
{
  "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
tools/call
{
  "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

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

POSThttps://app.getera.io/api/v1/file_upload_links/{id}/actions/revoke_link
API anahtarı ya da OAuth token · files:manage
  • Asıl adres: POST /api/v1/actions/files.revoke_link
AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Bağlantı · kimliği: file_upload_link

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundBağlantı bu çalışma alanında bulunmalı.
already_revokedBağ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 '{}'
Yanıt
{
  "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
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/files/{id}/actions/sign_url
API anahtarı ya da OAuth token · files:read
  • Asıl adres: POST /api/v1/actions/files.sign_url

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Dosya · kimliği: file
ttlSecondsnumberGeçerlilik süresi (saniye)

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundDosya bu çalışma alanında hâlâ bulunmalı.
is_folderKlasör indirilemez.
no_objectKaydı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}'
Yanıt
{
  "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
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/file_upload_links/actions/sweep
API anahtarı ya da OAuth token · files:manage
  • 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 '{}'
Yanıt
{
  "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
tools/call
{
  "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)

POSThttps://app.getera.io/api/v1/files/{id}/actions/unpublish
API anahtarı ya da OAuth token · files:manage
  • Asıl adres: POST /api/v1/actions/files.unpublish

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Dosya · kimliği: file

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundDosya bu çalışma alanında hâlâ bulunmalı.
is_folderKlasör yayımlanamaz.
already_privateDosya 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 '{}'
Yanıt
{
  "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
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/files/{id}/actions/update
API anahtarı ya da OAuth token · files:write
  • REST kısayolu: PATCH /api/v1/files/{id}
  • Asıl adres: POST /api/v1/actions/files.update

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Dosya · kimliği: file
originalNamestringAd · en çok 500
altTextstringAlternatif metin · en çok 2000
descriptionstringAçıklama · en çok 4000
categorystringKategori · en çok 255

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundDosya 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"}'
Yanıt
{
  "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"
tools/call
{
  "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

POSThttps://app.getera.io/api/v1/files/actions/upload
API anahtarı ya da OAuth token · files:write
  • Asıl adres: POST /api/v1/actions/files.upload

Girdi

AlanTürZorunluAçıklama
originalNamestringevetDosya adı · en çok 500
storedNamestringevetSaklanan ad · en çok 500
storageKeystringevetNesne anahtarı · en çok 1024
fileUrlstringBaşvuru URL’si · en çok 2048
mimeTypestringİçerik türü · en çok 255
fileTypestring (enum)Tür · İzin verilen değerler: image, document, video, audio, other
fileSizenumberevetBayt cinsinden boyut · en az 0
folderPathstringKlasör · en çok 500
categorystringKategori · en çok 255
agentIdstringÜreten ajan · en çok 64
sourceConnectorstringKaynak bağlayıcı · en çok 64
artifactKindstringÇıktı türü · en çok 24
uploadTokenstringYükleme bağlantısı anahtarı · en çok 64
contextstring (enum)Saklayan · İzin verilen değerler: file, workspace, knowledge, execution, chat, copilot
executionIdstringİş akışı çalıştırması · en çok 128

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
file_too_largeDosya, çalışma alanı veya bağlantı boyut sınırı içinde olmalı.
type_not_allowedBağlantı bu tür dosyayı kabul etmeli.
link_unknownYükleme bağlantısı bulunmalı.
link_revokedYükleme bağlantısı kapatılmamış olmalı.
link_expiredYükleme bağlantısının süresi dolmamış olmalı.
link_fullYükleme bağlantısı dosya sınırına ulaşmamış olmalı.
storage_quota_exceededOrganizasyonun 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}'
Yanıt
{
  "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
tools/call
{
  "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

Tablo file_link · Kaynak file_links

  • GET /api/v1/file_links
  • GET /api/v1/file_links/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
file_idstring (uuid) · uuidfile
record_typestring · text
record_idstring (uuid) · uuid
linked_by_user_idstring (uuid) · uuidevetapp_user
created_atstring (date-time) · timestamptz

Birincil anahtar: id

Tekil: file_id, record_type, record_id

Tablo file_upload_link · Kaynak file_upload_links

  • GET /api/v1/file_upload_links
  • GET /api/v1/file_upload_links/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
labelstring · textevet
descriptionstring · textevet
target_folderstring · text
max_filesinteger · int4
max_file_size_mbinteger · int4
allowed_file_typesstring[] · text[]
expires_atstring (date-time) · timestamptzevet
is_activeboolean · bool
upload_countinteger · int4
owner_user_idstring (uuid) · uuidevetapp_user
created_atstring (date-time) · timestamptz
updated_atstring (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/files
  • GET /api/v1/files/{id}
  • PATCH /api/v1/files/{id} → files.update
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
namestring · text
original_namestring · text
storage_keystring · textevet
file_urlstring · textevet
file_typestring · textimage, document, video, audio, other
mime_typestring · textevet
file_sizestring (int64) · int8evet
folder_pathstring · text
parent_idstring (uuid) · uuidevetfile
categorystring · textevet
alt_textstring · textevet
descriptionstring · textevet
is_folderboolean · bool
is_publicboolean · bool
sort_orderinteger · int4
download_countinteger · int4
owner_user_idstring (uuid) · uuidevetapp_user
agent_idstring · textevet
source_connectorstring · textevet
artifact_kindstring · textevet
versioninteger · int4
upload_link_idstring (uuid) · uuidevetfile_upload_link
deleted_atstring (date-time) · timestamptzevet
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz
contextstring · textfile, workspace, knowledge, execution, chat, copilot
execution_idstring · textevet

Birincil anahtar: id

Denetimler:

  • CHECK (((file_size IS NULL) OR (file_size >= 0)))

Olaylar

İş akışları ve webhook'lar bu olaylara tepki verir.

OlayNe olurTaşıdığı alanlar
files.attachedBir dosya bir kayda eklendi.id, recordType, recordId
files.deletedBir dosya silindi.id, name
files.detachedBir dosya bir kayıttan çıkarıldı.id, recordType, recordId
files.folder_createdBir klasör oluşturuldu.id, name, folderPath
files.folder_deletedBir klasör ve içindekiler silindi.id, name, count
files.link_createdBir yükleme bağlantısı açıldı.id, label
files.link_expiredBir yükleme bağlantısı süresi ya da kullanım hakkı dolduğu için kapatıldı.id
files.link_renewedBir yükleme bağlantısının süresi uzatıldı.id, expiresAt
files.link_revokedBir yükleme bağlantısı kapatıldı.id
files.publishedBir dosya herkese açık bir varlık oldu.id, name
files.replacedBir dosyanın içeriğinin üzerine yazıldı.id, name, size
files.sweptGünlük dosya temizliği çalıştı.linksClosed, objectsQueued, days
files.unpublishedHerkese açık bir dosya özel yapıldı.id, name
files.updatedBir dosyanın ayrıntıları düzenlendi.id, name
files.uploadedBir dosya yüklendi.id, name, folderPath, size
files.url_signedÖzel bir dosya için indirme bağlantısı verildi.id, name, ttlSeconds
Bu sayfa yardımcı oldu mu?