2024-08-22 09:18:44 +07:00
|
|
|
syntax = "proto3";
|
|
|
|
|
|
|
|
package notify.v1;
|
|
|
|
|
|
|
|
import "notify/v1/send_notification.proto";
|
|
|
|
|
|
|
|
service NotifyService {
|
2024-08-28 14:46:39 +07:00
|
|
|
// SendNotification sends notification data to Zen Server.
|
|
|
|
//
|
|
|
|
// Returns notification_id that can be used to send attachments.
|
|
|
|
//
|
|
|
|
// notification_id is long lived and can be given attachments even on the far future.
|
|
|
|
//
|
|
|
|
// If you want to send attachments, use SendAttachment rpc.
|
|
|
|
//
|
|
|
|
// `notification_id` respond can be used to send attachments via SendAttachment rpc.
|
|
|
|
// `upload_url` can be used to upload attachments via http protocol (fetch, axios, http post, etc).
|
2024-08-22 09:18:44 +07:00
|
|
|
rpc SendNotification(SendNotificationRequest) returns (SendNotificationResponse);
|
2024-08-28 14:46:39 +07:00
|
|
|
|
|
|
|
// SendAttachment sends attachment data to Zen Server.
|
|
|
|
//
|
|
|
|
// SendAttachment rpc is not supported by Browser Javascript.
|
|
|
|
//
|
|
|
|
// If implementing logic for SendAttachment rpc is difficult, consider using `upload_url`
|
|
|
|
// to upload attachments via http protocol.
|
|
|
|
//
|
|
|
|
// SendAttachment requires notification_id that was returned by SendNotification
|
|
|
|
// so that Zen server can associate attachment with notification.
|
|
|
|
//
|
|
|
|
// One Stream One Attachment. To send multiple attachments, spawn multiple streams by calling
|
|
|
|
// SendAttachment multiple times with the same notification_id and send chunks of data in order.
|
|
|
|
//
|
|
|
|
// PSEUDOCODE:
|
|
|
|
//
|
|
|
|
// response = client.SendNotification({
|
|
|
|
// payload: {...},
|
|
|
|
// resource: {...},
|
|
|
|
// })
|
|
|
|
//
|
|
|
|
// notification_id = response.notification_id
|
|
|
|
//
|
|
|
|
// for attachment in attachments {
|
|
|
|
// stream = client.SendAttachment()
|
|
|
|
// // thread.spawn is a pseudo code for creating a new thread or background worker/task.
|
|
|
|
// thread.spawn ({
|
|
|
|
// for chunk in attachment.chunks {
|
|
|
|
// stream.Send({
|
|
|
|
// notification_id: notification_id,
|
|
|
|
// name: attachment.name,
|
|
|
|
// content_type: attachment.content_type,
|
|
|
|
// chunk: chunk,
|
|
|
|
// })
|
|
|
|
// }
|
|
|
|
// stream.Close()
|
|
|
|
// })
|
|
|
|
// }
|
2024-08-22 09:18:44 +07:00
|
|
|
rpc SendAttachment(stream SendAttachmentRequest) returns (SendAttachmentResponse);
|
|
|
|
}
|
|
|
|
|
|
|
|
message SendAttachmentRequest {
|
|
|
|
string notification_id = 1;
|
|
|
|
string name = 2;
|
|
|
|
string content_type = 3;
|
|
|
|
bytes chunk = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
message SendAttachmentResponse {}
|