Files
ginimageApi/docs/swagger.yaml
Beyhan Oğur e04ba85564 first commit
2026-04-26 21:40:14 +03:00

1874 lines
46 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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"