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