definitions: handlers.AdminCreateUserRequest: properties: confirm_password: type: string email: type: string is_active: type: boolean is_admin: type: boolean password: minLength: 6 type: string username: minLength: 3 type: string required: - confirm_password - email - password - username type: object handlers.AdminIssueTokenRequest: properties: duration_days: maximum: 365 minimum: 1 type: integer required: - duration_days type: object handlers.AdminIssueTokenResponse: properties: access: type: string expires_at: type: string type: object handlers.AdminProfileResponse: properties: avatar_url: type: string first_name: type: string last_name: type: string user_id: type: integer type: object handlers.AdminUpdateUserRequest: properties: email: type: string is_active: type: boolean is_admin: type: boolean password: minLength: 6 type: string username: minLength: 3 type: string type: object handlers.AdminUserListResponse: properties: items: items: $ref: '#/definitions/handlers.adminUserResponse' type: array meta: $ref: '#/definitions/handlers.paginationMeta' type: object handlers.AdminUserResponse: properties: created_at: type: string email: type: string email_verified: type: boolean id: type: integer is_active: type: boolean is_admin: type: boolean updated_at: type: string username: type: string type: object handlers.AdminUserStatusRequest: properties: is_active: type: boolean required: - is_active type: object handlers.BlogCategoryListResponse: properties: count: type: integer items: items: $ref: '#/definitions/handlers.BlogCategoryResponse' type: array type: object handlers.BlogCategoryResponse: properties: description: type: string id: type: integer image: type: string is_active: type: boolean keywords: type: string order: type: integer slug: type: string title: type: string type: object handlers.BlogErrorResponse: properties: error: type: string type: object handlers.BlogListResponse: properties: count: type: integer items: items: $ref: '#/definitions/handlers.BlogPostResponse' type: array type: object handlers.BlogPostResponse: properties: content: type: string created_at: type: string id: type: integer image: type: string is_active: type: boolean is_front: type: boolean keywords: type: string slug: type: string title: type: string updated_at: type: string video: type: string type: object handlers.BlogTagListResponse: properties: count: type: integer items: items: $ref: '#/definitions/handlers.BlogTagResponse' type: array type: object handlers.BlogTagResponse: properties: id: type: integer is_active: type: boolean slug: type: string tag: type: string type: object handlers.ErrorResponse: properties: error: type: string type: object handlers.ImageErrorResponse: properties: error: type: string type: object handlers.ImageRecordResponse: properties: created_at: type: string file_name: type: string format: type: string height: type: integer id: type: integer mime_type: type: string mode: type: string public_path: type: string quality: type: integer size: type: integer url: type: string width: type: integer type: object handlers.ListImagesResponse: properties: count: type: integer items: items: $ref: '#/definitions/handlers.ImageRecordResponse' type: array type: object handlers.LoginRequest: properties: email: type: string password: type: string type: object handlers.MeResponse: properties: email: type: string user_id: {} username: type: string type: object handlers.MessageResponse: properties: message: type: string type: object handlers.ProcessImageResponse: properties: file_name: type: string format: type: string height: type: integer message: type: string mime_type: type: string public_path: type: string quality: type: integer size: type: integer url: type: string width: type: integer type: object handlers.ProfileResponse: properties: avatar_url: type: string first_name: type: string last_name: type: string user_id: type: integer type: object handlers.RefreshRequest: properties: refresh_token: type: string type: object handlers.RegisterRequest: properties: confirm_password: type: string email: type: string first_name: type: string last_name: type: string password: type: string username: type: string type: object handlers.RegisterResponse: properties: message: type: string verification_token: type: string verification_url: type: string type: object handlers.SocialLoginRequest: properties: access_token: type: string type: object handlers.SocialTokenResponse: properties: access: type: string message: type: string new_user: type: boolean provider: type: string refresh: type: string type: object handlers.TokenResponse: properties: access: description: JWT (HS256) access token type: string refresh: description: JWT (HS256) refresh token type: string type: object handlers.adminRequest: properties: is_admin: type: boolean type: object handlers.adminUserResponse: properties: created_at: type: string email: type: string email_verified: type: boolean id: type: integer is_active: type: boolean is_admin: type: boolean updated_at: type: string username: type: string type: object handlers.createCategoryRequest: properties: description: type: string image: type: string is_active: type: boolean keywords: type: string order: type: integer parent_id: type: integer title: minLength: 2 type: string required: - title type: object handlers.createPostRequest: properties: content: type: string image: type: string is_active: type: boolean is_front: type: boolean keywords: type: string title: minLength: 3 type: string video: type: string required: - title type: object handlers.createTagRequest: properties: is_active: type: boolean tag: minLength: 2 type: string required: - tag type: object handlers.paginationMeta: properties: limit: type: integer page: type: integer total: type: integer type: object handlers.updateCategoryRequest: properties: description: type: string image: type: string is_active: type: boolean keywords: type: string order: type: integer parent_id: type: integer title: type: string type: object handlers.updatePostRequest: properties: content: type: string image: type: string is_active: type: boolean is_front: type: boolean keywords: type: string title: type: string video: type: string type: object handlers.updateTagRequest: properties: is_active: type: boolean tag: type: string type: object mcp.HTTPRequest: properties: id: type: object jsonrpc: example: "2.0" type: string method: example: tools/list type: string params: additionalProperties: true type: object type: object mcp.HTTPResponse: properties: error: additionalProperties: true type: object id: type: object jsonrpc: example: "2.0" type: string result: additionalProperties: true type: object type: object mcp.UploadGuideErrorResponse: properties: error: example: file must be a markdown (.md) file type: string type: object mcp.UploadGuideResponse: properties: guide: example: my-guide.md type: string message: example: markdown guide uploaded type: string path: example: docs/mcp-tools/my-guide.md type: string type: object host: mcp.beyhano.net.tr info: contact: {} description: GinImage API dokumantasyonu. Legacy access token formatlari desteklenmez. title: Gin Image API version: "1.0" paths: /api/v1/admin/tokens/issue: post: consumes: - application/json description: Sadece admin rolü için, istekle verilen gün kadar geçerli access token üretir. Refresh token üretilmez. parameters: - description: Token süresi (gün) in: body name: request required: true schema: $ref: '#/definitions/handlers.AdminIssueTokenRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.AdminIssueTokenResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/handlers.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' security: - BearerAuth: [] summary: Admin için gün bazlı access token üretir tags: - admin-users /api/v1/admin/users: get: parameters: - default: 1 description: Sayfa numarasi in: query name: page type: integer - default: 10 description: Sayfa boyutu (max 100) in: query name: limit type: integer - description: Kullanici adi/email arama in: query name: search type: string - description: Admin filtresi in: query name: is_admin type: boolean - description: Aktiflik filtresi in: query name: is_active type: boolean produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.AdminUserListResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' security: - BearerAuth: [] summary: Admin kullanicilari listeler tags: - admin-users post: consumes: - application/json parameters: - description: Kullanici olusturma verisi in: body name: request required: true schema: $ref: '#/definitions/handlers.AdminCreateUserRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/handlers.AdminUserResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/handlers.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' security: - BearerAuth: [] summary: Admin panel icin kullanici olusturur tags: - admin-users /api/v1/admin/users/{id}: delete: parameters: - description: Kullanici ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.MessageResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/handlers.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' security: - BearerAuth: [] summary: Admin panel icin kullanici siler tags: - admin-users get: parameters: - description: Kullanici ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.AdminUserResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/handlers.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' security: - BearerAuth: [] summary: Admin panel icin kullanici detayi getirir tags: - admin-users put: consumes: - application/json parameters: - description: Kullanici ID in: path name: id required: true type: integer - description: Kullanici guncelleme verisi in: body name: request required: true schema: $ref: '#/definitions/handlers.AdminUpdateUserRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.AdminUserResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/handlers.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' security: - BearerAuth: [] summary: Admin panel icin kullaniciyi gunceller tags: - admin-users /api/v1/admin/users/{id}/profile: get: parameters: - description: Kullanici ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.AdminProfileResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/handlers.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' security: - BearerAuth: [] summary: Admin panel icin kullanicinin profilini getirir tags: - admin-users put: consumes: - multipart/form-data parameters: - description: Kullanici ID in: path name: id required: true type: integer - description: Ad in: formData name: first_name type: string - description: Soyad in: formData name: last_name type: string - description: Avatar dosyasi in: formData name: avatar type: file produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.AdminProfileResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/handlers.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' security: - BearerAuth: [] summary: Admin panel icin kullanici profilini gunceller tags: - admin-users /api/v1/admin/users/{id}/status: patch: consumes: - application/json parameters: - description: Kullanici ID in: path name: id required: true type: integer - description: Durum verisi in: body name: request required: true schema: $ref: '#/definitions/handlers.AdminUserStatusRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.AdminUserResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/handlers.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' security: - BearerAuth: [] summary: Admin panel icin kullanici aktiflik durumunu gunceller tags: - admin-users /api/v1/auth/login: post: consumes: - application/json parameters: - description: Giris verisi in: body name: request required: true schema: $ref: '#/definitions/handlers.LoginRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.TokenResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' summary: Kullanici girisi yapar tags: - auth /api/v1/auth/refresh: post: consumes: - application/json parameters: - description: Refresh token in: body name: request required: true schema: $ref: '#/definitions/handlers.RefreshRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.TokenResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' summary: Refresh token ile yeni token uretir tags: - auth /api/v1/auth/register: post: consumes: - application/json parameters: - description: Kayit verisi in: body name: request required: true schema: $ref: '#/definitions/handlers.RegisterRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/handlers.RegisterResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' summary: Kullanici kaydi olusturur tags: - auth /api/v1/auth/social/github: post: consumes: - application/json parameters: - description: GitHub access token in: body name: request required: true schema: $ref: '#/definitions/handlers.SocialLoginRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.SocialTokenResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' summary: GitHub access token ile giris veya kayit yapar tags: - auth /api/v1/auth/social/google: post: consumes: - application/json parameters: - description: Google access token in: body name: request required: true schema: $ref: '#/definitions/handlers.SocialLoginRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.SocialTokenResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' summary: Google access token ile giris veya kayit yapar tags: - auth /api/v1/auth/verify-email: get: parameters: - description: Dogrulama tokeni in: query name: token required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.TokenResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' summary: E-posta dogrulama tokeni ile hesabi aktif eder tags: - auth /api/v1/blogs: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.BlogListResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' summary: Public blog post listesini getirir tags: - blogs post: consumes: - application/json parameters: - description: Post bilgileri in: body name: request required: true schema: $ref: '#/definitions/handlers.createPostRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/handlers.BlogPostResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.BlogErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.BlogErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' security: - BearerAuth: [] summary: Admin blog post olusturur tags: - blogs /api/v1/blogs/{id}: delete: parameters: - description: Post ID in: path name: id required: true type: integer responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/handlers.BlogErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.BlogErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' security: - BearerAuth: [] summary: Admin blog post siler tags: - blogs put: consumes: - application/json parameters: - description: Post ID in: path name: id required: true type: integer - description: Guncellenecek alanlar in: body name: request required: true schema: $ref: '#/definitions/handlers.updatePostRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.BlogPostResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.BlogErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.BlogErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' security: - BearerAuth: [] summary: Admin blog post gunceller tags: - blogs /api/v1/blogs/{slug}: get: parameters: - description: Post slug in: path name: slug required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.BlogPostResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.BlogErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' summary: Public tekil blog postu getirir tags: - blogs /api/v1/blogs/categories: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.BlogCategoryListResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' summary: Public kategori listesini getirir tags: - blogs post: consumes: - application/json parameters: - description: Kategori bilgileri in: body name: request required: true schema: $ref: '#/definitions/handlers.createCategoryRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/handlers.BlogCategoryResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.BlogErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' security: - BearerAuth: [] summary: Admin kategori olusturur tags: - blogs /api/v1/blogs/categories/{id}: delete: parameters: - description: Kategori ID in: path name: id required: true type: integer responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/handlers.BlogErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.BlogErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' security: - BearerAuth: [] summary: Admin kategori siler tags: - blogs put: consumes: - application/json parameters: - description: Kategori ID in: path name: id required: true type: integer - description: Guncellenecek alanlar in: body name: request required: true schema: $ref: '#/definitions/handlers.updateCategoryRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.BlogCategoryResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.BlogErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.BlogErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' security: - BearerAuth: [] summary: Admin kategori gunceller tags: - blogs /api/v1/blogs/categories/{slug}: get: parameters: - description: Kategori slug in: path name: slug required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.BlogCategoryResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.BlogErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' summary: Public tekil kategori getirir tags: - blogs /api/v1/blogs/tags: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.BlogTagListResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' summary: Public tag listesini getirir tags: - blogs post: consumes: - application/json parameters: - description: Tag bilgileri in: body name: request required: true schema: $ref: '#/definitions/handlers.createTagRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/handlers.BlogTagResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.BlogErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' security: - BearerAuth: [] summary: Admin tag olusturur tags: - blogs /api/v1/blogs/tags/{id}: delete: parameters: - description: Tag ID in: path name: id required: true type: integer responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/handlers.BlogErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.BlogErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' security: - BearerAuth: [] summary: Admin tag siler tags: - blogs put: consumes: - application/json parameters: - description: Tag ID in: path name: id required: true type: integer - description: Guncellenecek alanlar in: body name: request required: true schema: $ref: '#/definitions/handlers.updateTagRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.BlogTagResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.BlogErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.BlogErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' security: - BearerAuth: [] summary: Admin tag gunceller tags: - blogs /api/v1/blogs/tags/{slug}: get: parameters: - description: Tag slug in: path name: slug required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.BlogTagResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.BlogErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.BlogErrorResponse' summary: Public tekil tag getirir tags: - blogs /api/v1/images: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.ListImagesResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ImageErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ImageErrorResponse' security: - BearerAuth: [] summary: Giris yapan kullanicinin kayitli resimlerini listeler tags: - images /api/v1/images/{id}: get: parameters: - description: Image ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.ImageRecordResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ImageErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ImageErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.ImageErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ImageErrorResponse' security: - BearerAuth: [] summary: Giris yapan kullanicinin tekil resim kaydini getirir tags: - images /api/v1/images/process: post: consumes: - multipart/form-data parameters: - description: Yuklenecek resim in: formData name: file required: true type: file - description: 'Hedef genislik (default: orijinal)' in: formData name: width type: integer - description: 'Hedef yukseklik (default: orijinal)' in: formData name: height type: integer - description: 'Kalite 1-100 (default: 90)' in: formData name: quality type: integer - description: 'avif|webp|png|jpg|jpeg (default: avif)' in: formData name: format type: string - description: true ise cover crop uygular in: formData name: cover type: boolean produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.ProcessImageResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ImageErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ImageErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ImageErrorResponse' security: - BearerAuth: [] summary: Resmi en, boy, kalite ve formata gore isler tags: - images /api/v1/mcp: delete: description: Stateless MCP server icin session teardown desteklenmez, 405 doner. produces: - application/json responses: "405": description: Method Not Allowed schema: type: string security: - BearerAuth: [] summary: MCP streamable DELETE endpoint tags: - mcp post: consumes: - application/json description: MCP isteklerini JSON-RPC 2.0 formatinda kabul eder. parameters: - description: MCP JSON-RPC request in: body name: request required: true schema: $ref: '#/definitions/mcp.HTTPRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/mcp.HTTPResponse' "400": description: Bad Request schema: $ref: '#/definitions/mcp.HTTPResponse' security: - BearerAuth: [] summary: MCP JSON-RPC endpoint tags: - mcp /api/v1/mcp/guides/upload: post: consumes: - multipart/form-data description: '`.md` dosyasini `docs/mcp-tools` altina kaydeder ve MCP tool''lari tarafindan okunabilir hale getirir.' parameters: - description: Yuklenecek markdown dosyasi in: formData name: file required: true type: file - description: 'Ayni isimli dosya varsa uzerine yazilsin mi? (default: false)' in: formData name: overwrite type: boolean produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/mcp.UploadGuideResponse' "400": description: Bad Request schema: $ref: '#/definitions/mcp.UploadGuideErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/mcp.UploadGuideErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/mcp.UploadGuideErrorResponse' security: - BearerAuth: [] summary: MCP markdown rehberi yukler tags: - mcp /api/v1/me: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.MeResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' security: - BearerAuth: [] summary: Giris yapan kullanicinin bilgilerini doner tags: - users /api/v1/me/profile: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.ProfileResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' security: - BearerAuth: [] summary: Giris yapan kullanicinin profilini getirir tags: - users put: consumes: - multipart/form-data parameters: - description: Ad in: formData name: first_name type: string - description: Soyad in: formData name: last_name type: string - description: Avatar dosyasi in: formData name: avatar type: file produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.ProfileResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' security: - BearerAuth: [] summary: Giris yapan kullanicinin profilini gunceller tags: - users /api/v1/users/{id}/admin: post: consumes: - application/json parameters: - description: Kullanici ID in: path name: id required: true type: integer - description: Admin durumu in: body name: request required: true schema: $ref: '#/definitions/handlers.adminRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.MessageResponse' "400": description: Bad Request schema: $ref: '#/definitions/handlers.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/handlers.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/handlers.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/handlers.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/handlers.ErrorResponse' security: - BearerAuth: [] summary: Kullanicinin admin yetkisini gunceller tags: - users schemes: - https securityDefinitions: BearerAuth: in: header name: Authorization type: apiKey swagger: "2.0"