Persegi 1
The Eyivo REST API adalah pesawat kontrol programmatic untuk website terstruktur yang menggunakan HTTPS dan JSON, adalah versi di bawah /api/v1, dan berlaku kepemilikan yang sama, batas rencana, validasi, dan audit batas sebagai dasbor.
JSON dan multipart
Terima: aplikasi / json. Kontent- Type: aplikasi / json; berkas: multipart / form-data.
Pemilik pengguna
Setiap operasi situs dibatasi oleh situs yang dimiliki oleh pengguna terotentikasi.
Draft- pertama
Simpan draft, periksa kesiapan, kemudian terbitkan item dan bahasa ketika pengguna ingin perubahan hidup. Publishing tidak mempublikasikan draf yang tidak terkait.
Versi: memecah perubahan kontrak memerlukan versi dasar baru. Ruas addititif mungkin muncul dalam ada JSON objek, sehingga klien harus mengabaikan bidang yang tidak mereka kenal.
2, cepat mulai.
- 1Buat token.
Masuk ke App, buka API token, pilih yang terkecil perlu scopes, dan salin
ey_rahasia ketika ditampilkan. - 2Daftar situs Anda.
Konfirmasi otentikasi dan dapatkan ID situs numerik yang dipakai oleh nested titik akhir.
- 3Kirim idempoten menulis.
Berikan setiap POST, PATCH, dan DELETE meminta unik
Idempotency-Key.
curl --request GET \
--url https://app.eyivo.com/api/v1/sites \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ey_your_token'
A successful response wraps in data:
{
"data": [
{
"id": 42,
"platform_subdomain_key": "7kr9mp2x",
"template_key": "corporate-01",
"status": "active",
"native_locale": "en",
"english_enabled": false,
"content_version": 1,
"search_visibility": "platform_noindex"
}
]
}
3. Otentikasi
Setiap /api/v1 permintaan membutuhkan tanda tangan:
Authorization: Bearer <token>
Pribadi API token
Yang terbaik untuk skrip, integrasinya server, dan otomatisasi akun langsung. Token dimulai dengan ey_, disimpan hashed, dan ditampilkan hanya sekali.
- Buat dan batalkan mereka di https://app.eyivo.com/tokens.
- Pilih satu atau lebih lingkup.
- Secara opsional membatasi token ke satu situs milik.
- Token yang tidak terduga tetap valid sampai dicabut.
OAuth 2.0 + PKCE
Terbaik bagi aplikasi yang bertindak atas nama pengguna Eyivo. Gunakan Kode Otorisasi dengan PKCE; jangan gunakan sandi atau hibah implisit.
- Otorisasi:
https://app.eyivo.com/oauth/authorize - Token dan penyegaran:
https://app.eyivo.com/oauth/token - Token akses kadaluarsa setelah 2 jam.
- Token baru kadaluarsa setelah 1 tahun.
PKCE aliran otorisasi
- Buat sebuah high-entropi
code_verifierdan SHA-256code_challenge. - Arahkan pengguna ke
/oauth/authorizedenganresponse_type=code, masyarakatclient_id, benar-benar terdaftarredirect_uri, diminta spasi-dipisahkanscope,state,code_challenge, dancode_challenge_method=S256. - Verifikasi
statesetelah redirect, kemudian pertukaran kode otorisasi kembali di/oauth/tokenmenggunakan aslicode_verifier. - Simpan akses dan token segarkan secara aman. Segarkan sebelum kadaluwarsa dan ganti kredensial yang diputar secara otomatis.
4.
Permintaan membutuhkan lingkup yang tepat di bawah ini. * melewati semua pemeriksaan lingkup; aplikasi seharusnya masih meminta set lingkup praktis terkecil.
| Scope | REST kemampuan |
|---|---|
sites:read | Daftar situs yang dimiliki dan mengambil satu situs. |
sites:write | Buat situs dengan akun token-lebar. |
content:read | Baca isi, skema, menu, formulir dan pengaturan. |
content:write | Buat, sunting, hapus dan secara eksplisit mempublikasikan isi; jalankan aksi panel yang dideklarasikan. |
media:read | GET /sites/{site}/media, GET /sites/{site}/media/stock-photos |
media:write | POST /sites/{site}/media, DELETE /sites/{site}/media/{media} |
domains:read | Daftar domain situs. |
domains:write | Permintaan, aktifkan, dan pilih domain gubahan. |
REST memerlukan cakupan endpoint, bukan mcp:use. Endpoint media menggunakan media:read atau media:write.
5.
Kirim sebuah Idempotency- Kunci dengan JSON Mutasi sehingga permintaan yang sama dapat dicoba lagi dengan aman. Upload dan upload- mengeluarkan tiket; verifikasi hasil transfer sebelum mencoba kembali.
Idempotency-Key: site-42-page-create-01J7M6Y8RRF3ZE6WB4Z0Y9XJXC
| Situasi | Hasil |
|---|---|
| Permintaan pertama | Operasi berjalan dan kode statusnya dan JSON tubuh disimpan. |
| Kunci, metode, path, parameter kueri, dan tubuh yang sama | Respon yang tersimpan diputar ulang tanpa mengulangi operasi. |
| Kunci yang sama dengan permintaan lain | 422 - kunci digunakan kembali dengan muatan yang berbeda ditolak. |
| Kunci yang sama ketika permintaan pertama sedang berjalan | 409 - Permintaan sudah berlangsung. |
| Tak ada kunci | Permintaan masih berjalan, tapi perilaku ulang yang aman tidak tersedia. |
Sebuah permintaan cocok termasuk HTTP metode, jalur permintaan, dan badan permintaan mentah tepat. Gunakan lagi serialisasi asli JSON ketika mencoba lagi.
6.
Operasi konten mengembalikan sebuah amplop data. MCP persediaan Konten strukturedden plus JSON cermin teks; REST kembali JSON. Baca setiap skema keluaran untuk ID, kesiapan publikasi dan paginasi. Blog, media dan submission paginate; ikuti informasi halaman mereka yang kembali.
Sumber daya tunggal
{ "data": { "id": 42, "status": "active" } }Koleksi
{ "data": [{ "id": 42 }, { "id": 43 }] }Bentuk koleksi bervariasi. Ikuti metadata dokumentasi setiap titik akhir; jangan asumsikan setiap hasil adalah daftar datar atau tak berpaginasi.
7.
/sitesDaftar situs yang dimiliki sites:read
/sitesBuat situs sites:write
/sites/{site}Ambil satu situs milik sites:read
Buat situs
curl --request POST \
--url https://app.eyivo.com/api/v1/sites \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ey_your_token' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: site-create-01J7M6Y8' \
--data '{
"display_name": "Northstar Studio",
"template_key": "corporate-01",
"native_locale": "en"
}'
| Ruas | Aturan |
|---|---|
display_name | Perlu string, maksimum 200 karakter. |
template_key | Perlu built-in kunci template. Enum kini sedang dalam OpenAPI. |
native_locale | Diperlukan kode lokal yang didukung. |
Respon: 201 Created dengan sumber daya situs. Menyediakan dapat awalnya melaporkan status tidak aktif ketika penempatan komplit. Situs dan rencana membatasi kembali 422.
Kolom sumber daya tempat: id, platform_subdomain_key, template_key, status, native_locale, english_enabled, content_version, search_visibility, opsional runtime, dan penanda waktu.
Halaman 8
/sites/{site}/pagesDaftar halaman content:read
/sites/{site}/pagesBuat draft content:write
/sites/{site}/pages/{page}Mengambil halaman content:read
/sites/{site}/pages/{page}Perbarui draft content:write
/sites/{site}/pages/{page}Hapus satu halaman content:write
/sites/{site}/pages/{page}/publicationcontent:write · locale
Buat halaman
{
"type": "page",
"sort_order": 300,
"locale": "en",
"slug": "our-story",
"title": "Our story",
"body": "<p>How the company began.</p>",
"meta_title": "Our story | Northstar Studio",
"meta_description": "Learn about Northstar Studio."
}
| Ruas | Buat aturan / perbarui |
|---|---|
type | Gunakan halaman untuk isi biasa. Tipe yang didukung dan skema komponen tema tersedia melalui kemampuan situs. |
sort_order | Opsional bernilai integer dari 0 ke 9999; buat baku ke 0. |
locale | Buat: diperlukan. Update: Diperlukan ketika mengubah title, slug, atau body. |
slug | Buat: dibutuhkan. ASCII huruf, digit, dass, dan garis bawah; maksimal 160. |
title | Buat: string yang diperlukan; maksimal 200. |
body | Benang nuklir, maksimal 50.000. |
meta_title | Benang nuklir, maksimal 200. |
meta_description | Benang nuklir, maksimal 500. |
Buat respon: 201. Respon pemutakhiran: 200. Respon hapus: 204 tanpa tubuh.
Simpan draft, periksa kesiapan, kemudian terbitkan item dan bahasa ketika pengguna ingin perubahan hidup. Publishing tidak mempublikasikan draf yang tidak terkait.
Benda katalog
/sites/{site}/catalog-itemsDaftar barang content:read
/sites/{site}/catalog-itemsBuat objek draft content:write
/sites/{site}/catalog-items/{catalogItem}Mengambil sebuah item content:read
/sites/{site}/catalog-items/{catalogItem}Hapus suatu butir content:write
/sites/{site}/catalog-items/{catalogItem}content:write · locale, slug, title
/sites/{site}/catalog-items/{catalogItem}/publicationcontent:write · locale
Buat suatu butir katalog
{
"sort_order": 100,
"locale": "en",
"slug": "strategy-advisory",
"title": "Strategy advisory",
"summary": "Focused advice for consequential decisions.",
"body": "Talk to our senior advisory team."
}
| Ruas | Aturan |
|---|---|
sort_order | Nilai integer dari 0 ke 9999; baku ke 0. |
locale | Diperlukan kode lokal yang didukung. |
slug | Diperlukan ASCII siput, maksimal 160. |
title | Perlu string; maksimum 200. |
summary | Benang nuklir, maksimal 1.000. |
body | Benang nuklir, maksimal 50.000. |
Simpan draft, periksa kesiapan, kemudian terbitkan item dan bahasa ketika pengguna ingin perubahan hidup. Publishing tidak mempublikasikan draf yang tidak terkait.
Ini adalah contoh dari keluarga konten. Temukan skema masukan / keluaran lengkap dan yang diperlukan melalui alat / daftar atau dokumen OpenAPI kanonikal. REST jalur di bawah ini relatif terhadap / api / v1 / situs / {site}.
Penemuan situs dan kemampuan
GET /capabilities · GET /readiness
Halaman, komponen dan sambungan internal
/pages · /pages/{page_id}/components · POST /pages/{page_id}/publication
Produk, galeri dan video
/catalog-items · /galleries · /videos · POST /{collection}/{id}/publication
Draf blog, kategori, dan penjadwalan
/blog/posts · /blog/categories · /blog/links · /blog/posts/{post_id}/publication · /blog/posts/{post_id}/schedule
Navigasi utama dan menu tambahan
/menus · /menus/destinations · /menu-assignments/{type}/{target_id} · /menus/{menu_key}/publication
Pustaka media dan foto stok
/media · /media/transfers · /media/stock-photos
Bentuk, pengiriman dan panel plugin
/forms · /submissions · /plugins · /plugins/panel · /plugins/panel/actions
Perusahaan, tema, bahasa dan integrasinya
/company · /theme · /theme/settings · /locales · /integrations · /demo · /demo/drafts · /cache/reset
Kemampuan dan menulis kontrak
Pilih sebuah situs, lalu baca kemampuannya: dialognya, bidang tema, skema komponen, lokasi menu dan panel plugin yang terpasang. Baca alur kerja kontra sebelum menulis. Klien tanpa sumber daya dapat menggunakan get-sitecabilicis- tool. Ikuti perkakas / list NextCursor sampai penemuan selesai.
GET /api/v1/sites/{site}/capabilities
GET /api/v1/sites/{site}/pages/{page_id}/components/schema?locale=en
Gunakan lokal yang diminta atau revisi. Blog menyimpan ganti dokumen lengkap dan batalkan jadwalnya. Menu edit memakai revisi integer; tugas isi memakai hash menu _ revisi terpisah. Pertahankan masukan dalam urutan pengganti. Pada konflik, baca lagi dan gabungkan edits yang dimaksudkan sebelum mencoba kembali.
Navigasi utama tetap otomatis. Tambahan menu memiliki draf dan publikasi mereka sendiri. Menyimpan tahap isi menu tugas; penerbitan bahwa item menerapkan mereka tanpa menerbitkan draf menu lain. Publishing menu tidak pernah mempublikasikan isinya terkait. Sebuah halaman source _ hash menolak terjemahan berdasarkan teks sumber usang.
Ruas halaman dan ruas richtext tema menerima disterilkan HTML. Gunakan list- page-links- tool untuk stabil / _ _ eyivo / pages / {id} links, diselesaikan dalam bahasa pengunjung ketika diterbitkan. Blog posting menggunakan dokumen terstruktur JSON dengan situs media _ id dan halaman / post target, bukan body _ html.
{
"type": "doc",
"content": [{
"type": "paragraph",
"content": [{ "type": "text", "text": "Our story" }]
}]
}
Gambar dan video uploads
upload- media- tool membuka sebuah picker berkas dalam MCP Apps klien seperti Claude. ChatGPT juga dapat menyediakan referensi lampiran host nya; sebuah lampiran obrolan Claude bukan sebuah referensi berkas OpenAI. Jangan pernah membuat sebuah download URL atau kirim berkas byte base64 sebagai argumen alat.
Codex dan Claude Code dapat memanggil persiapan -media- upload- alat, kemudian mengirim multipart file bytes ke upload _ url kembali dengan yang satu - gunakan upload _ token dalam waktu lima menit. Simpan rahasia token itu. REST klien dapat mengunggah dengan media mereka sendiri:write pembawa. Hanya upload selesai mengembalikan ID media untuk digunakan dalam isi; menerbitkan sebuah tiket tidak mengunggah berkas.
POST /api/v1/sites/{site}/media
Authorization: Bearer <media:write token>
Content-Type: multipart/form-data; boundary=<generated by HTTP client>
file: <original file bytes>
Domain kustom
/sites/{site}/domainsDaftar domain domains:read
/sites/{site}/domainsMeminta domain domains:write
/sites/{site}/domains/{domain}/activateAktifkan setelah verifikasi domains:write
/sites/{site}/domains/{domain}/primaryPilih nama host utama domains:write
Meminta domain
curl --request POST \
--url https://app.eyivo.com/api/v1/sites/42/domains \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ey_your_token' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: domain-request-example-com' \
--data '{"domain":"www.example.com"}'
Sumber daya domain yang tertunda termasuk verification_token. Tambahkan yang diperlukan DNS catatan kepemilikan menggunakan nilai dikembalikan untuk domain Anda, tunggu DNS Progreasi, lalu sebut titik akhir aktivasi. Setelah aktif, panggil titik akhir primer jika itu harus menjadi nama host publik kanonikal.
Kolom sumber daya Domain: id, domain, site_id, is_primary, status, kondisional verification_token, dan penanda waktu. Rencana domain dan validasi domain gagal kembali 422.
11.
| Status | Artinya | Aksi khas |
|---|---|---|
401 | Hilang, tidak sah, kadaluarsa, atau tanda tangan pembawa dicabut. | Ganti atau segarkan kredensial. |
403 | Hilang lingkup, sebuah situs pembatasan, atau situs yang ditulis oleh pemilik non-. | Gunakan sebuah situs / scope yang resmi; jangan coba lagi tidak berubah. |
404 | Sumber daya hilang atau tidak dimiliki oleh pengguna. | Verifikasi ID dan kepemilikan. |
409 | Suatu konflik revisi / versi memerlukan pembacaan dan penggabungan segar. Jangan coba kembali muatan basi yang tak berubah. | Baca rancangan bahasa yang dipilih dan revisi kini sebelum penyuntingan. |
422 | Validasi, batas rencana, aturan domain, atau ideoptasi tidak cocok. | Baca errors atau message, perbaiki permintaan, dan gunakan kunci baru jika tubuhnya berubah. |
5xx | Tidak terduga platform atau upstream gagal. | Coba baca ulang, coba tulis ulang hanya dengan kunci idempotensi yang sama. |
Respon validasi
{
"message": "The title field is required.",
"errors": {
"title": ["The title field is required."]
}
}
Respon otentikasi atau otorisasi
{
"message": "Missing required scope [content:write]."
}
Batas saat ini dan daftar cek integrasi
REST v1 sengaja mengekspos subset fokus Eyivo.
Tersedia
- Daftar tempat, inspeksi, dan penyediaan
- Halaman, komponen dan sambungan internal
- Kelola halaman, komponen, blog, produk, galeri, video, menu, media, bentuk dan situs pengaturan melalui alat konten yang discoped dan REST titik akhir.
- Daftar domain, permintaan, aktivasi, dan pemilihan primer
Tidak terkena di REST v1
- Perubahan tagihan dan langganan
- Sandi akun dan manajemen token
- Akses penyimpanan langsung dan APIs Internal
- Pemasangan kode tema arbitrary atau eksekusi
Sebelum produksi
- Gunakan HTTPS dan memvalidasi yang diharapkan
app.eyivo.comtuan rumah. - Jauhkan token pembawa server- sisi dan redact header otorisasi dari log.
- Permintaan hanya perlu scope dan lebih suka bit - terbatas token pribadi bila mungkin.
- Gunakan kunci idempotensi yang unik untuk setiap penulisan logis dan jaga dari pengulangan.
- Perlakukan
401,403,404, dan422sebagai non- sementara kecuali permintaan yang mendasari atau perubahan kredensial. - Gunakan backoff eksponensial dengan jitter untuk kegagalan sementara dan menghormati masa depan
Retry-Aftertajuk. - Bentuk koleksi bervariasi. Ikuti metadata dokumentasi setiap titik akhir; jangan asumsikan setiap hasil adalah daftar datar atau tak berpaginasi.