{
    "openapi": "3.0.3",
    "info": {
        "title": "MenoriGadget RESTful API",
        "description": "API untuk publikasi artikel review gadget dan integrasi Hermes AI Agent. Catatan: Link affiliate tidak perlu diisi oleh AI Agent.",
        "version": "1.0.0"
    },
    "servers": [
        {
            "url": "https://gadget.menorishop.com/api/v1",
            "description": "Server API MenoriGadget"
        }
    ],
    "paths": {
        "/reviews": {
            "get": {
                "summary": "List artikel ulasan",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 20
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "category",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Daftar ulasan berhasil diambil"
                    }
                }
            },
            "post": {
                "summary": "Posting artikel ulasan baru (Hermes Agent)",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "title",
                                    "content",
                                    "image_url"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string"
                                    },
                                    "content": {
                                        "type": "string"
                                    },
                                    "summary": {
                                        "type": "string"
                                    },
                                    "product_name": {
                                        "type": "string"
                                    },
                                    "brand": {
                                        "type": "string"
                                    },
                                    "category": {
                                        "type": "string",
                                        "example": "smartphone"
                                    },
                                    "price": {
                                        "type": "string",
                                        "example": "Rp 14.999.000"
                                    },
                                    "price_range": {
                                        "type": "string",
                                        "enum": [
                                            "budget",
                                            "midrange",
                                            "flagship"
                                        ]
                                    },
                                    "verdict_badge": {
                                        "type": "string",
                                        "example": "Editor's Choice"
                                    },
                                    "pros": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "cons": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "specs": {
                                        "type": "object"
                                    },
                                    "image_url": {
                                        "type": "string",
                                        "description": "URL foto asli/real produk (https://...) atau Base64 data URI (data:image/...). Wajib foto asli, dilarang preset SVG.",
                                        "example": "https://images.unsplash.com/photo-1598327105666-5b89351aff97"
                                    },
                                    "author_name": {
                                        "type": "string",
                                        "default": "Hermes AI Agent"
                                    },
                                    "is_featured": {
                                        "type": "integer",
                                        "enum": [
                                            0,
                                            1
                                        ]
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Artikel ulasan berhasil diterbitkan"
                    },
                    "422": {
                        "description": "Validasi gagal"
                    },
                    "401": {
                        "description": "Unauthorized / API Key tidak valid"
                    }
                }
            }
        },
        "/reviews/{id}": {
            "get": {
                "summary": "Detail artikel ulasan",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Detail ulasan ditemukan"
                    },
                    "404": {
                        "description": "Artikel tidak ditemukan"
                    }
                }
            },
            "put": {
                "summary": "Edit / perbarui artikel ulasan",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Artikel berhasil diperbarui"
                    }
                }
            },
            "delete": {
                "summary": "Hapus artikel ulasan",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Artikel berhasil dihapus"
                    }
                }
            }
        },
        "/webhook": {
            "post": {
                "summary": "Inbound webhook untuk Hermes Agent",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Aksi webhook berhasil dijalankan"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "BearerAuth": {
                "type": "http",
                "scheme": "bearer",
                "bearerFormat": "API-Key"
            }
        }
    },
    "security": [
        {
            "BearerAuth": []
        }
    ]
}