🔗 API Endpoint'leri
GET/miniHealth
Server sağlık durumunu kontrol eder.
GET/miniConfig
Uygulama konfigürasyon ayarlarını getirir. Genel ayarlar, limitler, premium özellikler ve rating modal ayarlarını içerir.
{
"general": {
"appName": "Signature Maker",
"appVersion": "1.0.0",
"language": "auto",
"theme": "system",
"debugMode": false
},
"limits": {
"maxSignatureTextLength": 20,
"maxFreeSignatures": 3,
"maxFreePDFsPerDay": 2,
"maxGalleryItemsFree": 10
},
"premium": {
"enabled": true,
"watermarkVisible": true,
"features": {
"unlimitedSignatures": true,
"removeWatermark": true,
"multiPDFSupport": false,
"accessAllFonts": true
}
},
"rateModal": {
"showAfterOpenCount": 5,
"remindAfterDays": 7,
"storeURL": {
"ios": "https://apps.apple.com/app/idXXXXXXXXX",
"android": "https://play.google.com/store/apps/details?id=com.example.signaturemaker"
}
}
}
GET/miniStyles
Tüm mevcut imza stillerini listeler.
GET/miniStyles/:id
Belirli bir stilin detaylarını getirir.
GET/miniStyles/category/:type
Kategoriye göre stilleri getirir (free/pro).
POST/miniGenerate-signature
Verilen isim ve stil ile imza oluşturur. v2.0'da SVG URL dahil!
{
"name": "Çağlar Şahin",
"fontStyle": "bresley"
}
v2.0 Response: Artık svgUrl ve newApiAvailable field'ları eklendi.
POST/miniUpload-pdf
PDF dosyalarını gün bazında yükler ve saklar. Dosya doğrulama ve boyut kontrolü yapar.
{
"pdfData": "base64_pdf_data_here",
"fileName": "contract_document.pdf",
"metadata": {
"userAgent": "Mobile App v2.0",
"source": "signature_flow",
"documentType": "contract"
}
}
Özellikler: Max 50MB, PDF format doğrulama, günlük organizasyon
GET/miniPDF-list
Yüklenen PDF'lerin listesi ve istatistiklerini getirir.
Query Parameters:
date - Belirli gün (YYYY-MM-DD formatında)
limit - Sonuç sayısını sınırla
GET /miniPDF-list?date=2025-08-09&limit=10
GET/miniPDF-get/:date/:filename
Belirli bir PDF dosyasını veya metadata'sını getirir.
GET /miniPDF-get/2025-08-09/document.pdf
GET /miniPDF-get/2025-08-09/document.json
Not: .pdf uzantılı dosyalar doğrudan indirilir, .json dosyalar metadata olarak döner
🎨 SVG API v2.0 (Yeni)
Modern SVG-First API
Yeni SVG API vektör tabanlı, ölçeklenebilir ve performanslı imza üretimi sağlar.
GET/render/signature.svg
SVG formatında vektör imza oluşturur.
GET /api/render/signature.svg?text=Çağlar&fontId=bresley&size=150&color=%23000000
Parametreler:
text - İmza metni (maks. 100 karakter)
fontId - Font ID (whitelist kontrolü)
size - Font boyutu (10-1000 px, varsayılan: 128)
color - Hex renk kodu (varsayılan: #000000)
stroke - Çerçeve kalınlığı (varsayılan: 0)
padding - Kenar boşluğu (varsayılan: 12)
kerning - Kerning etkin mi? (varsayılan: true)
ligatures - Ligatürler etkin mi? (varsayılan: true)
GET/render/signature.png
PNG formatında raster imza oluşturur (SVG'den dönüştürülür).
GET /api/render/signature.png?text=Çağlar&fontId=bresley&w=512&h=256
Ek Parametreler:
w - PNG genişliği (piksel)
h - PNG yüksekliği (piksel)
GET/render/signature.webp
WebP formatında optimize imza oluşturur.
GET /api/render/signature.webp?text=Çağlar&fontId=bresley&w=400
GET/render/status
SVG render servisinin durumunu kontrol eder.
GET/render/font-features/:fontId
Font'un desteklediği özellikleri analiz eder.
GET /api/render/font-features/bresley
POST/render/bulk
Toplu imza oluşturma (max 10 istek).
{
"requests": [
{"text": "Çağlar", "fontId": "bresley", "format": "svg"},
{"text": "Şahin", "fontId": "castenivey", "format": "png", "options": {"w": 512}}
]
}
🚀 SVG API Test Arayüzü
💻 Kod Örnekleri
JavaScript/Fetch API - v2.0 SVG (Önerilen)
// SVG İmza Üretimi (v2.0 - Önerilen)
const generateSVGSignature = async (text, fontId, options = {}) => {
const params = new URLSearchParams({
text: text,
fontId: fontId,
size: options.size || 128,
color: options.color || '#000000',
...options
});
try {
const response = await fetch(`http://localhost:3001/api/render/signature.svg?${params}`);
if (response.ok) {
const svgText = await response.text();
return svgText;
} else {
throw new Error(`SVG generation failed: ${response.status}`);
}
} catch (error) {
console.error('SVG imza oluşturma hatası:', error);
throw error;
}
};
// PNG İmza Üretimi (v2.0)
const generatePNGSignature = async (text, fontId, width = 512, height = 256) => {
const params = new URLSearchParams({
text: text,
fontId: fontId,
w: width,
h: height
});
const response = await fetch(`http://localhost:3001/api/render/signature.png?${params}`);
return response.blob();
};
// Kullanım - SVG
generateSVGSignature('Çağlar Şahin', 'bresley', { size: 150 })
.then(svgContent => {
document.getElementById('signature-container').innerHTML = svgContent;
});
// Kullanım - PNG
generatePNGSignature('Çağlar Şahin', 'bresley', 512, 256)
.then(blob => {
const url = URL.createObjectURL(blob);
document.getElementById('signature-img').src = url;
});
JavaScript/Fetch API - v1.0 Legacy
const generateSignature = async (name, style = 'elegant') => {
try {
const response = await fetch('http://localhost:3001/api/miniGenerate-signature', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: name,
fontStyle: style
})
});
const result = await response.json();
if (result.success) {
const base64Image = result.data[0].b64_json;
// v2.0'da SVG URL'i de mevcut
const svgUrl = result.svgUrl;
return {
png: `data:image/png;base64,${base64Image}`,
svgUrl: svgUrl
};
} else {
throw new Error(result.error.message);
}
} catch (error) {
console.error('İmza oluşturma hatası:', error);
throw error;
}
};
// Kullanım
generateSignature('Çağlar Şahin', 'bresley')
.then(result => {
document.getElementById('signature').src = result.png;
// v2.0'da SVG URL'i de kullanılabilir
console.log('SVG URL:', result.svgUrl);
});
cURL - v2.0 SVG API
# SVG İmza (Türkçe karakterli)
curl "http://localhost:3001/api/render/signature.svg?text=Çağlar&fontId=bresley&size=150"
# PNG İmza (512x256)
curl "http://localhost:3001/api/render/signature.png?text=Çağlar&fontId=bresley&w=512&h=256" \
-o signature.png
# WebP İmza (optimize)
curl "http://localhost:3001/api/render/signature.webp?text=Çağlar&fontId=bresley&w=400" \
-o signature.webp
# Font özellikleri analizi
curl "http://localhost:3001/api/render/font-features/bresley"
# Servis durumu
curl "http://localhost:3001/api/render/status"
cURL - v1.0 Legacy
curl -X POST http://localhost:3001/api/miniGenerate-signature \
-H "Content-Type: application/json" \
-d '{
"name": "Çağlar Şahin",
"fontStyle": "bresley"
}'
React Native - v2.0 SVG (Önerilen)
import React, { useState, useEffect } from 'react';
import { View } from 'react-native';
import { SvgUri, SvgXml } from 'react-native-svg';
const SignatureComponent = ({ name, fontId, size = 128 }) => {
const [svgContent, setSvgContent] = useState(null);
useEffect(() => {
const generateSVGSignature = async () => {
try {
const params = new URLSearchParams({
text: name,
fontId: fontId,
size: size.toString()
});
const response = await fetch(`http://192.168.1.9:3001/api/render/signature.svg?${params}`);
if (response.ok) {
const svgText = await response.text();
setSvgContent(svgText);
}
} catch (error) {
console.error('SVG imza oluşturma hatası:', error);
}
};
if (name && fontId) generateSVGSignature();
}, [name, fontId, size]);
return svgContent ? (
<View style={{ alignItems: 'center' }}>
<SvgXml xml={svgContent} width={256} height={160} />
</View>
) : null;
};
// PNG kullanımı (düşük cihazlar için)
const PNGSignatureComponent = ({ name, fontId }) => {
const [imageUri, setImageUri] = useState(null);
useEffect(() => {
const generatePNGSignature = async () => {
try {
const params = new URLSearchParams({
text: name,
fontId: fontId,
w: '512',
h: '256'
});
const url = `http://192.168.1.9:3001/api/render/signature.png?${params}`;
setImageUri(url);
} catch (error) {
console.error('PNG imza oluşturma hatası:', error);
}
};
if (name && fontId) generatePNGSignature();
}, [name, fontId]);
return imageUri ? (
<Image source={{ uri: imageUri }} style={{ width: 512, height: 256 }} />
) : null;
};
React Native - v1.0 Legacy
import { Image } from 'react-native';
const SignatureComponent = ({ name, style }) => {
const [signatureUri, setSignatureUri] = useState(null);
useEffect(() => {
const generateSignature = async () => {
try {
const response = await fetch('http://192.168.1.9:3001/api/miniGenerate-signature', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name, fontStyle: style })
});
const result = await response.json();
if (result.success) {
setSignatureUri(`data:image/png;base64,${result.data[0].b64_json}`);
}
} catch (error) {
console.error('İmza oluşturma hatası:', error);
}
};
if (name) generateSignature();
}, [name, style]);
return signatureUri ? (
<Image source={{ uri: signatureUri }} style={{ width: 300, height: 150 }} />
) : null;
};