281 lines
6.3 KiB
YAML
281 lines
6.3 KiB
YAML
basePath: /api/v1
|
|
definitions:
|
|
handlers.CreateOrderRequest:
|
|
properties:
|
|
items:
|
|
items:
|
|
properties:
|
|
product_id:
|
|
type: string
|
|
required:
|
|
- product_id
|
|
type: object
|
|
minItems: 1
|
|
type: array
|
|
required:
|
|
- items
|
|
type: object
|
|
handlers.CreateProductRequest:
|
|
properties:
|
|
description:
|
|
type: string
|
|
license_type:
|
|
type: string
|
|
price:
|
|
minimum: 0
|
|
type: number
|
|
product_type:
|
|
enum:
|
|
- track
|
|
- pack
|
|
- service
|
|
type: string
|
|
title:
|
|
type: string
|
|
track_id:
|
|
description: UUID string
|
|
type: string
|
|
required:
|
|
- price
|
|
- product_type
|
|
- title
|
|
type: object
|
|
marketplace.LicenseType:
|
|
enum:
|
|
- basic
|
|
- premium
|
|
- exclusive
|
|
type: string
|
|
x-enum-varnames:
|
|
- LicenseBasic
|
|
- LicensePremium
|
|
- LicenseExclusive
|
|
marketplace.Order:
|
|
properties:
|
|
buyer_id:
|
|
type: string
|
|
created_at:
|
|
type: string
|
|
currency:
|
|
type: string
|
|
id:
|
|
type: string
|
|
items:
|
|
items:
|
|
$ref: '#/definitions/marketplace.OrderItem'
|
|
type: array
|
|
payment_intent:
|
|
description: Stripe PaymentIntent ID
|
|
type: string
|
|
status:
|
|
description: pending, paid, failed, refunded
|
|
type: string
|
|
total_amount:
|
|
type: number
|
|
updated_at:
|
|
type: string
|
|
type: object
|
|
marketplace.OrderItem:
|
|
properties:
|
|
id:
|
|
type: string
|
|
order_id:
|
|
type: string
|
|
price:
|
|
type: number
|
|
product_id:
|
|
type: string
|
|
type: object
|
|
marketplace.Product:
|
|
properties:
|
|
created_at:
|
|
type: string
|
|
currency:
|
|
type: string
|
|
description:
|
|
type: string
|
|
id:
|
|
type: string
|
|
license_type:
|
|
$ref: '#/definitions/marketplace.LicenseType'
|
|
price:
|
|
type: number
|
|
product_type:
|
|
description: '"track", "pack", "service"'
|
|
type: string
|
|
seller_id:
|
|
type: string
|
|
status:
|
|
$ref: '#/definitions/marketplace.ProductStatus'
|
|
title:
|
|
type: string
|
|
track_id:
|
|
description: Liaison optionnelle avec un Track (si ProductType == "track")
|
|
type: string
|
|
updated_at:
|
|
type: string
|
|
type: object
|
|
marketplace.ProductStatus:
|
|
enum:
|
|
- draft
|
|
- active
|
|
- archived
|
|
type: string
|
|
x-enum-varnames:
|
|
- ProductStatusDraft
|
|
- ProductStatusActive
|
|
- ProductStatusArchived
|
|
host: localhost:8080
|
|
info:
|
|
contact:
|
|
email: support@veza.app
|
|
name: API Support
|
|
url: http://www.veza.app/support
|
|
description: Backend API for Veza platform.
|
|
license:
|
|
name: Apache 2.0
|
|
url: http://www.apache.org/licenses/LICENSE-2.0.html
|
|
termsOfService: http://swagger.io/terms/
|
|
title: Veza Backend API
|
|
version: 1.2.0
|
|
paths:
|
|
/api/v1/marketplace/download/{product_id}:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get a secure download URL for a purchased product
|
|
parameters:
|
|
- description: Product ID
|
|
in: path
|
|
name: product_id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
"403":
|
|
description: No license
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
"404":
|
|
description: Not Found
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
security:
|
|
- BearerAuth: []
|
|
summary: Get download URL
|
|
tags:
|
|
- Marketplace
|
|
/api/v1/marketplace/orders:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Purchase products
|
|
parameters:
|
|
- description: Order items
|
|
in: body
|
|
name: order
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/handlers.CreateOrderRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"201":
|
|
description: Created
|
|
schema:
|
|
$ref: '#/definitions/marketplace.Order'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
security:
|
|
- BearerAuth: []
|
|
summary: Create a new order
|
|
tags:
|
|
- Marketplace
|
|
/api/v1/marketplace/products:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: List marketplace products with filters
|
|
parameters:
|
|
- description: Product status
|
|
in: query
|
|
name: status
|
|
type: string
|
|
- description: Seller ID
|
|
in: query
|
|
name: seller_id
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/marketplace.Product'
|
|
type: array
|
|
summary: List products
|
|
tags:
|
|
- Marketplace
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Create a product (Track, Pack, Service) for sale
|
|
parameters:
|
|
- description: Product info
|
|
in: body
|
|
name: product
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/handlers.CreateProductRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"201":
|
|
description: Created
|
|
schema:
|
|
$ref: '#/definitions/marketplace.Product'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
security:
|
|
- BearerAuth: []
|
|
summary: Create a new product
|
|
tags:
|
|
- Marketplace
|
|
securityDefinitions:
|
|
BearerAuth:
|
|
in: header
|
|
name: Authorization
|
|
type: apiKey
|
|
swagger: "2.0"
|