// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import { APIResource } from '../../../core/resource'; import { APIPromise } from '../../../core/api-promise'; import { RequestOptions } from '../../../internal/request-options'; import { multipartFormRequestOptions } from '../../../internal/uploads'; import { path } from '../../../internal/utils/path'; export class BaseSnapshots extends APIResource { static override readonly _key: readonly ['intel', 'indicatorFeeds', 'snapshots'] = Object.freeze([ 'intel', 'indicatorFeeds', 'snapshots', ] as const); /** * Revises the raw data entries in a custom threat indicator feed. * * Accepts both plain and gzipped STIX2/CRDF bodies. Gzip is detected by RFC 1952 * magic bytes (`0x1f 0x8b`) and/or a `.gz` filename suffix (case-insensitive) — * either signal alone is sufficient to trigger the gzip path; if the body is not * valid gzip, the upload fails fast. Customers are encouraged to gzip larger * uploads — the api-gateway 500 MB body cap applies to the on-the-wire * (compressed) size, so gzip lets a single upload carry several GiB of * decompressed STIX. * * @example * ```ts * const snapshot = * await client.intel.indicatorFeeds.snapshots.update(12, { * account_id: '023e105f4ecef8ad9ca31a8372d0c353', * }); * ``` */ update( feedID: number, params: SnapshotUpdateParams, options?: RequestOptions, ): APIPromise { const { account_id, ...body } = params; return ( this._client.put( path`/accounts/${account_id}/intel/indicator-feeds/${feedID}/snapshot`, multipartFormRequestOptions({ body, ...options }, this._client), ) as APIPromise<{ result: SnapshotUpdateResponse }> )._thenUnwrap((obj) => obj.result); } } export class Snapshots extends BaseSnapshots {} export interface SnapshotUpdateResponse { /** * Feed id */ file_id?: number; /** * Name of the file unified in our system */ filename?: string; /** * Current status of upload, should be unified */ status?: string; } export interface SnapshotUpdateParams { /** * Path param: Identifier */ account_id: string; /** * Body param: The file to upload. Either a plain STIX2/CRDF body or a gzipped one * (recognised by `0x1f 0x8b` magic bytes or a `.gz` filename suffix). */ source?: string; } export declare namespace Snapshots { export { type SnapshotUpdateResponse as SnapshotUpdateResponse, type SnapshotUpdateParams as SnapshotUpdateParams, }; }