Dokumen ini ditujukan bagi developer yang ingin menulis library klien, plugin IDE, dan alat lainnya untuk berinteraksi dengan Google API. Layanan Penemuan Google API memungkinkan Anda melakukan semua hal di atas dengan mengekspos metadata yang dapat dibaca mesin tentang Google API lainnya melalui API sederhana. Panduan ini memberikan ringkasan tentang setiap bagian dokumen Discovery, serta tips bermanfaat tentang cara menggunakan dokumen.
Semua panggilan ke API adalah permintaan REST berbasis JSON yang tidak diautentikasi dan menggunakan SSL—dengan kata lain, URL dimulai dengan https
.
Format dokumen Discovery
Bagian ini memberikan ringkasan tentang dokumen Discovery.
Semua contoh di bawah menggunakan dokumen Discovery dari
Service Usage API.
Anda dapat memuat
Dokumen penemuan
untuk Service Usage API dengan menjalankan permintaan GET
ini:
GET https://serviceusage.googleapis.com/$discovery/rest?version=v1
Format dokumen Discovery mencakup informasi yang terbagi dalam enam kategori utama:
- Deskripsi dasar API.
- Informasi Autentikasi untuk API.
- Detail resource dan skema yang menjelaskan data API.
- Detail tentang metode API.
- Informasi tentang fitur kustom yang didukung oleh API.
- Dokumentasi inline yang menjelaskan elemen utama API.
Setiap bagian dokumen Discovery ini dijelaskan di bawah.
Deskripsi API Dasar
Dokumen Discovery berisi kumpulan properti khusus API. Properti ini tidak selalu muncul dalam urutan ini, atau di bagian yang sama dalam dokumen penemuan:
"id": "serviceusage:v1", "canonicalName": "Service Usage", "revision": "20240331", "servicePath": "", "baseUrl": "https://serviceusage.googleapis.com/", "kind": "discovery#restDescription", "description": "Enables services that service consumers want to use on Google Cloud Platform, lists the available or enabled services, or disables services that service consumers no longer use.", "ownerDomain": "google.com", "version_module": true, "version": "v1", "fullyEncodeReservedExpansion": true, "name": "serviceusage", "title": "Service Usage API", "discoveryVersion": "v1", "rootUrl": "https://serviceusage.googleapis.com/", "protocol": "rest"
Properti level API ini mencakup detail tentang versi API tertentu, termasuk
name
, version
, title
, dan
description
. protocol
selalu memiliki nilai tetap
rest
, karena API Discovery Service hanya mendukung metode RESTful untuk mengakses
API.
Kolom servicePath
menunjukkan awalan jalur untuk versi API
tertentu ini.
Autentikasi
Bagian auth
berisi detail tentang cakupan autentikasi OAuth 2.0 untuk API. Untuk
mempelajari lebih lanjut cara menggunakan cakupan dengan OAuth 2.0, buka Menggunakan
OAuth 2.0 untuk Mengakses Google API.
Bagian auth
berisi bagian oauth2
dan scopes
bertingkat. Bagian scopes
adalah pemetaan kunci/nilai dari nilai cakupan ke detail
selengkapnya tentang cakupan:
"auth": { "oauth2": { "scopes": { "https://www.googleapis.com/auth/cloud-platform": { "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account." }, "https://www.googleapis.com/auth/cloud-platform.read-only": { "description": "View your data across Google Cloud services and see the email address of your Google Account" }, "https://www.googleapis.com/auth/service.management": { "description": "Manage your Google API service configuration" } } } }
Bagian auth
hanya menentukan cakupan untuk API tertentu. Untuk mempelajari cara cakupan ini dikaitkan dengan metode API, lihat bagian Metode di bawah.
Referensi dan skema
Operasi API bertindak pada objek data yang disebut resources
. Dokumen Discovery
dibuat berdasarkan konsep resource. Setiap dokumen Discovery memiliki bagian resources
level teratas yang mengelompokkan semua resource yang terkait dengan API. Misalnya, Service Usage API memiliki resource services
dan
resource operations
di bagian resources
tingkat atas:
"resources": { "services": { // Methods associated with the services resource } "operations": { // Methods associated with the operations resource } }
Di dalam setiap bagian resource terdapat metode yang terkait dengan resource tersebut. Misalnya, Service Usage API memiliki enam metode yang terkait dengan resource services
: get
, enable
, disable
, batchGet
,
batchEnable
, dan list
.
Skema memberi tahu Anda tampilan resource dalam API. Setiap dokumen Discovery memiliki
bagian schemas
tingkat atas, yang berisi pasangan nama/nilai ID skema ke
objek. ID skema bersifat unik per API, dan digunakan untuk mengidentifikasi skema secara unik di bagian methods
dokumen Discovery. Misalnya, berikut beberapa
skema dalam dokumen Penemuan API Penggunaan Layanan:
"schemas": { "Method": { // JSON schema of the Method resource }, "Authentication": { // JSON schema of the Authentication resource }, "RubySettings": { // JSON schema of the RubySettings resource }, "EnableServiceResponse": { // JSON schema of the EnableServiceResponse resource } }
Layanan Penemuan API menggunakan Skema JSON
draf-03 untuk representasi skemanya. Berikut adalah cuplikan Skema
JSON untuk resource EnableServiceResponse
, beserta
GoogleApiServiceusagev1Service
yang dirujuknya. Bersama skema ini adalah
bagian dari respons sebenarnya untuk permintaan guna mengaktifkan Pub/Sub API
(pubsub.googleapis.com
).
EnableServiceResponse Skema JSON Resource: |
Respons sebenarnya untuk mengaktifkan layanan: |
"EnableServiceResponse": { "id": "EnableServiceResponse", "description": "Response message for the `EnableService` method. This response message is assigned to the `response` field of the returned Operation when that operation is done.", "properties": { "service": { "description": "The new state of the service after enabling.", "$ref": "GoogleApiServiceusageV1Service" } }, "type": "object" }, "GoogleApiServiceusageV1Service": { "description": "A service that is available for use by the consumer.", "properties": { "config": { "$ref": "GoogleApiServiceusageV1ServiceConfig", "description": "The service configuration of the available service. Some fields may be filtered out of the configuration in responses to the `ListServices` method. These fields are present only in responses to the `GetService` method." }, "name": { "type": "string", "description": "The resource name of the consumer and service. A valid name would be: - projects/123/services/serviceusage.googleapis.com" }, " |
"response": { "@type": "type.googleapis.com/google.api.serviceusage.v1.EnableServiceResponse", "service": { "name": "projects/232342569935/services/pubsub.googleapis.com", "config": { "name": "pubsub.googleapis.com", "title": "Cloud Pub/Sub API", "documentation": { "summary": "Provides reliable, many-to-many, asynchronous messaging between applications.\n" }, "quota": {}, "authentication": {}, "usage": { "requirements": [ "serviceusage.googleapis.com/tos/cloud" ] }, "monitoring": {} }, " |
Kolom yang dicetak tebal menunjukkan pemetaan antara Skema JSON dan respons sebenarnya.
Seperti yang ditunjukkan dalam contoh ini, skema dapat berisi referensi ke skema lain. Jika Anda mem-build
library klien, hal ini dapat membantu Anda membuat model objek API secara efektif dalam class
model data Anda. Pada contoh EnableServiceResponse
di atas, properti service
adalah referensi ke skema dengan ID GoogleApiServiceusageV1Service
,
skema lain dalam dokumen Discovery API Penggunaan Layanan. Anda dapat mengganti properti GoogleApiServiceusageV1Service
di resource EnableServiceResponse
dengan nilai skema GoogleApiServiceusageV1Service
(perhatikan bahwa sintaksis $ref
berasal dari spesifikasi Skema JSON).
Metode juga dapat mereferensikan skema saat menunjukkan isi permintaan dan responsnya. Lihat bagian Metode untuk mengetahui detail selengkapnya.
Metode
Inti dokumen Discovery dibuat berdasarkan metode. Metode adalah operasi yang dapat dilakukan pada API. Anda akan menemukan bagian methods
di berbagai area
dokumen Discovery, termasuk di tingkat teratas (yang kami sebut metode tingkat API) atau di
tingkat resources
.
"methods": { // API-level methods } "resources": { "resource1": { "methods": { // resource-level methods } "resources": { "nestedResource": { "methods": { // methods can even be found in nested-resources } } } } }
Meskipun API dapat memiliki metode tingkat API, resource harus memiliki bagian methods
.
Setiap bagian methods
adalah peta nilai kunci dari nama metode ke detail lain tentang
metode tersebut. Contoh di bawah mendokumentasikan tiga metode, get
, enable
,
dan disable
:
"methods": { "get": { //details about the "get" method }, "enable": { //details about the "enable" method }, "disable": { //details about the "disable" method } }
Terakhir, setiap bagian metode menjelaskan berbagai properti tentang metode tersebut. Berikut adalah
contoh metode enable
:
"enable": { "path": "v1/{+name}:enable", "request": { "$ref": "EnableServiceRequest" }, "parameterOrder": [ "name" ], "id": "serviceusage.services.enable", "response": { "$ref": "Operation" }, "description": "Enable a service so that it can be used with a project.", "httpMethod": "POST", "flatPath": "v1/{v1Id}/{v1Id1}/services/{servicesId}:enable", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/service.management" ], "parameters": { "name": { "location": "path", "description": "Name of the consumer and service to enable the service on. The `EnableService` and `DisableService` methods currently only support projects. Enabling a service requires that the service is public or is shared with the user enabling the service. An example name would be: `projects/123/services/serviceusage.googleapis.com` where `123` is the project number.", "required": true, "type": "string", "pattern": "^[^/]+/[^/]+/services/[^/]+$" } } },
Bagian ini berisi detail metode umum seperti ID
unik untuk mengidentifikasi
metode, httpMethod
yang akan digunakan, dan path
metode (untuk
mengetahui detail tentang cara menggunakan properti path
untuk menghitung URL metode lengkap, lihat
bagian Membuat permintaan). Selain properti metode umum
ini, ada beberapa properti yang menghubungkan metode dengan bagian lain dalam dokumen Discovery:
Cakupan
Bagian auth
yang ditentukan sebelumnya dalam dokumentasi ini berisi informasi tentang
semua cakupan yang didukung oleh API tertentu. Jika mendukung salah satu cakupan ini, metode akan
memiliki array cakupan. Ada satu entri dalam array ini untuk setiap cakupan yang didukung oleh metode.
Perhatikan bahwa memilih cakupan autentikasi yang akan digunakan dalam aplikasi Anda bergantung pada berbagai faktor seperti metode yang dipanggil dan parameter yang dikirim bersama metode tersebut. Oleh karena itu, keputusan cakupan yang akan digunakan diserahkan kepada developer. Discovery hanya mendokumentasikan cakupan yang valid untuk suatu metode.
Permintaan dan respons
Jika metode memiliki isi permintaan atau respons, keduanya akan didokumentasikan di bagian request
atau response
. Misalnya, untuk metode enable
, konten bagian request
menunjukkan bahwa permintaan metode ditentukan oleh skema JSON dengan ID EnableServiceRequest
. Skema ini dapat
ditemukan di bagian skema tingkat teratas.
Parameter
Jika metode memiliki parameter yang harus ditentukan oleh pengguna, parameter ini
didokumentasikan di bagian parameters
tingkat metode. Bagian ini berisi pemetaan kunci/nilai nama parameter ke detail selengkapnya tentang parameter tersebut.
Misalnya, ada satu parameter untuk metode enable
: name
.
Parameter dapat ditempatkan di path
atau query
URL; properti
location
menunjukkan tempat library klien harus menempatkan parameter.
Ada banyak properti lain yang menjelaskan parameter, termasuk data parameter
type
(berguna untuk bahasa dengan jenis yang kuat), apakah parameter tersebut
required
, dan apakah parameter tersebut merupakan enum. Lihat dokumentasi referensi
untuk API ini guna mengetahui detail selengkapnya tentang properti ini.
Urutan parameter
Ada banyak cara bagi library klien untuk menyusun antarmukanya. Salah satu caranya adalah dengan memiliki metode dengan setiap parameter API dalam tanda tangan metode. Namun, karena JSON adalah format tidak teratur, sulit untuk mengetahui secara terprogram cara mengurutkan parameter dalam tanda tangan
metode. Array parameterOrder
memberikan pengurutan parameter tetap untuk
membuat permintaan. Array mencantumkan nama setiap parameter dalam urutan signifikansi; array dapat
berisi parameter jalur atau kueri, tetapi setiap parameter dalam array diperlukan.
Upload media
Jika metode mendukung upload media, seperti gambar, audio, atau video, lokasi dan
protokol yang didukung untuk mengupload media tersebut akan didokumentasikan di bagian
mediaUpload
. Bagian ini berisi detail tentang protokol upload yang didukung, dan
informasi tentang jenis media yang dapat diupload.
Metode enable
tidak berisi bagian mediaUpload
. Namun, bagian mediaUpload
standar mungkin terlihat seperti berikut:
"supportsMediaUpload": true, "mediaUpload": { "accept": [ "image/*" ], "maxSize": "10MB", "protocols": { "simple": { "multipart": true, "path": "/upload/storage/v1beta1/b/{bucket}/o" }, "resumable": { "multipart": true, "path": "/resumable/upload/storage/v1beta1/b/{bucket}/o" } } }
Pada contoh di atas, properti supportsMediaUpload
adalah nilai boolean yang menentukan apakah metode mendukung upload media. Jika nilainya benar, bagian
mediaUpload
akan mendokumentasikan jenis media yang dapat diupload.
Properti accept
adalah daftar rentang media yang menentukan jenis mime mana yang dapat diupload. Endpoint yang ditampilkan dalam contoh di atas akan menerima
format gambar apa pun.
Properti maxSize
memiliki ukuran maksimum upload. Nilainya adalah string dalam
satuan MB, GB, atau TB. Pada contoh di atas, upload dibatasi hingga ukuran maksimum 10 MB.
Perhatikan bahwa nilai ini tidak mencerminkan kuota penyimpanan yang tersisa untuk setiap pengguna untuk API tersebut, jadi meskipun upload kurang dari maxSize
, library klien tetap harus siap menangani upload yang gagal karena ruang penyimpanan tidak memadai.
Bagian protocols
mencantumkan protokol upload yang didukung metode. Protokol
simple
hanya mem-POST media ke endpoint tertentu dalam satu
permintaan HTTP. Protokol resumable
menyiratkan bahwa endpoint yang diberikan dalam
URI path
mendukung protokol upload
yang dapat dilanjutkan. Jika properti multipart
adalah true
, endpoint
akan menerima upload multibagian, yang berarti permintaan JSON dan media dapat digabungkan
dalam isi multibagian/terkait dan dikirim
bersama-sama. Perhatikan bahwa protokol simple
dan resumable
dapat mendukung
upload multibagian.
Properti path
adalah Template URI dan harus diperluas seperti
properti path
untuk metode, seperti yang diuraikan di bagian Membuat
permintaan.
Download media
Jika metode mendukung download media, seperti gambar, audio, atau video, hal tersebut ditunjukkan
oleh parameter supportsMediaDownload
:
"supportsMediaDownload": true,
Saat mendownload media, Anda harus menetapkan parameter kueri alt
ke media
di URL permintaan.
Jika properti useMediaDownloadService
metode API adalah true
,
masukkan /download
sebelum servicePath
untuk menghindari pengalihan. Misalnya,
jalur download adalah /download/youtube/v3/captions/{id}
jika penyambungan
servicePath
dan path
adalah /youtube/v3/captions/{id}
. Sebaiknya
buat URL download media dengan /download
meskipun
useMediaDownloadService
bernilai salah.
Parameter umum
Dokumen Discovery tingkat teratas berisi properti parameters
. Bagian ini mirip dengan bagian parameter untuk setiap metode, tetapi parameter ini dapat diterapkan ke metode apa pun di API.
Misalnya, metode get
dan list
dari Service Usage API dapat
memiliki parameter prettyPrint
dalam parameter permintaan, yang akan memformat
respons untuk semua metode tersebut dalam format yang dapat dibaca manusia. Berikut adalah daftar parameter umum:
Parameter | Arti | Catatan | Penerapan |
---|---|---|---|
access_token |
Token OAuth 2.0 untuk pengguna saat ini. |
|
|
alt |
Format data untuk respons. |
|
|
callback |
Fungsi callback. |
|
|
fields |
Pemilih yang menentukan subset kolom yang akan disertakan dalam respons. |
|
|
key |
Kunci API. (WAJIB) |
|
|
prettyPrint |
Menampilkan respons dengan indentasi dan baris baru. |
|
|
quotaUser |
Alternatif untuk userIp . |
|
|
userIp |
Alamat IP pengguna akhir yang melakukan panggilan API. |
|
Dokumentasi inline
Setiap dokumen Discovery dianotasi dengan sejumlah kolom description
yang
menyediakan dokumentasi inline untuk API. Kolom description
dapat ditemukan untuk
elemen API berikut:
- API itu sendiri
- Cakupan OAuth
- Skema resource
- Metode API
- Parameter metode
- Nilai yang dapat diterima untuk parameter tertentu
Kolom ini sangat berguna jika Anda ingin menggunakan Layanan Penemuan Google API untuk membuat dokumentasi yang dapat dibaca manusia untuk library klien—misalnya, JavaDoc.