http api

Segala yang papan pemuka lakukan, dari terminal anda

Satu kunci akaun. Senaraikan laman anda, terbitkan padanya, tukar namanya, baca apa yang borang anda kumpulkan, padamkannya — melalui HTTP biasa, dari skrip, kerja CI, atau seorang ejen.

mula pantas

Tiga arahan

Cipta kunci di papan pemuka anda, pastikan ia berfungsi, dan naikkan satu folder ke dalam talian. Kuncinya diletak dalam pengepala Authorization pada setiap panggilan.

Pastikan kunci berfungsi
curl -H "Authorization: Bearer hvs_…" https://harvis.dev/api/v1
Lihat apa yang ada dalam akaun
curl -H "Authorization: Bearer hvs_…" https://harvis.dev/api/v1/sites
Terbitkan satu folder
curl -X POST https://harvis.dev/api/v1/sites \
  -H "Authorization: Bearer hvs_…" \
  -F "files=@index.html" -F "paths=index.html"
satu kontrak

Aplikasi web dan API tidak boleh terpisah

Setiap keupayaan diisytiharkan sekali, dalam satu fail, dan kedua-dua papan pemuka dan API ini dibina daripadanya. openapi.json dijana daripada perisytiharan itu, dan binaan gagal jika kedua-duanya tidak sepadan. Jadi ini bukan dokumentasi yang menerangkan produk — ia bahan yang membentuk produk itu.

  • Satu pelaksanaan bagi setiap keupayaan, dipanggil oleh aplikasi web dan skrip anda sama sahaja.
  • openapi.json dijana, tidak pernah ditulis tangan, dan disajikan di /openapi.json.
  • Binaan gagal sebaik sahaja laluan, kontrak dan dokumen tidak lagi sependapat.
penerbitan

Dengan kunci, laman itu terus milik anda

Menerbitkan tanpa akaun masih berfungsi dan akan sentiasa berfungsi — anda dapat pautan tuntutan peribadi untuk dibuka kemudian. Hantar kunci dalam panggilan yang sama, dan tiada apa lagi untuk dituntut: laman itu berada dalam akaun anda sejak bait pertama, dan ia tidak pernah luput.

zip -r site.zip . && curl -X POST https://harvis.dev/api/upload \
  -H "Authorization: Bearer hvs_…" \
  -H "Content-Type: application/zip" --data-binary @site.zip
titik akhir

Keseluruhan permukaan

Bentuk penuh permintaan dan respons ada dalam dokumen OpenAPI.

kaedahlaluanapa yang ia buat
GET/api/v1Check that a credential works.
GET/api/v1/keysThe account's API keys. Revoked keys are not listed.
POST/api/v1/keysCreate an API key.
DELETE/api/v1/keys/{keyId}Revoke an API key. Anything using it stops working immediately.
GET/api/v1/meThe account a credential belongs to.
GET/api/v1/sitesList the account's sites, newest first.
POST/api/v1/sitesCreate a site from a folder of files.
DELETE/api/v1/sites/{id}Delete a site, its files and its form submissions.
GET/api/v1/sites/{id}One site.
PATCH/api/v1/sites/{id}Rename a site, change its web address, or both.
POST/api/v1/sites/{id}/deployReplace every file of a site with the uploaded set.
POST/api/v1/sites/{id}/deploy-tokenIssue a new deploy token for a site. The old one stops working immediately.
POST/api/v1/sites/{id}/deploy/zipReplace every file of a site from a zip archive sent as the raw request body.
GET/api/v1/sites/{id}/filesEvery file a site is serving.
POST/api/v1/sites/{id}/filesAdd or overwrite individual files, leaving the rest of the site alone.
DELETE/api/v1/sites/{id}/submissionsDelete every submission for a site, or every one of a single form.
GET/api/v1/sites/{id}/submissionsOne page of a site's form submissions, newest first.
DELETE/api/v1/sites/{id}/submissions/{submissionId}Delete one submission.
GET/api/v1/sites/{id}/submissions/{submissionId}One submission.
GET/api/v1/sites/{id}/submissions/csvExport a site's form submissions as CSV.
POST/api/v1/sites/{id}/submissions/readMark every unread submission as read.
GET/api/v1/sites/{id}/submissions/summaryHow many submissions a site holds, how many are unread, and which forms exist.
POST/api/v1/sites/importCreate a site by downloading a single page from a known artifact URL.
ralat

Setiap kegagalan berbentuk sama

Bercabanglah pada kod, jangan sekali-kali pada mesej. Kodnya stabil; ayatnya untuk sesiapa yang membaca log.

{
  "error": {
    "code": "subdomainTaken",
    "message": "That address is already taken. Try another."
  }
}