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"
