Kirish Ro'yxatdan o'tish

API

Ochiq API hujjati

Goxost blogidagi ochiq ma'lumotlarni o'z saytingiz yoki dasturingizga olib o'tish uchun. Ro'yxatdan o'ting, kabinetda kalit oling va boshlang.

Boshlash

API faqat o'qish uchun: barcha so'rovlar GET. Ma'lumot JSON ko'rinishida qaytadi. Asosiy manzil:

https://goxost.net/api/public/v1
Kalitsiz ham sinab ko'rishingiz mumkin — kuniga 50 ta so'rovgacha.

Kalit va ruxsatlar

Kalitni so'rovga ikki usulda qo'shish mumkin. Ikkalasi ham bir xil ishlaydi:

Authorization: Bearer gx_a1B2c3D4e5F6g7H8i9J0k1L2m3N4o5P6

X-Api-Key: gx_a1B2c3D4e5F6g7H8i9J0k1L2m3N4o5P6
Kalitni manzil satrida (?api_key=) yubormang — u brauzer tarixiga va server loglariga tushib qoladi.

Har bir kalitga ruxsatlar biriktiriladi. Kalitda kerakli ruxsat bo'lmasa, javob 403 bo'ladi:

Ruxsat Nimaga ochadi
blog:read Maqolalar — Nashr qilingan maqolalar ro'yxati va to'liq matni
taxonomy:read Kategoriya va teglar — Kategoriyalar va teglar ro'yxati, har birida nechta maqola borligi
authors:read Mualliflar — Maqola mualliflarining ochiq ma'lumoti: ismi, foydalanuvchi nomi va rasmi

Chegaralar

Ikki xil chegara bir vaqtda ishlaydi:

Kim Kuniga
Kalitsiz (IP bo'yicha) 50
Kalit bilan 100
Kalit bilan (administrator) 1000
Daqiqalik Daqiqasiga 30 ta so'rov
Kunlik chegara foydalanuvchiga tegishli, kalitga emas — bir nechta kalit yaratish chegarani oshirmaydi.

Har bir javobda chegara holati sarlavhalarda qaytadi:

X-Quota-Limit: 100
X-Quota-Used: 37
X-Quota-Remaining: 63
X-Quota-Reset: 1786579199

Javob formati

Barcha javoblar bir xil ko'rinishda. Muvaffaqiyatli javob:

{
  "success": true,
  "data": { }
}

Xato yuz berganda:

{
  "success": false,
  "message": "Maqola topilmadi."
}

Ro'yxat qaytaradigan endpointlarda sahifalash ma'lumoti meta ichida bo'ladi:

{
  "success": true,
  "data": {
    "items": [ ],
    "meta": { "page": 1, "per_page": 15, "last_page": 4, "total": 52 }
  }
}

Endpointlar

GET /api/public/v1

API haqida qisqa ma'lumot: mavjud endpointlar, ruxsatlar va chegaralar.

Parametrlar

Parametrsiz

Javob namunasi

{
    "success": true,
    "data": {
        "name": "Goxost ochiq API",
        "version": "v1",
        "endpoints": [
            "GET /posts",
            "GET /categories",
            "…"
        ]
    }
}
GET /api/public/v1/me

Kalitingiz holati: qaysi ruxsatlari bor va bugun kvotadan qancha ishlatilgan.

Parametrlar

Parametrsiz

Javob namunasi

{
    "success": true,
    "data": {
        "key": {
            "name": "Saytim uchun",
            "prefix": "gx_a1B2c3D4",
            "scopes": [
                "blog:read"
            ]
        },
        "quota": {
            "limit": 100,
            "used": 37,
            "remaining": 63
        }
    }
}
GET /api/public/v1/posts blog:read

Nashr qilingan maqolalar ro'yxati. Kategoriya, teg, muallif bo'yicha filtrlash va qidirish mumkin.

Parametrlar

Parametr Turi Tavsif
category string Kategoriya slugi. /categories dan olinadi.
tag string Teg. Bo'shliq o'rniga chiziqcha ham qabul qilinadi.
author string Muallifning foydalanuvchi nomi (username).
q string Qidiruv so'zi. Sarlavha, tavsif va teglar bo'yicha qidiriladi.
sort string Tartib: new (sukut bo'yicha), old, popular.
per_page integer Bir sahifadagi yozuvlar soni. 1 dan 50 gacha, sukut bo'yicha 15.
page integer Sahifa raqami, 1 dan boshlanadi.

Javob namunasi

{
    "success": true,
    "data": {
        "items": [
            {
                "slug": "hosting-tanlash",
                "title": "Hosting tanlashda nimaga qarash kerak",
                "description": "Qisqacha tavsif…",
                "cover": "https://goxost.net/posters/1.webp",
                "views": 1240,
                "tags": [
                    "hosting",
                    "maslahat"
                ],
                "category": {
                    "name": "Hosting",
                    "slug": "hosting"
                },
                "author": {
                    "name": "Xurshidbek",
                    "username": "xurshid"
                },
                "url": "https://goxost.net/uz/post/hosting-tanlash",
                "published_at": "2026-08-01T10:00:00+05:00"
            }
        ],
        "meta": {
            "page": 1,
            "per_page": 15,
            "last_page": 4,
            "total": 52
        }
    }
}
GET /api/public/v1/posts/{slug} blog:read

Bitta maqolaning to'liq matni. HTML xavfsizlik uchun tozalangan holda beriladi.

Parametrlar

Parametr Turi Tavsif
slug string Maqolaning slugi — ro'yxatdagi slug maydoni.

Javob namunasi

{
    "success": true,
    "data": {
        "slug": "hosting-tanlash",
        "title": "Hosting tanlashda nimaga qarash kerak",
        "content": "<p>Maqola matni…</p>",
        "tags": [
            "hosting"
        ],
        "seo": {
            "meta_title": "…",
            "meta_description": "…"
        },
        "published_at": "2026-08-01T10:00:00+05:00"
    }
}
GET /api/public/v1/categories taxonomy:read

Barcha kategoriyalar va har birida nechta nashr qilingan maqola borligi.

Parametrlar

Parametrsiz

Javob namunasi

{
    "success": true,
    "data": [
        {
            "name": "Hosting",
            "slug": "hosting",
            "posts_count": 24,
            "url": "https://goxost.net/uz/category/hosting"
        }
    ]
}
GET /api/public/v1/tags taxonomy:read

Teglar ro'yxati, maqolalar soni bo'yicha kamayish tartibida.

Parametrlar

Parametrsiz

Javob namunasi

{
    "success": true,
    "data": [
        {
            "name": "hosting",
            "slug": "hosting",
            "posts_count": 31,
            "url": "https://goxost.net/uz/tags/hosting"
        }
    ]
}
GET /api/public/v1/authors authors:read

Nashr qilingan maqolasi bor mualliflar. Faqat ochiq ma'lumot: ism, foydalanuvchi nomi, rasm.

Parametrlar

Parametr Turi Tavsif
per_page integer Bir sahifadagi yozuvlar soni. 1 dan 50 gacha, sukut bo'yicha 15.
page integer Sahifa raqami, 1 dan boshlanadi.

Javob namunasi

{
    "success": true,
    "data": {
        "items": [
            {
                "name": "Xurshidbek",
                "username": "xurshid",
                "avatar": "https://goxost.net/avatars/x.webp",
                "posts_count": 12
            }
        ],
        "meta": {
            "page": 1,
            "per_page": 15,
            "last_page": 1,
            "total": 3
        }
    }
}
GET /api/public/v1/authors/{username} authors:read

Bitta muallif haqida ochiq ma'lumot.

Parametrlar

Parametr Turi Tavsif
username string Muallifning foydalanuvchi nomi.

Javob namunasi

{
    "success": true,
    "data": {
        "name": "Xurshidbek",
        "username": "xurshid",
        "avatar": "https://goxost.net/avatars/x.webp",
        "posts_count": 12
    }
}

Xatolar

Kod Qachon
400 So'rov parametri noto'g'ri (masalan, per_page juda katta).
401 Kalit yaroqsiz yoki bekor qilingan.
403 Kalitda kerakli ruxsat yo'q.
404 So'ralgan maqola yoki muallif topilmadi.
422 Parametrlar tekshiruvdan o'tmadi — errors ichida sababi yozilgan.
429 Chegara tugadi: kunlik kvota yoki daqiqalik limit.
500 Serverdagi kutilmagan xatolik. Takrorlansa, bizga yozing.

Misollar

Quyidagi misollarda gx_… o'rniga o'z kalitingizni qo'ying.

curl -H "Authorization: Bearer gx_a1B2c3D4e5F6g7H8i9J0k1L2m3N4o5P6" \
     -H "Accept: application/json" \
     "https://goxost.net/api/public/v1/posts?per_page=5&sort=popular"
Savol yoki taklif bo'lsa — kabinetdagi qo'llab-quvvatlash bo'limi orqali yozing.