Pengenalan

Glosarium menyediakan Antarmuka Pemrograman Aplikasi (Application Programming Interface/API) untuk memberikan kemudahan bagi pengembang yang ingin membuat perangkat lunak baru di pelantar yang berbeda. Seperti perangkat bergerak misalnya.

Saat ini fitur yang disediakan pada APA Glosarium hanya sebatas baca data, khususnya bagian kata dan kategori (bidang).

Untuk dapat mengakses APA Glosarium, pengembang diharuskan mendaftar terlebih dahulu sebagai kontributor di aplikasi web Glosarium. Adapaun halaman registrasi dapat diakses melalui tautan ini.

Hampir sebagian besar contoh skrip pada dokumentasi ini menggunakan bahasa pemrograman PHP dan librari HTTP Client versi 2.

Fitur APA

Terdapat tiga fitur baru dalam APA versi Beta, yaitu:

  1. Memungkinkan mendaftarkan kontributor baru melalui aplikasi.
  2. Memungkinkan penggunakaan token berdasarkan kontributor lain yang terdaftar dan masuk melalui aplikasi.
  3. Pengajuan proposal untuk kata baru melalui APA

Selain penambahan tiga fitur utama di atas, pada versi Beta juga terdapat perbahan mayor struktur data kembalian dari API. Masing-masing struktur data, dapat dilihat pada bagian respon tiap fitur di bawah.

Memperbarui API dari versi Alpha ke versi Beta

Berikut beberapa langkah memperbarui APA dari versi Alpha ke versi Beta.

Mengubah titik akhir (endpoint) pada tautan APA

Jika sebelumnya menggunakan titik akhir seperti contoh berikut:

          
/api/glosarium/word
/api/glosarium/category
etc...
          
        

Maka titik akhir untuk versi Beta diubah menjadi berikut

          
/api/beta/glosarium/word
/api/beta/glosarium/category
etc...
          
        

Melakukan pengecekan pada kembalian header

Di versi Alpha, terdapat header khusus yang dikirim oleh server sebagai informasi versi yang digunakan, misal:

        
Content-Type: application/vnd.glosarium.api.v1+json
        
      

Di versi Beta, ada sedikit perubahan nilai pada header tersebut. Hal ini untuk memberitahukan pada pengembang bahwa adanya perubahan versi.

        
Content-Type: application/vnd.glosarium.api.v2-beta+json
        
      

Menyesuaikan struktur data

Perubahan yang cukup signifikan di versi Beta adalah struktur data yang dikembalikan pada klien. Adapun, contoh struktur data tersebut dapat dilihat pada masing-masing fitur di bawah.


Registrasi sebagai Kontributor

Peringatan!

Glosarium berhak memroses secara hukum apabila terdapat pelanggaran atau penyalahgunaan data kontributor atau calon kontributor yang dilakukan oleh pengembang aplikasi.

Pengembang dapat menyediakan fitur registrasi kontributor pada aplikasinya. Kontributor sendiri nanti dapat berpartisipasi untuk mengajukan proposal kata baru, jajak pendapat, forum, dan lain sebagainya.

Aplikasi yang dibuat pengembang hanya berperan untuk meneruskan data calon kontibutor ke APA Glosarium.

Setiap kontributor terdaftar, akan memiliki token sendiri. Token ini nantinya akan dimanfaatkan untuk melakukan permintaan ke APA Glosarium.

        
POST /api/beta/user/register HTTP/1.1
Host: glosarium.web.id
Content-Type: application/vnd.glosarium.api.v2-beta+json

{
  "data": {
    "name": "Indah Kirana",
    "username": "indah-kirana-3",
    "type": "contributor",
    "createdAt": "2017-03-27T15:08:24+07:00",
    "updatedAt": "2017-03-27T15:08:24+07:00"
  }
}
        
      
Data Jenis Keterangan
name string
username string
email string
password string
confirmPassword string
        
$client = new http\Client;
$request = new http\Client\Request;

$token = 'your-token';

$body = new http\Message\Body;
$body->addForm(array(
  'password' => 'your-password',
  'confirmPassword' => 'your-password',
  'name' => 'Indah Kirana',
  'email' => 'indahksss@gmail.com'
), NULL);

$request->setRequestUrl('http://glosarium.dev/api/user/register');
$request->setRequestMethod('POST');
$request->setBody($body);

$request->setQuery(new http\QueryString(array(
  'token' => $token
)));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
        
      

Indeks Kategori

Untuk mendapatkan indeks kategori, dapat mengirimkan beberapa data dengan metode GET. Respon dari indeks kategori menampilkan informasi total kategori, tautan halaman, dan data kategori itu sendiri.

              
GET /api/glosarium/category?token=your-token HTTP/1.1
Host: glosarium.web.id
Content-Type: application/vnd.glosarium.api.v1+json

{
    "total": 54,
    "per_page": 20,
    "current_page": 2,
    "last_page": 3,
    "next_page_url": "http:\/\/glosarium.web.id\/api\/glosarium\/category?&token=your-token&page=3",
    "prev_page_url": "http:\/\/glosarium.web.id\/api\/glosarium\/category?&token=your-token&page=1",
    "from": 21,
    "to": 40,
    "data": [
        {
            "id": 2,
            "slug": "kimia",
            "name": "Kimia",
            "description": "Kimia adalah cabang dari ilmu ...",
            "metadata": {
                "icon": "fa fa-flask"
            },
            "url": "http:\/\/glosarium.web.id\/category\/kimia",
            "updated_diff": "3 bulan yang lalu"
        },
        {
            "id": 26,
            "slug": "komunikasi-massa",
            "name": "Komunikasi Massa",
            "description": "Komunikasi massa adalah proses di ...",
            "metadata": {
                "icon": "fa fa-comments"
            },
            "url": "http:\/\/glosarium.web.id\/category\/komunikasi-massa",
            "updated_diff": "3 bulan yang lalu"
        }
    ]
}
              
          
Nama Jenis Data Keterangan
limit integer Jumlah data yang akan ditampikan, antara 1 sampai 25 data
page integer Indeks halaman yang dituju
sort string Urutkan kata berdasar, asc atau desc
              
$client = new http\Client;
$request = new http\Client\Request;

$token = 'your-token';

$request->setRequestUrl('http://glosarium.web.id/api/glosarium/category');
$request->setRequestMethod('GET');
$request->setQuery(new http\QueryString(array(
  'token' => $token,
  'page' => 1
)));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
              
          

Rincian Kategori

Dari daftar indeks kategori yang didapat, pengembang dapat melakukan permintaan rincian kategori. Parameter yang akan digunakan untuk melakukan permintaan adalah slug.

              
POST /api/glosarium/category/agama-islam?token=your-token HTTP/1.1
Host: glosarium.web.id
Content-Type: application/vnd.glosarium.api.v1+json

{
    "id": 32,
    "slug": "agama-islam",
    "name": "Agama Islam",
    "description": "Islam (Arab: al-islām, الإسلام: \"berserah diri kepada Tuhan\") ...",
    "metadata": {
        "icon": "fa fa-moon-o"
    },
    "words_count": 3542,
    "url": "http:\/\/glosarium.web.id\/category\/agama-islam",
    "updated_diff": "3 bulan yang lalu"
}
              
          
Nama Jenis Data Keterangan
slug string
              
$client = new http\Client;
$request = new http\Client\Request;

$token = 'your-token';
$slug = 'agama-islam';

$request->setRequestUrl('http://glosarium.web.id/api/glosarium/category/'. $slug);
$request->setRequestMethod('GET');
$request->setQuery(new http\QueryString(array(
  'token' => $token
)));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
              
          

Pencarian Kategori

Pengembang juga dapat melakukan pencarian kategori berdasarkan kata kunci. Permintaanya tidak jauh berbeda dengan indeks kategori, hanya dibutuhkan tambahan query berupa keyword. Jumlah data pencarian bukan hanya satu, tapi banyak, dan formatnya tidak jauh berbeda dengan indeks kategori.

              
POST /api/glosarium/category/search?keyword=tekno&token=your-token HTTP/1.1
Host: glosarium.web.id
Content-Type: application/vnd.glosarium.api.v1+json

{
    "total": 1,
    "per_page": 20,
    "current_page": 1,
    "last_page": 1,
    "next_page_url": null,
    "prev_page_url": null,
    "from": 1,
    "to": 1,
    "data": [
        {
            "id": 1,
            "slug": "teknologi-informasi",
            "name": "Teknologi Informasi",
            "description": "Teknologi Informasi (TI), ...",
            "metadata": {
                "icon": "fa fa-desktop"
            },
            "url": "http:\/\/glosarium.web.id\/category\/teknologi-informasi",
            "updated_diff": "3 bulan yang lalu"
        }
    ]
}
              
          
Nama Jenis Data Keterangan
keyword string Kata kunci pencarian
limit integer Jumlah data yang akan ditampikan, antara 1 sampai 25 data
page integer Indeks halaman yang dituju
sort string Urutkan kata berdasar, asc atau desc
        
$client = new http\Client;
$request = new http\Client\Request;

$token = 'your-token';
$keyword = 'tekno';

$request->setRequestUrl('http://glosarium.web.id/api/glosarium/category/search');
$request->setRequestMethod('GET');
$request->setQuery(new http\QueryString(array(
  'token' => $token,
  'keyword' => $keyword
)));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
        
      

Kategori Acak

Pengembang juga bisa mendapatkan kategori secara acak. Respo data yang dikembalikan hanya satu data. Formanya sama dengan rincian kategori.

        
GET /api/glosarium/category/random?token=your-token HTTP/1.1
Host: glosarium.web.id
Content-Type: application/vnd.glosarium.api.v1+json

{
  "id": 21,
  "slug": "antropologi",
  "name": "Antropologi",
  "description": "Antropologi adalah ilmu tentang manusia...",
  "metadata": {
    "icon": "fa fa-bookmark"
  },
  "words_count": 3703,
  "url": "http:\/\/glosarium.web.id\/category\/antropologi",
  "updated_diff": "3 bulan yang lalu"
}
        
      

Tidak ada data yang dikirim pada permintaan ini.

      
$client = new http\Client;
$request = new http\Client\Request;

$token = 'your-token';

$request->setRequestUrl('http://glosarium.web.id/api/glosarium/category/random');
$request->setRequestMethod('GET');
$request->setQuery(new http\QueryString(array(
  'token' => $token
)));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
      
    

Indeks Kata

Pengembang dapat menggunakan APA indeks kata untuk menampilkan semua kata yang dipecah ke dalam beberapa halaman.

        
GET /api/glosarium/word?page=1&limit=1&token=your-token HTTP/1.1
Host: glosarium.web.id
Content-Type: application/vnd.glosarium.api.v1+json

{
  "total": 209341,
  "per_page": "2",
  "current_page": 1,
  "last_page": 104671,
  "next_page_url": "http:\/\/glosarium.web.id\/api\/glosarium\/word?page=2",
  "prev_page_url": null,
  "from": 1,
  "to": 2,
  "data": [
    {
      "slug": "transmisi-akustik",
      "origin": " Acoustic Transmission",
      "locale": "Transmisi Akustik",
      "lang": "en",
      "spell": null,
      "has_description": false,
      "url": "http:\/\/glosarium.web.id\/fisika\/transmisi-akustik",
      "updated_diff": "19 jam yang lalu",
      "short_url": "http:\/\/glosarium.web.id\/3xpkt",
      "edit_url": "http:\/\/glosarium.web.id\/admin\/glosarium\/word\/216925\/edit",
      "category": {
        "id": 3,
        "slug": "fisika",
        "name": "Fisika",
        "description": "Fisika (bahasa Yunani: φυσικός (fysikós)...",
        "metadata": {
          "icon": "fa fa-bookmark"
        },
        "url": "http:\/\/glosarium.web.id\/category\/fisika",
        "updated_diff": "3 bulan yang lalu"
      },
      "description": null
    },
    {
      "slug": "momentum-pemeliharaan",
      "origin": " Maintaining Momentum",
      "locale": "Momentum Pemeliharaan",
      "lang": "en",
      "spell": "",
      "has_description": false,
      "url": "http:\/\/glosarium.web.id\/pendidikan\/momentum-pemeliharaan",
      "updated_diff": "23 jam yang lalu",
      "short_url": "http:\/\/glosarium.web.id\/2l6ms",
      "edit_url": "http:\/\/glosarium.web.id\/admin\/glosarium\/word\/173904\/edit",
      "category": {
        "id": 31,
        "slug": "pendidikan",
        "name": "Pendidikan",
        "description": "Pendidikan adalah pembelajaran pengetahuan...",
        "metadata": {
          "icon": "fa fa-graduation-cap"
        },
        "url": "http:\/\/glosarium.web.id\/category\/pendidikan",
        "updated_diff": "3 bulan yang lalu"
      },
      "description": null
    }
  ]
}
        
      
Data Jenis Keterangan
limit integer Jumlah data yang akan ditampikan, antara 1 sampai 25 data
sort string Urutkan kata berdasar, asc atau desc
page integer Indeks halaman
                
$client = new http\Client;
$request = new http\Client\Request;

$token = 'your-token';

$request->setRequestUrl('http://glosarium.web.id/api/glosarium/word');
$request->setRequestMethod('GET');
$request->setQuery(new http\QueryString(array(
  'token' => $token,
  'page' => '1'
)));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
                
            

Rincian Kata

Setiap indeks kata, dilengkapi dengan informasi slug. Slug ini dapat digunakan untuk mendapatkan rincian tiap kata. Setiap respon berhasil akan mengembalikan satu data kata. Sedangkan apanila permintaan gagal, APA akan mengembalikan data kosong dengan status 404.

        
GET /api/glosarium/word/data?token=your-token HTTP/1.1
Host: glosarium.web.id
Content-Type: application/vnd.glosarium.api.v1+json

{
  "slug": "data",
  "origin": "Data",
  "locale": "Data",
  "lang": "en",
  "spell": "\/da-ta\/",
  "has_description": true,
  "url": "http:\/\/glosarium.web.id\/teknologi-informasi\/data",
  "updated_diff": "3 bulan yang lalu",
  "short_url": "http:\/\/glosarium.web.id\/2in",
  "edit_url": "http:\/\/glosarium.web.id\/admin\/glosarium\/word\/833\/edit",
  "category": {
    "id": 1,
    "slug": "teknologi-informasi",
    "name": "Teknologi Informasi",
    "description": "Teknologi Informasi (TI), atau...",
    "metadata": {
      "icon": "fa fa-desktop"
    },
    "url": "http:\/\/glosarium.web.id\/category\/teknologi-informasi",
    "updated_diff": "3 bulan yang lalu"
  },
  "description": {
    "id": 10,
    "word_id": 833,
    "title": "Data",
    "description": "Data adalah catatan atas kumpulan fakta...,
    "vote_up": 1,
    "vote_down": 0
  }
}
        
      

Tidak ada data yang dikirim pada permintaan ini.

                
$client = new http\Client;
$request = new http\Client\Request;

$token = 'your-token';
$slug = 'data';

$request->setRequestUrl('http://glosarium.web.id/api/glosarium/word/'. $slug);
$request->setRequestMethod('GET');
$request->setQuery(new http\QueryString(array(
  'token' => $token
)));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
                
            

Pencarian Kata

Sama halnya dengan kategori, kata juga dapat dicari dengan menyertakan kata kunci dalam permintaan.

        
GET /api/glosarium/word/search?keyword=data&token=your-token HTTP/1.1
Host: glosarium.web.id
Content-Type: application/vnd.glosarium.api.v1+json

{
  "total": 785,
  "per_page": "2",
  "current_page": 1,
  "last_page": 393,
  "next_page_url": "http:\/\/glosarium.web.id\/api\/glosarium\/word\/search?keyword=data&limit=2&token=your-token&page=2",
  "prev_page_url": null,
  "from": 1,
  "to": 2,
  "data": [
    {
      "slug": "data-4",
      "origin": "Data",
      "locale": "Data",
      "lang": "en",
      "spell": "\/da-ta\/",
      "has_description": true,
      "url": null,
      "updated_diff": "3 bulan yang lalu",
      "short_url": "http:\/\/glosarium.web.id\/2kts2",
      "edit_url": "http:\/\/glosarium.web.id\/admin\/glosarium\/word\/171776\/edit"
    },
    {
      "slug": "data-6",
      "origin": "Data",
      "locale": "Data",
      "lang": "en",
      "spell": null,
      "has_description": true,
      "url": null,
      "updated_diff": "2 bulan yang lalu",
      "short_url": "http:\/\/glosarium.web.id\/3xb61",
      "edit_url": "http:\/\/glosarium.web.id\/admin\/glosarium\/word\/214289\/edit"
    }
  ]
}


        
      
Data Jenis Keterangan
keyword string Kata kunci pencarian
limit integer Jumlah data yang akan ditampikan, antara 1 sampai 25 data
sort string Urutkan kata berdasar, asc atau desc
                
$client = new http\Client;
$request = new http\Client\Request;

$token = 'your-token';

$request->setRequestUrl('http://glosarium.web.id/api/glosarium/word/search');
$request->setRequestMethod('GET');
$request->setQuery(new http\QueryString(array(
  'token' => $token,
  'keyword' => 'data'
)));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
                
            

Kata Acak

Pengembang juga bisa mendapatkan kategori secara acak. Respo data yang dikembalikan hanya satu data. Formanya sama dengan rincian kategori.

        
GET /api/glosarium/word/random?token=your-token HTTP/1.1
Host: glosarium.web.id
Content-Type: application/vnd.glosarium.api.v1+json

{
  "slug": "asam-lemak-1",
  "origin": "Fatty Acid",
  "locale": "Asam Lemak",
  "lang": "en",
  "spell": "",
  "has_description": true,
  "url": "http:\/\/glosarium.web.id\/biologi\/asam-lemak-1",
  "updated_diff": "3 bulan yang lalu",
  "short_url": "http:\/\/glosarium.web.id\/f3vk",
  "edit_url": "http:\/\/glosarium.web.id\/admin\/glosarium\/word\/48234\/edit",
  "category": {
    "id": 5,
    "slug": "biologi",
    "name": "Biologi",
    "description": "Biologi adalah kajian tentang kehidupan...",
    "metadata": {
      "icon": "fa fa-bug"
    },
    "url": "http:\/\/glosarium.web.id\/category\/biologi",
    "updated_diff": "3 bulan yang lalu"
  },
  "description": null
}
        
      
Data Jenis Keterangan
category string Masukkan slug kategori untuk kata acak pada kategori tertentu
        
$client = new http\Client;
$request = new http\Client\Request;

$token = 'your-token';

$request->setRequestUrl('http://glosarium.web.id/api/glosarium/word/random');
$request->setRequestMethod('GET');
$request->setQuery(new http\QueryString(array(
  'token' => $token,
  'category' => 'teknologi-informasi'
)));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();