Bagikan melalui


Pendaftaran Printer Universal Print (UP)

1. Pendaftaran

1.1 Alur

Alur Pendaftaran

1.2 API

API berikut tersedia dengan Layanan Pendaftaran UP Global untuk mendaftarkan printer. URL Dasar Layanan Pendaftaran UP Global: https://register.print.microsoft.com

URL lengkap akan menjadi kombinasi URL dasar Global dan titik akhir di bawah ini.

1.2.1 /register

Titik akhir /register digunakan untuk mendaftarkan printer. Ada 2 tahap untuk pendaftaran.

  1. Panggilan pendaftaran awal untuk mendaftarkan printer

  2. Status pendaftaran polling untuk penyelesaian permintaan pendaftaran

1.2.1.1 Memulai Pendaftaran

Tahap pertama adalah memulai permintaan pendaftaran dengan layanan pendaftaran global. Ini dilakukan dengan mengeluarkan permintaan POST ke titik akhir /register dengan payload pendaftaran dalam format JSON.

1.2.1.1.1 Permintaan HTTP
POST /api/{version}/register

{version} adalah versi API/protokol Pendaftaran UP yang digunakan printer. Versi yang saat ini didukung adalah:

  • v1.0
1.2.1.1.2 Header Permintaan

Untuk v1.0:

Nama Deskripsi
Authorization Pembawa {token} Diperlukan. Printer harus memasukkan admin ke ID Microsoft Entra, dengan mengikuti alur Kode Perangkat atau alur otorisasi lainnya.
1.2.1.1.3 Meminta Tipe Konten
  • application/json
1.2.1.1.4 Payload Permintaan

Payload permintaan pendaftaran akan dalam format JSON dengan nilai berikut (peka huruf besar/kecil):

Nama nilai Jenis nilai Deskripsi Wajib
nama string Nama printer yang mudah diingat. Ya
produsen string Produsen Printer. Ya
model string The model of the Printer. Ya
device_id string UUID perangkat fisik Printer. Ya
device_type string Jenis perangkat. Nilai yang didukung (tanpa tanda kutip): "printer" Ya
certificate_request Objek DeviceCertRequest Permintaan Penandatanganan Sertifikat (CSR) X.509 untuk sertifikat yang dibuat dan digunakan oleh printer untuk mengidentifikasi dirinya sendiri. Silakan lihat Lampiran A.1 untuk sampel pengodean tentang cara membuat CSR dengan pustaka BouncyCastle .NET. Ya

Objek DeviceCertRequest memiliki nilai berikut (peka huruf besar/kecil):

Nama nilai Jenis nilai Deskripsi Wajib
jenis string Properti yang HARUS berisi "pkcs10". Ya
data string Properti yang berisi permintaan sertifikat PKCS#10 yang dikodekan base64 RFC4211. Permintaan sertifikat HARUS menggunakan algoritma kunci umum RSA dengan kunci 2048-bit, algoritma tanda tangan SHA256WithRSAEncryption, dan algoritma hash SHA256. Ya
transport_key string Bagian publik yang dikodekan base64 dari kunci asimetris yang dihasilkan oleh klien. Ya
1.2.1.1.5 Respons Berhasil

Pada keberhasilan (202 Diterima), payload respons pendaftaran akan dalam format JSON dengan nilai berikut (peka huruf besar/kecil):

Nama nilai Jenis nilai Deskripsi Wajib diisi
registration_id string ID unik yang mewakili permintaan pendaftaran ini. Ini akan digunakan saat polling untuk status pendaftaran. Ya
interval Integer Waktu interval polling (dalam detik) untuk memeriksa penyelesaian permintaan pendaftaran. Ya
1.2.1.1.6 Respons Kesalahan

Jika terjadi kesalahan, kode status HTTP berikut akan dikembalikan bersama dengan payload respons kesalahan. Payload respons kesalahan akan berisi kesalahan objek JSON setelah format di bagian 2.

Kode status HTTP

Kode Status HTTP Deskripsi
400 (Permintaan Buruk) Permintaan tidak valid atau salah bentuk. Lihat payload respons kesalahan untuk detailnya. Perbaiki dan mengirim ulang permintaan.
500 (Kesalahan Server Internal) Terjadi kesalahan internal dalam layanan. Lihat payload respons kesalahan untuk detailnya. Coba lagi permintaan (jika memungkinkan, retry_timeout akan diatur).

Kode Kesalahan

Kode Kesalahan Deskripsi Kode Status HTTP
invalid_request Payload permintaan pendaftaran salah bentuk/tidak valid. Ini biasanya terjadi selama tahap pengembangan. Lihat error_description untuk detail selengkapnya. 400
device_code_error Layanan tidak dapat menghasilkan pasangan Kode Perangkat/Pengguna. 500
storage_error Layanan ini mengalami kesalahan dengan Penyimpanan Back-end. 500
service_error Terjadi kesalahan dalam layanan. Lihat error_description untuk detail selengkapnya. 500
1.2.1.1.7 Contoh
1.2.1.1.7.5 Permintaan v1.0
POST https://register.print.microsoft.com/api/v1.0/register HTTP/1.1
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
Accept-Encoding: gzip, deflate
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IkZ6U3pHTVZ1a0U2Nm9EQnpwR0JUY2NBMlVRYyIsImtpZCI6IkZ6U3pHTVZ1a0U2Nm9EQnpwR0JUY2NBMlVRYyJ9.eyJhdWQiOiJodHRwczovL3ByaW50LnByaW50LXBwZS5taWNyb3NvZnQuY29tIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy1wcGUubmV0LzIwZGY5NTlmLWE0OTItNGU3NC05N2E3LTE0YWJiM2ZlZjFkYi8iLCJpYXQiOjE1NjE2NzUxNjYsIm5iZiI6MTU2MTY3NTE2NiwiZXhwIjoxNTYxNjc5MDY2LCJhY3IiOiIxIiwiYWlvIjoiNDJOZ1lOQXNYbUtTSHZSM3Jvcjd2RVdMMWtmc0NMUi93R085cjYzMGl2T1RLWlVoV1ZzQSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiI0MTdhZTZlYi1hYWM4LTQyYzgtOTAwYy0wZTUwZGViYmE2ODgiLCJhcHBpZGFjciI6IjAiLCJmYW1pbHlfbmFtZSI6IlN0YWdlciIsImdpdmVuX25hbWUiOiJNYWRlbGluZSIsImdyb3VwcyI6WyI1YjljNGVkMS0yMWUyLTRkNzktYjE0Zi1mMzYyMTI5ODcyYjIiXSwiaXBhZGRyIjoiMTMxLjEwNy4xNTkuMjAiLCJuYW1lIjoiTWFkZWxpbmUgU3RhZ2VyIiwib2lkIjoiYzJmMjg2NDctMWQ4ZS00YTdhLWIzZjctZjU4YmQ3ODYxODk4IiwicHVpZCI6IjEwMDM0MDAwMDA2OEJFQzgiLCJzY3AiOiJzYW1wbGVzLnJlYWQgc2FtcGxlcy53cml0ZSIsInN1YiI6IlR6b2hRcmNzTHNjNUNHR09hWndxa1ZiajhaSkh4MnB1dzdpcWhWVXFWRGsiLCJ0ZW5hbnRfY3RyeSI6IlVTIiwidGlkIjoiMjBkZjk1OWYtYTQ5Mi00ZTc0LTk3YTctMTRhYmIzZmVmMWRiIiwidW5pcXVlX25hbWUiOiJtYXN0YWdlckBjbG91ZHByaW50cHBlLmNjc2N0cC5uZXQiLCJ1cG4iOiJtYXN0YWdlckBjbG91ZHByaW50cHBlLmNjc2N0cC5uZXQiLCJ1dGkiOiJlal84QlAtLW1rZWNNWjdncFJNR0FBIiwidmVyIjoiMS4wIiwid2lkcyI6WyI2MmU5MDM5NC02OWY1LTQyMzctOTE5MC0wMTIxNzcxNDVlMTAiXX0.e1RpyZDQzqlV11uyRXWRmaqf6wk2mg763muoIiMG2Qq8DW221Rg91cLP5px6KSfhpd7nv-Ln_KUFsZ4IlJqfmsrfCL_vgKHjYQuRDv2BY8-vrIqUC_5XVA_sj2Ib7iT7SjDYyMv6QDZM2rf7kVggvRuaZihUxxGZWby84EXD8KKAYfAQGo3r6AceuSDJOvToMy-Kp-MEqRuzExZdq2p1_qRIBtHe8Its4xuR8ZHEVqWnY0Y_qeVA8uxl3mQxZSvH8BVYn4Bdy_VZcNtrNKt3YpHFzG4kgy5V6wGLecRI7IBzYd4uK_FwpaYXHpkrSbO0ATEX3tjrgPnHbicA053Ilw
Content-Length: 1600

{
  "name": "Test Printer",
  "manufacturer": "Test Manufacturer",
  "model": "Test Model",
  "device_type": "printer",
  "device_id": "a188d9e8-8daa-44c9-862b-d6202bcf1b68",
  "certificate_request":
  {
    "type": "pkcs10",
    "data": "MIICpDCCAYwCAQAwYTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1JlZG1vbmQxFzAVBgNVBAoMDk1pY3Jvc29mdCBDb3JwMRIwEAYDVQQDDAlNaWNyb3NvZnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJ1xUdFKBlFdS9dHqSrD7YS0ZJ6MgcYy5wI3P0wOWrDi28OCBLbt6HBg02KDh1MlmVrfIR2O6WWeJ59M63JuwEn2e2WoGnIb/M6NyANyBBmgZ3bjp39UJHbXtYYXm/VJrPcOLM09dST7KR1zAcD2J+rnK8ZVUtYuTl58D7R6zsrYshw5CwxfLYPXeXwiSoKhtEC8Xn1lz3mi5B2SdsFHdjaQb6E0tCG5zdrVzzhCEVPaoo4e9SCTB9jDNulTU1ZkHzGBk+UzlKv4APsclyGCTEgA01T6/ueBrVeKY9d4DYfz/pu4sm0Vf1E+2hggtwbBOP60sFtkfnKiwtVoDF1KC9AgMBAAEwDQYJKoZIhvcNAQELBQADggEBACdggPBJ5MoJJ3QjVYDypuJGWDVWBT0G4pXNZHNz5Q4OVDze7aCw3Sl78Qdzy++XsrSXjtyZyEb+A5R36YKTpzRBCHSOWyZkZKpxj0Uo8/+RzjzJ1uvtwfhelfQ6EVktFsz6a2hixcaa47bN/bjj9stJbbRsxjJwR1K5YI/i+9DaUE7r7VDXiknQ7/ZyEYquAqY/O/LEnFOGhkSvkLlFPTbnJ7fzURyNnQhmp8p3DMj5dXYgKfWPxViqvJChx8pJf9zM4TjzaTZIj08tSOp2LtWGeMNkFgYJH4URe3t4OPx5crkKj8i5aIW1Ulb8ezJLW1IU7W8hF71ooZWFTOsAnjQ=",
    "transport_key":"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAydcVHRSgZRXUvXR6kqw+2EtGSejIHGMucCNz9MDlqw4tvDggS27ehwYNNig4dTJZla3yEdjullniefTOtybsBJ9ntlqBpyG/zOjcgDcgQZoGd246d/VCR217WGF5v1Saz3DizNPXUk+ykdcwHA9ifq5yvGVVLWLk5efA+0es7K2LIcOQsMXy2D13l8IkqCobRAvF59Zc95ouQdknbBR3Y2kG+hNLQhuc3a1c84QhFT2qKOHvUgkwfYwzbpU1NWZB8xgZPlM5Sr+AD7HJchgkxIANNU+v7nga1XimPXeA2H8/6buLJtFX9RPtoYILcGwTj+tLBbZH5yosLVaAxdSgvQIDAQAB"
  }
}
1.2.1.1.7.6 Respons v1.0
HTTP/1.1 202 Accepted
Date: Thu, 27 Jun 2019 22:47:34 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked

{
  "registration_id": "fbbd6371-7e88-4881-8818-8d2ea2e8fe88",
  "interval": 5
}
1.2.1.2 Mendapatkan Status Pendaftaran

Setelah permintaan pendaftaran berhasil diterima, printer akan melakukan polling /register titik akhir untuk status permintaan pendaftaran. Pencetak harus melakukan polling berdasarkan nilai interval yang diterima dalam respons pendaftaran dan harus menyediakan yang registration_id diterima.

1.2.1.2.1 Permintaan HTTP
GET /api/{version}/register?{Query Parameters}

{version} adalah versi API/protokol Pendaftaran UP yang digunakan printer.
Versi yang saat ini didukung adalah:

  • v1.0

{Query Parameters} ditentukan di bagian berikutnya.

1.2.1.2.2 Header Permintaan

Untuk v1.0:

Nama Deskripsi
Authorization Pembawa {token} Diperlukan. Printer harus memasukkan admin ke ID Microsoft Entra, atau mengikuti alur Kode Perangkat. Token yang sama yang diperoleh untuk permintaan register pertama dapat digunakan.
1.2.1.2.3 Parameter Kueri Permintaan
Nama Parameter Deskripsi Wajib diisi
registration_id ID pendaftaran diterima dari respons permintaan pendaftaran. Ya
1.2.1.2.4 Respons yang Berhasil

Kode status HTTP berikut akan dikembalikan untuk skenario "sukses" berikut:

Kode Status HTTP Fase Pendaftaran
200 (OK) Pendaftaran Selesai
202 (Diterima) Pendaftaran Sedang Berlangsung - Silakan buat permintaan lain setelah waktu interval berlalu

Payload Respons

Pendaftaran Sedang Berlangsung (202 Diterima):

Payload respons pendaftaran akan dalam format JSON dengan nilai berikut (peka huruf besar/kecil):

Nama nilai Jenis nilai Deskripsi Wajib diisi
interval Integer Waktu interval polling (dalam detik) untuk memeriksa penyelesaian permintaan pendaftaran. Perhatikan, waktu interval polling tidak perlu sama setiap kali. Ya

Pendaftaran Selesai (200 OK):

Payload respons pendaftaran akan dalam format JSON dengan nilai berikut (peka huruf besar/kecil):

Nama nilai Jenis nilai Deskripsi Wajib diisi
cloud_device_id string UUID printer di Cloud yang diwakili printer ini. Ya
sertifikat string Sertifikat X.509 yang dikodekan base64. Ya
print_svc_url string URL ke layanan Universal Print (UP) yang menangani operasi printer. Ya
notification_url string URL yang harus digunakan oleh printer untuk mendengarkan pemberitahuan (pekerjaan cetak baru, membatalkan tugas cetak, dll...). Ya
mcp_svc_resource_id string ID Sumber Daya layanan UP. Diperlukan saat meminta token OAuth untuk komunikasi dengan Layanan Pemberitahuan UP dan UP. Ya
device_token_url string URL Secure Token Authority (STA) yang harus digunakan printer untuk mendapatkan token untuk Up dan UP Notification Services. Ya
1.2.1.2.5 Respons Kesalahan

Jika terjadi kesalahan, kode status HTTP berikut akan dikembalikan bersama dengan payload respons kesalahan. Payload respons kesalahan akan berisi kesalahan objek JSON setelah format di bagian 2.

Kode status HTTP

Kode Status HTTP Deskripsi
400 (Permintaan Buruk) Permintaan tidak valid atau salah bentuk. Lihat payload respons kesalahan untuk detailnya. Pendaftaran harus dimulai kembali.
500 (Kesalahan Server Internal) Terjadi kesalahan internal dalam layanan. Lihat payload respons kesalahan untuk detailnya. Pendaftaran harus dimulai kembali.

Kode Kesalahan

Kode Kesalahan Deskripsi Kode Status HTTP
invalid_registration_id ID pendaftaran yang disediakan tidak valid. Ini dapat terjadi jika ID pendaftaran disimpan dengan tidak benar atau jika pendaftaran printer belum selesai dalam batas waktu pendaftaran. Pendaftaran harus dimulai kembali. 400
device_already_exists Perangkat yang sedang didaftarkan sudah terdaftar. Admin harus memeriksa portal UP untuk melihat apakah perangkat yang terdaftar ada. Jika ya, itu bisa menjadi entri kedaluarsa bahwa Admin lupa menghapus/membatalkan pendaftaran. Pendaftaran harus dimulai kembali. 400
user_token_error Layanan gagal mendapatkan token pengguna untuk melakukan pendaftaran. Pendaftaran harus dimulai kembali. 500
storage_error Layanan ini mengalami kesalahan dengan Penyimpanan Back-end. Pendaftaran harus dimulai kembali. 500
service_error Terjadi kesalahan dalam layanan. Lihat error_description untuk detail selengkapnya. Pendaftaran harus dimulai kembali. 500
1.2.1.2.6 Contoh
1.2.1.2.6.3 Permintaan v1.0
GET https://register.print.microsoft.com/api/v1.0/register?registration_id=bb86db79-2918-
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IkZ6U3pHTVZ1a0U2Nm9EQnpwR0JUY2NBMlVRYyIsImtpZCI6IkZ6U3pHTVZ1a0U2Nm9EQnpwR0JUY2NBMlVRYyJ9.eyJhdWQiOiJodHRwczovL3ByaW50LnByaW50LXBwZS5taWNyb3NvZnQuY29tIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy1wcGUubmV0LzIwZGY5NTlmLWE0OTItNGU3NC05N2E3LTE0YWJiM2ZlZjFkYi8iLCJpYXQiOjE1NjE2NzUxNjYsIm5iZiI6MTU2MTY3NTE2NiwiZXhwIjoxNTYxNjc5MDY2LCJhY3IiOiIxIiwiYWlvIjoiNDJOZ1lOQXNYbUtTSHZSM3Jvcjd2RVdMMWtmc0NMUi93R085cjYzMGl2T1RLWlVoV1ZzQSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiI0MTdhZTZlYi1hYWM4LTQyYzgtOTAwYy0wZTUwZGViYmE2ODgiLCJhcHBpZGFjciI6IjAiLCJmYW1pbHlfbmFtZSI6IlN0YWdlciIsImdpdmVuX25hbWUiOiJNYWRlbGluZSIsImdyb3VwcyI6WyI1YjljNGVkMS0yMWUyLTRkNzktYjE0Zi1mMzYyMTI5ODcyYjIiXSwiaXBhZGRyIjoiMTMxLjEwNy4xNTkuMjAiLCJuYW1lIjoiTWFkZWxpbmUgU3RhZ2VyIiwib2lkIjoiYzJmMjg2NDctMWQ4ZS00YTdhLWIzZjctZjU4YmQ3ODYxODk4IiwicHVpZCI6IjEwMDM0MDAwMDA2OEJFQzgiLCJzY3AiOiJzYW1wbGVzLnJlYWQgc2FtcGxlcy53cml0ZSIsInN1YiI6IlR6b2hRcmNzTHNjNUNHR09hWndxa1ZiajhaSkh4MnB1dzdpcWhWVXFWRGsiLCJ0ZW5hbnRfY3RyeSI6IlVTIiwidGlkIjoiMjBkZjk1OWYtYTQ5Mi00ZTc0LTk3YTctMTRhYmIzZmVmMWRiIiwidW5pcXVlX25hbWUiOiJtYXN0YWdlckBjbG91ZHByaW50cHBlLmNjc2N0cC5uZXQiLCJ1cG4iOiJtYXN0YWdlckBjbG91ZHByaW50cHBlLmNjc2N0cC5uZXQiLCJ1dGkiOiJlal84QlAtLW1rZWNNWjdncFJNR0FBIiwidmVyIjoiMS4wIiwid2lkcyI6WyI2MmU5MDM5NC02OWY1LTQyMzctOTE5MC0wMTIxNzcxNDVlMTAiXX0.e1RpyZDQzqlV11uyRXWRmaqf6wk2mg763muoIiMG2Qq8DW221Rg91cLP5px6KSfhpd7nv-Ln_KUFsZ4IlJqfmsrfCL_vgKHjYQuRDv2BY8-vrIqUC_5XVA_sj2Ib7iT7SjDYyMv6QDZM2rf7kVggvRuaZihUxxGZWby84EXD8KKAYfAQGo3r6AceuSDJOvToMy-Kp-MEqRuzExZdq2p1_qRIBtHe8Its4xuR8ZHEVqWnY0Y_qeVA8uxl3mQxZSvH8BVYn4Bdy_VZcNtrNKt3YpHFzG4kgy5V6wGLecRI7IBzYd4uK_FwpaYXHpkrSbO0ATEX3tjrgPnHbicA053Ilw
Host: register.print.microsoft.com
1.2.1.2.6.4 Sedang Berlangsung Respons v1.0
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Pragma: no-cache

{
  "interval": 15
}
1.2.1.2.6.7 Respons Selesai v1.0
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 267
Content-Type: application/json; charset=utf-8

{
  "cloud_device_id": "7c907b43-d8f0-4e42-a279-1e37eb4fd2bf",
  "certificate": "MIID8jCCAtqgAwIBAgIQR2Y15zkurJhCGxcaQ0d7tjANBgkqhkiG9w0BAQsFADB4MXYwEQYKCZImiZPyLGQBGRYDbmV0MBUGCgmSJomT8ixkARkWB3dpbmRvd3MwHQYDVQQDExZNUy1Pcmdhbml6YXRpb24tQWNjZXNzMCsGA1UECxMkODJkYmFjYTQtM2U4MS00NmNhLTljNzMtMDk1MGMxZWFjYTk3MB4XDTE4MDExOTAwNTIxM1oXDTI4MDExOTAxMjIxM1owLzEtMCsGA1UEAxMkZjVlYjVmNWUtMDYyNC00YTNiLThmZjItNjQ5ZTAyM2ZiNzJkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApQc0Twp+vlT5Vc74zLoXbrufcIKnoW980OWFKHf7lRlRqjj9MWpea99j+3K8JQSoifXJvS5QzyjXrH9phsrfX84I258y6dM/aUadLYYKjO38wx9c1vQppZi1P3LcDaJiXPgNQ8omWCtDNoVwQlTUmB9Pq6h+V6S4P59Mq9cem6yEE7pu4DLqLSB68jexvLQnuGDfn6PsVUC3ML21zDmAr3QDikiZDe9Iy03IRrXvl6obj5QZtkGFbK9ueArFcWpymsEK
  FfVhrKL7ca/rAEFHsHacJYHkJNMw3Qzs0yMYZRsH/fS+eBebvQWUEujQ+BX8xZQX48ukwtC8R37RsqrLjwIDAQABo4HAMIG9MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwIgYLKoZIhvcUAQWCHAIEEwSBEF5f6/UkBjtKj/JkngI/ty0wIgYLKoZIhvcUAQWCHAMEEwSBEHXH6W+38IhBoi1uqlWcNhUwIgYLKoZIhvcUAQWCHAUEEwSBEAWT1qlxl5pLvXhzFTIfL2swFAYLKoZIhvcUAQWCHAgEBQSBAk5BMBMGCyqGSIb3FAEFghwHBAQEgQEwMA0GCSqGSIb3DQEBCwUAA4IBAQCXpFMa9DCgIIJTD3RlEyPN8WB/HgMkhLBqwtZugkmIn8D80ckuhrfa2jJfWkNxEfFXanjq9B4tAvkNt7vBXiYw+PKj8+CE5FgfUTNtIw3Q/06tnJBj20mz28ZNbdRUgXzxXiY7oZss54dbHH+7TFO9k9Pm1CuUOzLFX4LeC48wo/S6uN7JDeID6pQjcR00eYJ+gcD800AXBYXrqSreYhdtl1swcD71qgshELAo2qXu0kzuKj05GIB5SXFOoU+KhuB0LMuEZF5rsQPN4KcasGaAb/8MIORAxkYStNLQZQLYbDve/dUownbfruW/o3tnjJP0GA0gY/Ohv5ssgrCFsiBq",
  "print_svc_url": "https://print.print.microsoft.com/",
  "notification_url": "https://notification.print.microsoft.com/",
  "mcp_svc_resource_id":"https://print.print.microsoft.com",
  "device_token_url": "https://login.microsoftonline.com/common/oauth2/token"
}

1.2.1.3 Autentikasi

Sebelum mendaftarkan printer harus mengautentikasi admin ke ID Microsoft Entra, dengan mengikuti alur Kode Perangkat atau alur otorisasi lainnya. Token akses admin printer yang diperoleh harus dikirim di header otorisasi permintaan untuk mendaftarkan printer. Dokumentasi kode perangkat dan alur autentikasi lain yang didukung oleh ID Microsoft Entra dapat ditemukan di Alur autentikasi yang didukung.

1.2.1.3.1 Parameter Alur Kode Perangkat

Dokumentasi dukungan ID Microsoft Entra dari alur kode perangkat dapat ditemukan di alur kode perangkat OAuth 2.0. Daftar client_id di bawah ini bersifat sementara. Kami akan memberikan informasi tambahan dalam waktu dekat.

Nama Parameter Deskripsi Wajib diisi
penyewa Gunakan "Organisasi" untuk parameter penyewa. Ya
client_id Gunakan registered client ID untuk client_id. Informasi tambahan di Mendaftarkan Klien OEM. Ya
cakupan Gunakan https://print.print.microsoft.com/.default untuk cakupan Ya
1.2.1.3.2 Contoh Permintaan Alur Kode Perangkat
1.2.1.3.2.1 Memulai alur kode perangkat

Permintaan:

POST https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode HTTP/1.1
Accept-Charset: utf-8
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: login.microsoftonline.com
Content-Length: 103
Expect: 100-continue
Connection: Keep-Alive

client_id=<registered_client_id>&scope=https%3A%2F%2Fprint.print.microsoft.com%2F.default

Respons:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 473

{
  "user_code": "FMTB7B3WR",
  "device_code": "FAQABAAEAAAAP0wLlqdLVToOpA4kwzSnx3SB1wjNptiBt5jFM8ePgJKGOjX-WOEksHYT3zgqz9VVg4MqY8J6Tej_rpniyj4WjOsVe-RCJuGexX-IwPKDK-df38P0zpLv5ktxSCflT_F-8Cbef6BRDpk0Qm-lPOhC4bcbtdIaM8yqf-cS962rGC9VdVNFVFStePppCDRcumjAgAA",
  "verification_uri": "https://microsoft.com/devicelogin",
  "expires_in": 900,
  "interval": 5,
  "message": "To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code FMTB7B3WR to authenticate."
}
1.2.1.3.2.2 Mengambil token pengguna

Permintaan:

POST https://login.microsoftonline.com/tenant/oauth2/v2.0/token HTTP/1.1
Accept-Charset: utf-8
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: login.microsoftonline.com
Content-Length: 289
Expect: 100-continue

grant_type=device_code&client_id=<registered_client_id>&device_code=FAQABAAEAAAAP0wLlqdLVToOpA4kwzSnx3SB1wjNptiBt5jFM8ePgJKGOjX-WOEksHYT3zgqz9VVg4MqY8J6Tej_rpniyj4WjOsVe-RCJuGexX-IwPKDK-df38P0zpLv5ktxSCflT_F-8Cbef6BRDpk0Qm-lPOhC4bcbtdIaM8yqf-cS962rGC9VdVNFVFStePppCDRcumjAgAA

Respons: authorization_pending, pengguna belum masuk.

HTTP/1.1 400 Bad Request
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 469

{
  "error": "authorization_pending",
  "error_description": "AADSTS70016: Pending end-user authorization.\r\nTrace ID: 60997c8b-15ed-4d12-99b6-6da879fd1400\r\nCorrelation ID: 7300aba9-1698-4a4e-b6dd-66459a828108\r\nTimestamp: 2019-09-26 23:13:43Z",
  "error_codes": [70016],
  "timestamp": "2019-09-26 23:13:43Z",
  "trace_id": "60997c8b-15ed-4d12-99b6-6da879fd1400",
  "correlation_id": "7300aba9-1698-4a4e-b6dd-66459a828108",
  "error_uri": https://login.microsoftonline.com/error?code=70016
}

Respons: success, pengguna telah masuk, token dikembalikan. Token ini dapat digunakan di header otorisasi yang diperlukan (dijelaskan dalam bagian 1.2.1.1.2) saat mengirim permintaan untuk mendaftarkan printer dengan Universal Print.

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 1763

{
  "token_type": "Bearer",
  "scope": "https://print.print.microsoft.com/Print.Device https://print.print.microsoft.com/.default",
  "expires_in": 3599,
  "ext_expires_in": 3599,
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImFQY3R3X29kdlJPb0VOZzNWb09sSWgydGlFcyIsImtpZCI6ImFQY3R3X29kdlJPb0VOZzNWb09sSWgydGlFcyJ9.eyJhdWQiOiJodHRwczovL3ByaW50LnByaW50Lm1pY3Jvc29mdC5jb20iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mMGQ4ODMyMy04OGY2LTQ4MTMtOGI0ZC05NGVjNjdlNjA3YmQvIiwiaWF0IjoxNTY5NTM5Mzc3LCJuYmYiOjE1Njk1MzkzNzcsImV4cCI6MTU2OTU0MzI3NywiYWNyIjoiMSIsImFpbyI6IkFTUUEyLzhNQUFBQVA1U1NzTklCYXRVQ2UxSGZXaEdvNHhqbUM4b2RCckNpeDNaN0dyZWJUMEE9IiwiYW1yIjpbInB3ZCJdLCJhcHBpZCI6IjQxN2FlNmViLWFhYzgtNDJjOC05MDBjLTBlNTBkZWJiYTY4OCIsImFwcGlkYWNyIjoiMCIsImdyb3VwcyI6WyIzMjVhNDljOS1mNjQ0LTQxNjEtODdmZS1kZTQ5ZGEyNDhjZTkiXSwiaXBhZGRyIjoiMTY3LjIyMC4yLjE4IiwibmFtZSI6Ik1hZGVsaW5lIFN0YWdlciIsIm9pZCI6ImIzZTE1ODM0LTAxZmUtNDIwNi05MjkwLTk5OTNiMzM1MWM2MSIsInB1aWQiOiIxMDAzN0ZGRUFDRjVBNUE1Iiwic2NwIjoiUHJpbnQuRGV2aWNlIiwic3ViIjoiN2hhQzVjdEZlYjZPVHBsMHROUDJmRDJVY3pWTFRjbTZlNkQ1eEZkOEpvYyIsInRlbmFudF9jdHJ5IjoiVVMiLCJ0aWQiOiJmMGQ4ODMyMy04OGY2LTQ4MTMtOGI0ZC05NGVjNjdlNjA3YmQiLCJ1bmlxdWVfbmFtZSI6Im1hc3RhZ2VyQGNsb3VkcHJpbnRwcm9kdWN0aW9uLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6Im1hc3RhZ2VyQGNsb3VkcHJpbnRwcm9kdWN0aW9uLm9ubWljcm9zb2Z0LmNvbSIsInV0aSI6Inp2N2EtdGRrR0VHQkFSMl9zWU1UQUEiLCJ2ZXIiOiIxLjAiLCJ3aWRzIjpbIjYyZTkwMzk0LTY5ZjUtNDIzNy05MTkwLTAxMjE3NzE0NWUxMCJdfQ.Nfz82GPdQUx6py2xwhVhI4hvpbLTdaaDSVFnGx4Eb3CeJHcQvCmmKoB9Lze7YITcEcLdxUkGEQGEXSh6M3yDrNP_hsoIROdWhe6RDjbYVPmJUL319lL4eNtQTJq8bKcJVbeM5SamlY1mBIhxH_sjL4TX0NN2RnDIuF_L1NSRW0IaHoZxzf257y0n7BqPROl3VpQ97wA8P-hhVBbfwwB9i-sLbsoCVszuE9JnHpgJPm6h9FDL9Px57ddTMZDvJchxOL5gUTA76gdRqUUzLROCMlz0R7vTJotl2RQnrzZBoNNoM9iJHL2KqQKuuezHEro1453lSRASiBkZHHEOFglzSg"
}

2. Struktur Respons Kesalahan

Untuk API di atas, jika terjadi kesalahan, struktur kesalahan berikut akan dikembalikan dalam payload dalam format JSON dengan nilai berikut (peka huruf besar/kecil). Respons kesalahan ini terutama untuk tujuan pengembangan dan terserah pengembang apa yang harus ditampilkan kepada pengguna, jika ada.

Nama nilai Jenis nilai Deskripsi Wajib diisi
kesalahan string String kode kesalahan yang digunakan untuk mengklasifikasikan jenis kesalahan yang terjadi. Ya
error_description string Pesan kesalahan tertentu yang dapat membantu mengidentifikasi akar penyebab kesalahan. No
kode_kesalahan Integer Kode kesalahan tambahan yang dapat membantu mendiagnosis masalah. No
http_status_code Integer Kode status HTTP yang dikembalikan dengan respons kesalahan ini. No
retry_timeout Integer Jumlah detik yang harus ditunggu printer sebelum mencoba kembali permintaan. No

Setiap API di atas akan mencantumkan kemungkinan string kode kesalahannya.

2.1 Contoh Respons

{
  "error": "invalid_request",
  "error_description": "Missing required field device_type"
}

Konektivitas dengan layanan Universal Print setelah pendaftaran printer

Universal Print mendukung fungsionalitas yang diperlukan yang ditentukan dalam PWG 5100.18 (IPP Infra). Printer siap Universal Print diharapkan menggunakan protokol ini untuk berkomunikasi dengan Universal Print setelah menyelesaikan proses pendaftaran printer. Untuk memastikan pemanggil adalah printer dengan akses, printer akan menggunakan Token Akses perangkat, seperti yang dijelaskan dalam Pengambilan Token Akses Printer, sebagai nilai Pembawa untuk header HTTP Authorization .