openapi: 3.0.0
info:
  title: LLM Analysis Plugin API
  version: 1.0.0
paths:
  /api/settings/llm/providers:
    get:
      summary: List configured LLM providers
      responses:
        '200':
          description: List of providers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LLMProviderConfig'
    post:
      summary: Create or update a provider
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LLMProviderConfigInput'
      responses:
        '200':
          description: Created/Updated provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LLMProviderConfig'

  /api/git/generate-message:
    post:
      summary: Generate commit message from diff
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                diff:
                  type: string
                files:
                  type: array
                  items:
                    type: string
                recent_commits:
                  type: array
                  items:
                    type: string
      responses:
        '200':
          description: Generated message
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string

components:
  schemas:
    LLMProviderConfig:
      type: object
      properties:
        id:
          type: string
          format: uuid
        provider_type:
          type: string
          enum: [openai, openrouter, kilo]
        name:
          type: string
        base_url:
          type: string
        default_model:
          type: string
        is_active:
          type: boolean
    LLMProviderConfigInput:
      type: object
      properties:
        provider_type:
          type: string
        name:
          type: string
        base_url:
          type: string
        api_key:
          type: string
        default_model:
          type: string