מפרט בלבד
לתיעוד הקיים ולקליטת מפתחים חדשים.
6,000₪
- מפרט OpenAPI מלא
- דוח ודאות
- מסירה תוך 48 שעות
ל-CTO ולראשי צוותי פיתוח
מפרט OpenAPI מלא ו-SDK עם טיפוסים ל-TypeScript ול-Python, משוחזרים מתוך סשן של האפליקציה שלכם שאתם מאשרים לנו לצפות בו. הצוות שלכם מתחבר בלי לנחש, וקוד המקור נשאר אצלכם.
עוד לא מוכנים? נסו את הגרסה החינמית, כולה בדפדפן: HAR → OpenAPI + SDK →
POST /v2/orders
201
authorization: Bearer ••••••••מוסתר
{
"customer_id": "cus_8f2a",
"items": [{ "sku": "BX-12", "qty": 2 }],
"coupon": null
}
openapi.yaml
OrderCreate:
type: object
required: [customer_id, items] # seen 14/14
properties:
customer_id: { type: string }
items:
type: array
items:
$ref: "#/components/schemas/LineItem"
coupon:
type: [string, "null"] # null 9×/14
אף אחד כבר לא יודע מה /v1/sync מחזיר, וכל הצוות מפחד לגעת בו.
בלי תיעוד, הוא מבלה את השבוע הראשון בקריאת קוד. עם המפרט, הוא קורא את החוזה תוך שעה.
ה-SDK עם הטיפוסים מחליף ניסוי וטעייה ב-Postman וצילומי מסך שמסתובבים בסלאק.
Contour קורא את התעבורה של הסשן שלכם, מסתיר את הסודות, ומסיק את חוזה ה-API עם ציון ודאות לכל פעולה.
יום 0
עמוד אחד: איזו אפליקציה, איזו סביבה, לכמה זמן. שום דבר לא מוקלט לפני החתימה.
מיום 0 עד יום 2
אתם מייצאים סשן של האפליקציה (קובץ HAR, כמה קליקים בדפדפן) או פותחים לנו חשבון בדיקה. Contour מקבץ את הקריאות ומסיק את הסכמות.
יום 2
מפרט, SDK ודוח ודאות. עושים commit, והצוות עובד עם זה עוד באותו יום.
ארבעה קבצים, קריאים גם למפתחים וגם לכלים שלכם. תצוגה מקדימה של חבילה לדוגמה, על API הזמנות בדיוני.
openapi: 3.1.0
info:
title: Orders API (internal)
version: 2.0.0
x-generated-by: contour
servers:
- url: https://staging.example.com
paths:
/v2/orders:
post:
operationId: createOrder
summary: Creates an order
security: [{ bearerAuth: [] }]
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/OrderCreate"
responses:
"201": { $ref: "#/components/responses/Order" }
"422": { $ref: "#/components/responses/Invalid" }
x-confidence: 0.96 # 14 calls observed
# … 23 more operations
// Generated by Contour: native fetch, zero dependencies
export interface OrderCreate {
customer_id: string;
items: LineItem[];
coupon?: string | null;
}
export class OrdersApi {
constructor(private base: string, private token: string) {}
/** POST /v2/orders: creates an order */
async createOrder(body: OrderCreate): Promise<Order> {
const res = await fetch(`${this.base}/v2/orders`, {
method: "POST",
headers: {
Authorization: `Bearer ${this.token}`,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
if (!res.ok) throw new ApiError(res.status, await res.json());
return res.json();
}
// … 23 more typed methods
}
# Generated by Contour: standard library only, Python 3.11+
import json
import urllib.request
from typing import NotRequired, Optional, TypedDict
class OrderCreate(TypedDict):
customer_id: str
items: list["LineItem"]
coupon: NotRequired[Optional[str]]
class OrdersApi:
def __init__(self, base: str, token: str) -> None:
self.base, self.token = base, token
def create_order(self, body: OrderCreate) -> "Order":
req = urllib.request.Request(
f"{self.base}/v2/orders",
data=json.dumps(body).encode(),
method="POST",
headers={"Authorization": f"Bearer {self.token}",
"Content-Type": "application/json"},
)
with urllib.request.urlopen(req) as res:
return json.load(res)
# … 23 more typed methods
# Contour report: Orders API
Sessions: 3 Calls analyzed: 412 Operations: 24
## Confidence per operation
| Operation | Seen | Confidence |
|------------------------|------|----------------|
| GET /v2/orders/{id} | 31× | 0.98 |
| POST /v2/orders | 14× | 0.96 |
| PATCH /v2/orders/{id} | 2× | 0.61 to review |
## To complete
- PATCH /v2/orders/{id}: only 2 calls,
`status` values may be incomplete.
- /v1/legacy/*: no calls in the session.
A 10-minute session on the Export screen will do.
## Masked before analysis
- 3 Authorization headers, 1 session cookie
- 27 personal values (emails, phone numbers)
פורמטים: OpenAPI 3.1, TypeScript 5, Python 3.11+. המפרט נפתח כמו שהוא ב-Swagger UI, ב-Redoc או ב-Postman.
Contour קורא רק את תעבורת ה-HTTP של סשן שאתם מאשרים. הדרך הפשוטה ביותר: סביבת ה-staging, חשבון בדיקה ונתונים בדיוניים.
יכולת פעולה הדדית בלבד, על API שבבעלותכם או שאתם מורשים לשלב. אף פעם לא קוד מקור.
הסכם חתום בכתב לפני כל הקלטה. הוא מגן עליכם לא פחות משהוא מגן עלינו.
טוקנים, פרטי גישה ומידע אישי מוסרים לפני כל ניתוח על ידי מודל.
מגדירים את ההיקף יחד בשיחה, ואתם יוצאים עם הצעת מחיר מחייבת.
רוצים לראות לפני שיחה? הכלי החינמי מהדר את ה־HAR שלכם מקומית, תוך שניות. · המהדר בקוד פתוח
לתיעוד הקיים ולקליטת מפתחים חדשים.
6,000₪
כדי שאפליקציה או מפתח חדש יתחברו מיד.
9,900₪
כדי שנבצע את החיבור יחד עם הצוות שלכם.
החל מ־12,000₪
לא בטוחים איזו חבילה מתאימה? נחליט יחד בשיחה.
המסגרת בנויה בדיוק לזה: אנחנו מתעדים את הממשק של API שבבעלותכם, או שהחוזה שלכם מתיר לכם לשלב, מתוך סשנים שיש לכם זכות לצפות בהם. בלי עקיפה של מנגנוני הגנה, בלי גישה לקוד המקור, ועם הסכם חתום בכתב לפני כל הקלטה. יש ספק לגבי הזכויות שלכם? נברר את זה בשיחה, לפני כל הצעת מחיר.
האפשרות הבטוחה ביותר, וזו שאנחנו ממליצים עליה: סביבת ה-staging, חשבון בדיקה ונתונים בדיוניים. שום מידע אמיתי לא יוצא. אם אתם עובדים מול ה-production, טוקנים, פרטי גישה ומידע אישי מוסתרים לפני כל ניתוח על ידי מודל, והדוח מפרט כל מה שהוסתר.
שני ימי עבודה, מהרגע שההסכם חתום והסשן אצלנו. זה סדר הגודל הנכון לרוב ה-API הפנימיים. אם שלכם גדול יותר, נגיד לכם את זה בשיחה, והצעת המחיר תציין את זה במפורש.
שלושה דברים: הסכם ההרשאה החתום (אנחנו שולחים לכם תבנית), סשן שעובר על המסכים המרכזיים של האפליקציה, כקובץ HAR או דרך חשבון בדיקה, ועשרים דקות כדי לספר לנו מה חשוב. זהו.
הוא לא יופיע במפרט: אנחנו לא מנחשים. דוח הוודאות מפרט מה נצפה, כמה פעמים, ומה עוד צריך לכסות. סשן משלים אחד מספיק כדי לסגור את הפערים.
כי אתם לא צריכים לפתוח את ה-repo שלכם לספק חיצוני. וכי הסשן מראה מה ה-API שלכם עושה בפועל, לא מה הקוד היה אמור לעשות.
אתם מתארים את ה-API שתוקע אתכם. אנחנו בוחנים איתכם את ההיקף ואומרים לכם אם זה אפשרי. אם כן, אתם יוצאים עם הצעת מחיר מחייבת. השיחה ללא עלות וללא התחייבות. לקביעת 20 הדקות
עשרים דקות. אם זה אפשרי, אתם יוצאים עם הצעת מחיר מחייבת. אם לא, תדעו למה.
20 דקות בווידאו. כתבו איזה API תקוע אצלכם ומתי נוח לכם: דוד עמור יציע מועד תוך יום עסקים, והצעת מחיר סופית בסוף השיחה.