{
  "openapi": "3.0.1",
  "info": {
    "title": "RealPayment External API",
    "description": "API להתממשקות עם RealPayment - תשלומים, מסמכים, לקוחות ותהליכי מכירה. מתאים ל-CRM, E-commerce ומערכות חיצוניות.",
    "version": "0.1",
    "contact": {
      "name": "RealPayment",
      "url": "https://realpayment.co.il"
    }
  },
  "servers": [
    {
      "url": "https://us-central1-yakirvakninpayment.cloudfunctions.net/api",
      "description": "Cloud Functions (מומלץ)"
    },
    {
      "url": "https://realpayment.co.il/api",
      "description": "Firebase Hosting"
    }
  ],
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "API Key מהגדרות RealPayment (פורמט: rp_live_...)"
      }
    },
    "schemas": {
      "CreatePaymentRequest": {
        "type": "object",
        "required": ["amount", "description"],
        "properties": {
          "amount": { "type": "number", "description": "סכום בשקלים (1-10000000)" },
          "description": { "type": "string", "description": "תיאור התשלום" },
          "customerName": { "type": "string" },
          "customerPhone": { "type": "string", "description": "פורמט: 05XXXXXXXX" },
          "customerEmail": { "type": "string" },
          "numOfPayments": { "type": "number", "default": 1, "description": "מספר תשלומים (1-36)" },
          "currency": { "type": "string", "default": "ILS" },
          "webhookUrl": { "type": "string", "description": "URL לעדכוני סטטוס" },
          "metadata": { "type": "object" },
          "recurringData": {
            "type": "object",
            "properties": {
              "isAutoRecurringPayment": { "type": "boolean" },
              "frequency": { "type": "string", "enum": ["daily", "weekly", "monthly", "yearly"] },
              "interval": { "type": "number" },
              "totalBills": { "type": "number" },
              "startDate": { "type": "string", "format": "date" }
            }
          }
        }
      },
      "CreateCustomerRequest": {
        "type": "object",
        "required": ["name"],
        "properties": {
          "name": { "type": "string" },
          "phone": { "type": "string" },
          "email": { "type": "string" },
          "address": { "type": "string" },
          "company": { "type": "string" },
          "taxId": { "type": "string" },
          "notes": { "type": "string" }
        }
      },
      "SalesProcessActivateRequest": {
        "type": "object",
        "required": ["customerName", "customerPhone", "price"],
        "properties": {
          "customerName": { "type": "string" },
          "customerPhone": { "type": "string" },
          "price": { "type": "number" },
          "productName": { "type": "string" },
          "customerEmail": { "type": "string" },
          "templateId": { "type": "string" },
          "metadata": { "type": "object" }
        }
      }
    }
  },
  "paths": {
    "/external/create-payment": {
      "post": {
        "summary": "יצירת קישור תשלום",
        "description": "יוצר קישור תשלום חדש. תומך בתשלום רגיל ותשלום חוזר אוטומטי.",
        "tags": ["Payments"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/CreatePaymentRequest" }
            }
          }
        },
        "responses": {
          "200": { "description": "הצלחה - paymentUrl, returnValue, paymentId" },
          "400": { "description": "שגיאת validation" },
          "401": { "description": "API Key חסר או לא תקין" },
          "429": { "description": "Rate limit" }
        }
      }
    },
    "/external/create-invoice": {
      "post": {
        "summary": "יצירת חשבונית מס",
        "tags": ["Documents"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["customerName", "items"],
                "properties": {
                  "customerName": { "type": "string" },
                  "customerPhone": { "type": "string" },
                  "customerEmail": { "type": "string" },
                  "items": { "type": "array", "items": { "type": "object" } },
                  "notes": { "type": "string" },
                  "dueDate": { "type": "string", "format": "date" }
                }
              }
            }
          }
        },
        "responses": { "200": { "description": "invoiceId, pdfUrl, totalAmount" } }
      }
    },
    "/external/create-quote": {
      "post": {
        "summary": "יצירת הצעת מחיר",
        "tags": ["Documents"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["customerName", "items"],
                "properties": {
                  "customerName": { "type": "string" },
                  "customerPhone": { "type": "string" },
                  "customerEmail": { "type": "string" },
                  "items": { "type": "array" },
                  "notes": { "type": "string" },
                  "validUntil": { "type": "string", "format": "date" }
                }
              }
            }
          }
        },
        "responses": { "200": { "description": "quoteId, pdfUrl, totalAmount" } }
      }
    },
    "/external/create-receipt": {
      "post": {
        "summary": "יצירת קבלה",
        "tags": ["Documents"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["customerName", "amount"],
                "properties": {
                  "customerName": { "type": "string" },
                  "amount": { "type": "number" },
                  "description": { "type": "string" },
                  "paymentMethod": { "type": "string" }
                }
              }
            }
          }
        },
        "responses": { "200": { "description": "receiptId, pdfUrl" } }
      }
    },
    "/external/payment-status/{paymentId}": {
      "get": {
        "summary": "סטטוס תשלום",
        "tags": ["Payments"],
        "parameters": [
          { "name": "paymentId", "in": "path", "required": true, "schema": { "type": "string" } }
        ],
        "responses": { "200": { "description": "payment object עם status" } }
      }
    },
    "/external/analytics": {
      "get": {
        "summary": "אנליטיקס שימוש",
        "tags": ["Analytics"],
        "parameters": [
          { "name": "days", "in": "query", "schema": { "type": "number", "default": 30 } }
        ],
        "responses": { "200": { "description": "calls, revenue, wallet, daily" } }
      }
    },
    "/external/documents": {
      "get": {
        "summary": "רשימת מסמכים",
        "tags": ["Documents"],
        "parameters": [
          { "name": "type", "in": "query", "schema": { "type": "string", "enum": ["invoice", "quote", "receipt"] } },
          { "name": "limit", "in": "query", "schema": { "type": "number", "default": 50 } }
        ],
        "responses": { "200": { "description": "documents array" } }
      }
    },
    "/external/document/{id}": {
      "get": {
        "summary": "מסמך בודד",
        "tags": ["Documents"],
        "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
        "responses": { "200": { "description": "document object" } }
      },
      "put": {
        "summary": "עדכון מסמך",
        "tags": ["Documents"],
        "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
        "requestBody": { "content": { "application/json": { "schema": { "type": "object" } } } },
        "responses": { "200": { "description": "success" } }
      },
      "delete": {
        "summary": "מחיקת מסמך",
        "tags": ["Documents"],
        "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
        "responses": { "200": { "description": "success" } }
      }
    },
    "/external/document/{id}/send": {
      "post": {
        "summary": "שליחת מסמך ללקוח",
        "tags": ["Documents"],
        "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["channel"],
                "properties": {
                  "channel": { "type": "string", "enum": ["whatsapp", "email"] },
                  "phone": { "type": "string" },
                  "email": { "type": "string" },
                  "message": { "type": "string" }
                }
              }
            }
          }
        },
        "responses": { "200": { "description": "success, sentVia, sentTo" } }
      }
    },
    "/external/document/{id}/signature-status": {
      "get": {
        "summary": "סטטוס חתימה",
        "tags": ["Signatures"],
        "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
        "responses": { "200": { "description": "signatureStatus, signedAt, signerName" } }
      }
    },
    "/external/create-signature-link": {
      "post": {
        "summary": "יצירת קישור חתימה",
        "tags": ["Signatures"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["documentId"],
                "properties": {
                  "documentId": { "type": "string" },
                  "signerName": { "type": "string" },
                  "signerPhone": { "type": "string" }
                }
              }
            }
          }
        },
        "responses": { "200": { "description": "signatureLink, expiresAt" } }
      }
    },
    "/external/customers": {
      "get": {
        "summary": "רשימת לקוחות",
        "tags": ["Customers"],
        "parameters": [
          { "name": "limit", "in": "query", "schema": { "type": "number", "default": 50 } },
          { "name": "search", "in": "query", "schema": { "type": "string" } }
        ],
        "responses": { "200": { "description": "customers array" } }
      },
      "post": {
        "summary": "יצירת לקוח",
        "tags": ["Customers"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/CreateCustomerRequest" }
            }
          }
        },
        "responses": { "200": { "description": "customerId, customer" } }
      }
    },
    "/external/customers/{id}": {
      "get": {
        "summary": "לקוח בודד",
        "tags": ["Customers"],
        "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
        "responses": { "200": { "description": "customer object" } }
      },
      "put": {
        "summary": "עדכון לקוח",
        "tags": ["Customers"],
        "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
        "requestBody": { "content": { "application/json": { "schema": { "type": "object" } } } },
        "responses": { "200": { "description": "success" } }
      }
    },
    "/external/sales-process/activate": {
      "post": {
        "summary": "הפעלת תהליך מכירה",
        "description": "מפעיל תהליך מכירה אוטומטי: הצעת מחיר → חתימה → תשלום → קבלה",
        "tags": ["Sales Process"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/SalesProcessActivateRequest" }
            }
          }
        },
        "responses": { "200": { "description": "processId, status, quoteId" } }
      }
    },
    "/external/sales-process/status/{processId}": {
      "get": {
        "summary": "סטטוס תהליך מכירה",
        "tags": ["Sales Process"],
        "parameters": [{ "name": "processId", "in": "path", "required": true, "schema": { "type": "string" } }],
        "responses": { "200": { "description": "process object" } }
      }
    },
    "/external/sales-process/list": {
      "get": {
        "summary": "רשימת תהליכי מכירה",
        "tags": ["Sales Process"],
        "parameters": [
          { "name": "status", "in": "query", "schema": { "type": "string" } },
          { "name": "limit", "in": "query", "schema": { "type": "number", "default": 50 } }
        ],
        "responses": { "200": { "description": "processes array" } }
      }
    },
    "/external/webhook/test": {
      "post": {
        "summary": "בדיקת Webhook",
        "tags": ["Webhooks"],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": { "testUrl": { "type": "string" } }
              }
            }
          }
        },
        "responses": { "200": { "description": "success" } }
      }
    }
  },
  "tags": [
    { "name": "Payments", "description": "תשלומים וקישורי תשלום" },
    { "name": "Documents", "description": "חשבוניות, הצעות מחיר, קבלות" },
    { "name": "Customers", "description": "ניהול לקוחות" },
    { "name": "Signatures", "description": "חתימות דיגיטליות" },
    { "name": "Sales Process", "description": "תהליכי מכירה אוטומטיים" },
    { "name": "Analytics", "description": "אנליטיקס" },
    { "name": "Webhooks", "description": "עדכוני סטטוס" }
  ]
}
