🖋️ Signature Maker API v2.0

SVG-First Modern İmza API'si - Interaktif Dokümantasyon ve Test Arayüzü

📋 Genel Bakış

Base URL: http://localhost:3001/api

Server Durumu

Kontrol ediliyor...

API Versiyonları

Response Format

{ "success": true, "data": {...}, "timestamp": "2024-01-15T10:30:00.000Z" }

🚀 v2.0 Yenilikler

✨ Ana Özellikler

🔧 Teknik İyileştirmeler

📊 Performance Karşılaştırması

v1.0 (Canvas) → v2.0 (SVG) Türkçe Karakter → Dönüştürme → Native Çıktı Kalitesi → Raster → Vektör Dosya Boyutu → ~15KB PNG → ~2KB SVG Render Süresi → ~200ms → ~150ms Ligatür/Kerning → ❌ → ✅ Ölçeklenebilirlik → ❌ → ✅

🔗 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ü

SVG İmza Oluştur

📄 PDF Upload Sistemi

Özellikler

Test Arayüzü

PDF Upload Testi

PDF Listesi

🧪 API Test Arayüzü

Health Check Testi

App Config Testi

Stilleri Listeleme Testi

İmza Oluşturma Testi

Özel API Testi

🎨 Mevcut İmza Stilleri

💻 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; };