FastPaste API
FastPaste REST API v1
البدء
تتيح لك FastPaste API إنشاء وعرض وحذف الـ paste برمجياً.
المصادقة
تتطلب جميع طلبات API الرأس X-API-Key:
Base URL
تنسيق الاستجابة
جميع الردود بتنسيق JSON:
POST /api/v1/paste
ينشئ paste جديداً.
Paste نصي (JSON)
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
content | string | نعم | محتوى الـ paste (الحد الأدنى 3، الحد الأقصى 4.00 MB) |
title | string | لا | عنوان الـ paste |
description | string | لا | الوصف (الحد الأقصى 500 حرف) |
expiry | string | لا | المدة: 10m, 30m, 1h, 3h, 6h, 12h, 1d, 2d, 3d, 1w, 2w, 1m, never (الافتراضي: 1d) |
password | string | لا | حماية بكلمة مرور |
burn | boolean | لا | عرض لمرة واحدة ثم حذف. إذا كانت القيمة true، يُحذف الـ paste تلقائيًا بعد أول عرض (الافتراضي: false). |
encrypt | boolean | لا | تشفير طرفي. إذا كانت القيمة true، يجب أن يكون المحتوى نصًا مشفّرًا من جهة العميل بصيغة "fpe1:..." (انظر قسم E2E). الافتراضي: false. |
key | string | لا | مفتاح فك التشفير بصيغة base64url. اختياري؛ يُستخدم فقط لإلحاق #المفتاح بالرابط المُعاد ولا يُخزَّن على الخادم أبدًا. اتركه فارغًا للإبقاء على المفتاح بالكامل من جهة العميل. |
downloadable | boolean | لا | يجعل الـ paste المشفّر طرفيًا قابلًا للتنزيل (الافتراضي: false). يُستخدم مع encrypt=true؛ في الـ paste غير المشفّر لا تأثير له وتتضمن الاستجابة تحذيرًا (الـ paste غير المشفّر قابل للتنزيل دائمًا على أي حال). |
language | string | لا | لغة إبراز الصياغة (مثل python أو javascript). تُكتشف تلقائيًا إذا أُغفلت؛ في التشفير الطرفي تُخزَّن للإبراز بعد فك التشفير. |
public | boolean | لا | إذا كانت true، يُدرَج الـ paste في الأرشيف العام وخريطة الموقع. القيمة الافتراضية false. يُتجاهَل عند استخدام كلمة مرور أو الحذف بعد القراءة أو التشفير. |
slug | string | لا | عنوان قصير مخصّص (مثل «ملاحظاتي» ← /view/ملاحظاتي). إذا كان مُستخدَمًا، يُخصَّص عنوان مشابه. |
رفع ملف (multipart/form-data)
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
file | file | نعم | الملف المراد رفعه (الحد الأقصى 10.00 MB) |
description | string | لا | وصف الملف |
expiry | string | لا | مدة الصلاحية |
password | string | لا | حماية بكلمة مرور |
burn | boolean | لا | عرض لمرة واحدة ثم حذف. إذا كانت القيمة true، يُحذف الـ paste تلقائيًا بعد أول عرض (الافتراضي: false). |
encrypt | boolean | لا | تشفير طرفي. إذا كانت القيمة true، يجب أن يكون المحتوى نصًا مشفّرًا من جهة العميل بصيغة "fpe1:..." (انظر قسم E2E). الافتراضي: false. |
key | string | لا | مفتاح فك التشفير بصيغة base64url. اختياري؛ يُستخدم فقط لإلحاق #المفتاح بالرابط المُعاد ولا يُخزَّن على الخادم أبدًا. اتركه فارغًا للإبقاء على المفتاح بالكامل من جهة العميل. |
downloadable | boolean | لا | يجعل الـ paste المشفّر طرفيًا قابلًا للتنزيل (الافتراضي: false). يُستخدم مع encrypt=true؛ في الـ paste غير المشفّر لا تأثير له وتتضمن الاستجابة تحذيرًا (الـ paste غير المشفّر قابل للتنزيل دائمًا على أي حال). |
التشفير الطرفي (E2E)
شفّر المحتوى من جانبك باستخدام AES-GCM (256 بت)، ثم أرسل النص المشفّر بوصفه content. يخزّن الخادم البيانات المشفّرة فقط ولا يرى النص الصريح أبدًا. تُستخدم الصيغة نفسها المستخدمة في واجهة الويب.
صيغة النص المشفّر: fpe1:<base64(iv)>:<base64(النص المشفّر)> — حيث iv قيمة عشوائية بطول 12 بايت ويتضمن النص المشفّر وسم GCM.
GET /api/v1/paste/{id}
يجلب تفاصيل ومحتوى الـ paste.
PUT /api/v1/paste/{id}
يحدّث paste موجودًا (فقط ما يخص مفتاح API هذا). أرسل الحقول التي تريد تغييرها فقط: content (نص فقط) وtitle وdescription وexpiry وburn وpassword وlanguage وdownloadable. إذا كان المحتوى "fpe1:..." فأضف encrypt وkey.
مثال على الطلب (cURL)GET /api/v1/pastes
يسرد ملفات paste المُنشأة بمفتاح API هذا (الأحدث أولًا). ترقيم الصفحات: page وlimit (1–100).
مثال على الطلب (cURL)GET /api/v1/paste/{id}/raw
يعيد محتوى الـ paste كنص عادي. مناسب للسكريبتات والأتمتة.
مثالالاستجابة: Content-Type: text/plain
DELETE /api/v1/paste/{id}
يحذف الـ paste. يمكن حذف الـ paste التي أنشئت بنفس مفتاح API فقط.
مثالPOST /api/v1/cli
أنشئ paste بسرعة من سطر الأوامر (curl). أرسل المحتوى كجسم طلب خام من stdin أو كحقل نموذج (content/paste/f:1). الاستجابة الافتراضية هي رابط بنص عادي.
المعامل
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
(gövde) | raw / form | نعم | محتوى paste. للجسم الخام يُنصح باستخدام text/plain (للحفاظ على = و&). |
expiry | string | لا | المدة: 10m, 30m, 1h, 3h, 6h, 12h, 1d, 2d, 3d, 1w, 2w, 1m, never (الافتراضي: 1d) |
title | string | لا | عنوان الـ paste |
lang | string | لا | لغة إبراز الصياغة (مثل python أو javascript). تُكتشف تلقائيًا إذا أُغفلت؛ في التشفير الطرفي تُخزَّن للإبراز بعد فك التشفير. |
burn | boolean | لا | عرض لمرة واحدة ثم حذف. إذا كانت القيمة true، يُحذف الـ paste تلقائيًا بعد أول عرض (الافتراضي: false). |
Accept: application/json veya ?json=1 ile JSON döner. GET /api/v1/cli kullanım örneklerini gösterir.
امتدادات الملفات المسموح بها
.txt
.log
.json
.xml
.yaml
.yml
.ini
.cfg
.conf
.md
.csv
.sql
.js
.ts
.html
.htm
.css
.py
.java
.go
.rs
.c
.cpp
.h
.hpp
.lua
.rb
.jsx
.tsx
.vue
.svelte
.scss
.sass
.less
.toml
.gitignore
.dockerfile
.makefile
.bat
.ps1
.r
.swift
.kt
.kts
.scala
.pl
.pm
.tcl
.awk
.sed
.diff
.patch
.tf
.hcl
.proto
.graphql
.tex
.bib
.rst
.adoc
.org
.wiki
.properties
.gradle
.cmake
.mak
حدود المعدل
يمكن تحديد حدود معدل منفصلة لكل مفتاح API:
| نوع الحد | الوصف |
|---|---|
| الحد الساعي | الحد الأقصى للطلبات في الساعة (0 = غير محدود) |
| الحد اليومي | الحد الأقصى للطلبات في اليوم |
| الحد الشهري | الحد الأقصى للطلبات في الشهر |
عند تجاوز الحد، يُعاد الرد 429 Too Many Requests.
رموز الخطأ
| الرمز | المعنى |
|---|---|
400 | طلب غير صالح (معامل مفقود أو خاطئ) |
401 | مفتاح API مفقود |
403 | مفتاح API غير صالح/غير نشط أو تم رفض الوصول |
404 | الـ paste غير موجود أو منتهي الصلاحية |
405 | طريقة HTTP غير مسموح بها |
413 | حجم الملف كبير جداً |
429 | تجاوز حد المعدل |
500 | خطأ في الخادم |
503 | API معطّل |
إشعارات Webhook
يمكن تهيئة URL webhook منفصل لكل مفتاح API. يُرسَل طلب POST عند إنشاء paste جديد: