upload
This commit is contained in:
@@ -0,0 +1,214 @@
|
||||
openapi: 3.0.3
|
||||
info:
|
||||
title: CRM Linear Demo API
|
||||
version: 1.0.0
|
||||
description: |
|
||||
Demo OpenAPI for a strict linear CRM scenario:
|
||||
1) get recent leads,
|
||||
2) qualify leads,
|
||||
3) prepare offers,
|
||||
4) send offers.
|
||||
servers:
|
||||
- url: http://demo-api:8010
|
||||
- url: http://localhost:8010
|
||||
paths:
|
||||
/crm/leads/recent:
|
||||
get:
|
||||
operationId: getRecentLeads
|
||||
tags: [crm-linear-workflow]
|
||||
summary: Get recent leads
|
||||
parameters:
|
||||
- in: query
|
||||
name: limit
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
minimum: 1
|
||||
maximum: 50
|
||||
default: 20
|
||||
- in: query
|
||||
name: source
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: Leads list
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/RecentLeadsResponse"
|
||||
|
||||
/crm/leads/qualify:
|
||||
post:
|
||||
operationId: qualifyLeadsForOffer
|
||||
tags: [crm-linear-workflow]
|
||||
summary: Qualify leads
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/QualifyLeadsRequest"
|
||||
responses:
|
||||
"200":
|
||||
description: Qualified leads
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/QualifyLeadsResponse"
|
||||
|
||||
/crm/offers/prepare:
|
||||
post:
|
||||
operationId: prepareOffersForLeads
|
||||
tags: [crm-linear-workflow]
|
||||
summary: Prepare offers from qualified leads
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/PrepareOffersRequest"
|
||||
responses:
|
||||
"200":
|
||||
description: Prepared offers
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/PrepareOffersResponse"
|
||||
|
||||
/crm/offers/send:
|
||||
post:
|
||||
operationId: sendPreparedOffers
|
||||
tags: [crm-linear-workflow]
|
||||
summary: Send prepared offers
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/SendOffersRequest"
|
||||
responses:
|
||||
"200":
|
||||
description: Send summary
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/SendOffersResponse"
|
||||
|
||||
components:
|
||||
schemas:
|
||||
Lead:
|
||||
type: object
|
||||
required: [lead_id, email, source]
|
||||
properties:
|
||||
lead_id:
|
||||
type: string
|
||||
email:
|
||||
type: string
|
||||
format: email
|
||||
source:
|
||||
type: string
|
||||
|
||||
QualifiedLead:
|
||||
type: object
|
||||
required: [lead_id, email, score, tier]
|
||||
properties:
|
||||
lead_id:
|
||||
type: string
|
||||
email:
|
||||
type: string
|
||||
format: email
|
||||
score:
|
||||
type: integer
|
||||
tier:
|
||||
type: string
|
||||
|
||||
PreparedOffer:
|
||||
type: object
|
||||
required: [offer_id, lead_id, channel, message]
|
||||
properties:
|
||||
offer_id:
|
||||
type: string
|
||||
lead_id:
|
||||
type: string
|
||||
channel:
|
||||
type: string
|
||||
message:
|
||||
type: string
|
||||
|
||||
RecentLeadsResponse:
|
||||
type: object
|
||||
required: [leads]
|
||||
properties:
|
||||
leads:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/Lead"
|
||||
|
||||
QualifyLeadsRequest:
|
||||
type: object
|
||||
required: [leads]
|
||||
properties:
|
||||
leads:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/Lead"
|
||||
|
||||
QualifyLeadsResponse:
|
||||
type: object
|
||||
required: [qualified_leads]
|
||||
properties:
|
||||
qualified_leads:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/QualifiedLead"
|
||||
|
||||
PrepareOffersRequest:
|
||||
type: object
|
||||
required: [qualified_leads]
|
||||
properties:
|
||||
qualified_leads:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/QualifiedLead"
|
||||
|
||||
PrepareOffersResponse:
|
||||
type: object
|
||||
required: [offers]
|
||||
properties:
|
||||
offers:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/PreparedOffer"
|
||||
|
||||
SendOffersRequest:
|
||||
type: object
|
||||
required: [offers]
|
||||
properties:
|
||||
offers:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/PreparedOffer"
|
||||
|
||||
FailedLeadDelivery:
|
||||
type: object
|
||||
required: [lead_id, reason]
|
||||
properties:
|
||||
lead_id:
|
||||
type: string
|
||||
reason:
|
||||
type: string
|
||||
|
||||
SendOffersResponse:
|
||||
type: object
|
||||
required: [sent_count, failed_count, failed]
|
||||
properties:
|
||||
sent_count:
|
||||
type: integer
|
||||
failed_count:
|
||||
type: integer
|
||||
failed:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/FailedLeadDelivery"
|
||||
Reference in New Issue
Block a user