215 lines
4.9 KiB
YAML
215 lines
4.9 KiB
YAML
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"
|