// 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 { PagePromise, SinglePage } from '../../../core/pagination'; import { RequestOptions } from '../../../internal/request-options'; import { path } from '../../../internal/utils/path'; export class BaseMessageResource extends APIResource { static override readonly _key: readonly ['cloudforceOne', 'requests', 'message'] = Object.freeze([ 'cloudforceOne', 'requests', 'message', ] as const); /** * Adds a message to a Cloudforce One intelligence request conversation. * * @example * ```ts * const message = * await client.cloudforceOne.requests.message.create( * 'f174e90a-fafe-4643-bbbc-4a0ed4fc8415', * { account_id: '023e105f4ecef8ad9ca31a8372d0c353' }, * ); * ``` */ create(requestID: string, params: MessageCreateParams, options?: RequestOptions): APIPromise { const { account_id, ...body } = params; return ( this._client.post(path`/accounts/${account_id}/cloudforce-one/requests/${requestID}/message/new`, { body, ...options, }) as APIPromise<{ result: Message }> )._thenUnwrap((obj) => obj.result); } /** * Updates a message in a Cloudforce One intelligence request thread. * * @example * ```ts * const message = * await client.cloudforceOne.requests.message.update(0, { * account_id: '023e105f4ecef8ad9ca31a8372d0c353', * request_id: 'f174e90a-fafe-4643-bbbc-4a0ed4fc8415', * }); * ``` */ update(messageID: number, params: MessageUpdateParams, options?: RequestOptions): APIPromise { const { account_id, request_id, ...body } = params; return ( this._client.put( path`/accounts/${account_id}/cloudforce-one/requests/${request_id}/message/${messageID}`, { body, ...options }, ) as APIPromise<{ result: Message }> )._thenUnwrap((obj) => obj.result); } /** * Removes a message from a Cloudforce One intelligence request thread. * * @example * ```ts * const message = * await client.cloudforceOne.requests.message.delete(0, { * account_id: '023e105f4ecef8ad9ca31a8372d0c353', * request_id: 'f174e90a-fafe-4643-bbbc-4a0ed4fc8415', * }); * ``` */ delete( messageID: number, params: MessageDeleteParams, options?: RequestOptions, ): APIPromise { const { account_id, request_id } = params; return this._client.delete( path`/accounts/${account_id}/cloudforce-one/requests/${request_id}/message/${messageID}`, options, ); } /** * Lists messages in a Cloudforce One intelligence request conversation. * * @example * ```ts * // Automatically fetches more pages as needed. * for await (const message of client.cloudforceOne.requests.message.get( * 'f174e90a-fafe-4643-bbbc-4a0ed4fc8415', * { * account_id: '023e105f4ecef8ad9ca31a8372d0c353', * page: 0, * per_page: 10, * }, * )) { * // ... * } * ``` */ get( requestID: string, params: MessageGetParams, options?: RequestOptions, ): PagePromise { const { account_id, ...body } = params; return this._client.getAPIList( path`/accounts/${account_id}/cloudforce-one/requests/${requestID}/message`, SinglePage, { body, method: 'post', ...options }, ); } } export class MessageResource extends BaseMessageResource {} export type MessagesSinglePage = SinglePage; export interface Message { /** * Message ID. */ id: number; /** * Author of message. */ author: string; /** * Content of message. */ content: string; /** * Whether the message is a follow-on request. */ is_follow_on_request: boolean; /** * Defines the message last updated time. */ updated: string; /** * Defines the message creation time. */ created?: string; } export interface MessageDeleteResponse { errors: Array; messages: Array; /** * Whether the API call was successful. */ success: true; } export namespace MessageDeleteResponse { export interface Error { code: number; message: string; documentation_url?: string; source?: Error.Source; } export namespace Error { export interface Source { pointer?: string; } } export interface Message { code: number; message: string; documentation_url?: string; source?: Message.Source; } export namespace Message { export interface Source { pointer?: string; } } } export interface MessageCreateParams { /** * Path param: Identifier. */ account_id: string; /** * Body param: Content of message. */ content?: string; } export interface MessageUpdateParams { /** * Path param: Identifier. */ account_id: string; /** * Path param: UUID. */ request_id: string; /** * Body param: Content of message. */ content?: string; } export interface MessageDeleteParams { /** * Identifier. */ account_id: string; /** * UUID. */ request_id: string; } export interface MessageGetParams { /** * Path param: Identifier. */ account_id: string; /** * Body param: Page number of results. */ page: number; /** * Body param: Number of results per page. */ per_page: number; /** * Body param: Retrieve mes ges created after this time. */ after?: string; /** * Body param: Retrieve messages created before this time. */ before?: string; /** * Body param: Field to sort results by. */ sort_by?: string; /** * Body param: Sort order (asc or desc). */ sort_order?: 'asc' | 'desc'; } export declare namespace MessageResource { export { type Message as Message, type MessageDeleteResponse as MessageDeleteResponse, type MessagesSinglePage as MessagesSinglePage, type MessageCreateParams as MessageCreateParams, type MessageUpdateParams as MessageUpdateParams, type MessageDeleteParams as MessageDeleteParams, type MessageGetParams as MessageGetParams, }; }