// 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 { path } from '../../internal/utils/path';
export class BaseSnapshot extends APIResource {
static override readonly _key: readonly ['browserRendering', 'snapshot'] = Object.freeze([
'browserRendering',
'snapshot',
] as const);
/**
* Returns the page's HTML content and screenshot. Control page loading with
* `gotoOptions` and `waitFor*` options. Customize screenshots with `viewport`,
* `fullPage`, `clip` and others.
*
* @example
* ```ts
* const snapshot =
* await client.browserRendering.snapshot.create({
* account_id: 'account_id',
* html: '
Hello World!
',
* formats: ['content', 'screenshot'],
* });
* ```
*/
create(params: SnapshotCreateParams, options?: RequestOptions): APIPromise {
const { account_id, cacheTTL, ...body } = params;
return (
this._client.post(path`/accounts/${account_id}/browser-rendering/snapshot`, {
query: { cacheTTL },
body,
...options,
}) as APIPromise<{ result: SnapshotCreateResponse }>
)._thenUnwrap((obj) => obj.result);
}
}
export class Snapshot extends BaseSnapshot {}
export interface SnapshotCreateResponse {
/**
* Accessibility tree node
*/
accessibilityTree?: SnapshotCreateResponse.AccessibilityTree;
/**
* HTML content.
*/
content?: string;
/**
* Markdown content.
*/
markdown?: string;
/**
* Base64 encoded image.
*/
screenshot?: string;
}
export namespace SnapshotCreateResponse {
/**
* Accessibility tree node
*/
export interface AccessibilityTree {
role: string;
autocomplete?: string;
checked?: boolean | 'mixed';
children?: Array;
description?: string;
disabled?: boolean;
expanded?: boolean;
focused?: boolean;
haspopup?: string;
invalid?: string;
keyshortcuts?: string;
level?: number;
modal?: boolean;
multiline?: boolean;
multiselectable?: boolean;
name?: string;
orientation?: string;
pressed?: boolean | 'mixed';
readonly?: boolean;
required?: boolean;
roledescription?: string;
selected?: boolean;
value?: string | number;
valuemax?: number;
valuemin?: number;
valuetext?: string;
}
}
export type SnapshotCreateParams = SnapshotCreateParams.Variant0 | SnapshotCreateParams.Variant1;
export declare namespace SnapshotCreateParams {
export interface Variant0 {
/**
* Path param: Account ID.
*/
account_id: string;
/**
* Body param: Set the content of the page, eg: `Hello World!!
`. Either
* `html` or `url` must be set.
*/
html: string;
/**
* Query param: Cache TTL default is 5s. Set to 0 to disable.
*/
cacheTTL?: number;
/**
* Body param: The maximum duration allowed for the browser action to complete
* after the page has loaded (such as taking screenshots, extracting content, or
* generating PDFs). If this time limit is exceeded, the action stops and returns a
* timeout error.
*/
actionTimeout?: number;
/**
* Body param: Adds a `