notification.d.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import { BaseMetadata, ServiceObject } from './nodejs-common/index.js';
  2. import { ResponseBody } from './nodejs-common/util.js';
  3. import { Bucket } from './bucket.js';
  4. export interface DeleteNotificationOptions {
  5. userProject?: string;
  6. }
  7. export interface GetNotificationMetadataOptions {
  8. userProject?: string;
  9. }
  10. /**
  11. * @typedef {array} GetNotificationMetadataResponse
  12. * @property {object} 0 The notification metadata.
  13. * @property {object} 1 The full API response.
  14. */
  15. export type GetNotificationMetadataResponse = [ResponseBody, unknown];
  16. /**
  17. * @callback GetNotificationMetadataCallback
  18. * @param {?Error} err Request error, if any.
  19. * @param {object} files The notification metadata.
  20. * @param {object} apiResponse The full API response.
  21. */
  22. export interface GetNotificationMetadataCallback {
  23. (err: Error | null, metadata?: ResponseBody, apiResponse?: unknown): void;
  24. }
  25. /**
  26. * @typedef {array} GetNotificationResponse
  27. * @property {Notification} 0 The {@link Notification}
  28. * @property {object} 1 The full API response.
  29. */
  30. export type GetNotificationResponse = [Notification, unknown];
  31. export interface GetNotificationOptions {
  32. /**
  33. * Automatically create the object if it does not exist. Default: `false`.
  34. */
  35. autoCreate?: boolean;
  36. /**
  37. * The ID of the project which will be billed for the request.
  38. */
  39. userProject?: string;
  40. }
  41. /**
  42. * @callback GetNotificationCallback
  43. * @param {?Error} err Request error, if any.
  44. * @param {Notification} notification The {@link Notification}.
  45. * @param {object} apiResponse The full API response.
  46. */
  47. export interface GetNotificationCallback {
  48. (err: Error | null, notification?: Notification | null, apiResponse?: unknown): void;
  49. }
  50. /**
  51. * @callback DeleteNotificationCallback
  52. * @param {?Error} err Request error, if any.
  53. * @param {object} apiResponse The full API response.
  54. */
  55. export interface DeleteNotificationCallback {
  56. (err: Error | null, apiResponse?: unknown): void;
  57. }
  58. export interface NotificationMetadata extends BaseMetadata {
  59. custom_attributes?: {
  60. [key: string]: string;
  61. };
  62. event_types?: string[];
  63. object_name_prefix?: string;
  64. payload_format?: 'JSON_API_V1' | 'NONE';
  65. topic?: string;
  66. }
  67. /**
  68. * The API-formatted resource description of the notification.
  69. *
  70. * Note: This is not guaranteed to be up-to-date when accessed. To get the
  71. * latest record, call the `getMetadata()` method.
  72. *
  73. * @name Notification#metadata
  74. * @type {object}
  75. */
  76. /**
  77. * A Notification object is created from your {@link Bucket} object using
  78. * {@link Bucket#notification}. Use it to interact with Cloud Pub/Sub
  79. * notifications.
  80. *
  81. * See {@link https://cloud.google.com/storage/docs/pubsub-notifications| Cloud Pub/Sub Notifications for Google Cloud Storage}
  82. *
  83. * @class
  84. * @hideconstructor
  85. *
  86. * @param {Bucket} bucket The bucket instance this notification is attached to.
  87. * @param {string} id The ID of the notification.
  88. *
  89. * @example
  90. * ```
  91. * const {Storage} = require('@google-cloud/storage');
  92. * const storage = new Storage();
  93. * const myBucket = storage.bucket('my-bucket');
  94. *
  95. * const notification = myBucket.notification('1');
  96. * ```
  97. */
  98. declare class Notification extends ServiceObject<Notification, NotificationMetadata> {
  99. constructor(bucket: Bucket, id: string);
  100. }
  101. /**
  102. * Reference to the {@link Notification} class.
  103. * @name module:@google-cloud/storage.Notification
  104. * @see Notification
  105. */
  106. export { Notification };