mirror of
https://github.com/FlipsideCrypto/DefinitelyTyped.git
synced 2026-02-06 10:56:53 +00:00
Adds type definitions for 'node-zendesk' (#36416)
* Adds type definitions for 'node-zendesk' Adds type definitions and tests Adds tsconfig and tslint config * Updates per review (@ckknight) Adds stub client classes (unknown) Fills in additional methods on defined classes Updates tests Replaces enums with type aliases consisting of unions of literals * Remove inadvertent vscode auto-insertion
This commit is contained in:
parent
94300fed84
commit
d225b60c6d
954
types/node-zendesk/index.d.ts
vendored
Normal file
954
types/node-zendesk/index.d.ts
vendored
Normal file
@ -0,0 +1,954 @@
|
||||
// Type definitions for node-zendesk 1.4
|
||||
// Project: https://github.com/blakmatrix/node-zendesk
|
||||
// Definitions by: jgeth <https://github.com/jgeth>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
// TypeScript Version: 3.0
|
||||
|
||||
/// <reference types="node"/>
|
||||
|
||||
import { PathLike } from 'fs';
|
||||
|
||||
export type ZendeskCallback<TResponse, TResult> = (
|
||||
error: Error | undefined,
|
||||
response: TResponse,
|
||||
result: TResult
|
||||
) => void;
|
||||
|
||||
export interface Client {
|
||||
accountsettings: unknown;
|
||||
activitystream: unknown;
|
||||
attachments: Attachments.Methods;
|
||||
brand: unknown;
|
||||
categories: unknown;
|
||||
customagentroles: unknown;
|
||||
dynamiccontent: unknown;
|
||||
forums: unknown;
|
||||
forumsubscriptions: unknown;
|
||||
groupmemberships: unknown;
|
||||
groups: unknown;
|
||||
helpers: unknown;
|
||||
imports: unknown;
|
||||
installations: unknown;
|
||||
jobstatuses: JobStatuses.Methods;
|
||||
locales: unknown;
|
||||
macros: Macros.Methods;
|
||||
oauthtokens: unknown;
|
||||
organizationfields: unknown;
|
||||
organizationmemberships: unknown;
|
||||
organizations: unknown;
|
||||
policies: unknown;
|
||||
requests: Requests.Methods;
|
||||
satisfactionratings: unknown;
|
||||
search: unknown;
|
||||
sessions: unknown;
|
||||
sharingagreement: unknown;
|
||||
suspendedtickets: unknown;
|
||||
tags: unknown;
|
||||
targets: unknown;
|
||||
ticketaudits: unknown;
|
||||
ticketevents: unknown;
|
||||
ticketexport: unknown;
|
||||
ticketfields: unknown;
|
||||
ticketforms: unknown;
|
||||
ticketimport: unknown;
|
||||
ticketmetrics: unknown;
|
||||
tickets: Tickets.Methods;
|
||||
topiccomments: unknown;
|
||||
topics: unknown;
|
||||
topicsubscriptions: unknown;
|
||||
topicvotes: unknown;
|
||||
triggers: unknown;
|
||||
userfields: Users.Fields.Methods;
|
||||
useridentities: Users.Identities.Methods;
|
||||
users: Users.Methods;
|
||||
views: unknown;
|
||||
}
|
||||
|
||||
export interface ClientOptions {
|
||||
username: string;
|
||||
token: string;
|
||||
remoteUri: string;
|
||||
oauth?: boolean;
|
||||
debug?: boolean;
|
||||
disableGlobalState?: boolean;
|
||||
asUser?: string;
|
||||
}
|
||||
|
||||
export function createClient(config: ClientOptions): Client;
|
||||
|
||||
export namespace Attachments {
|
||||
interface Methods {
|
||||
request(httpMethod: string, fields: unknown, config: unknown, cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
|
||||
upload(
|
||||
file: PathLike,
|
||||
fileOptions: {
|
||||
filename: string;
|
||||
token?: string;
|
||||
},
|
||||
cb: ZendeskCallback<unknown, unknown>
|
||||
): void;
|
||||
}
|
||||
|
||||
interface Photo extends PersistableModel {
|
||||
url: string;
|
||||
file_name: string;
|
||||
content_url: string;
|
||||
content_type: string;
|
||||
size: number;
|
||||
width: number;
|
||||
height: number;
|
||||
inline: boolean;
|
||||
}
|
||||
|
||||
interface Model extends Photo {
|
||||
thumbnails: ReadonlyArray<Photo>;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/job_statuses|Zendesk Job Statuses}
|
||||
*/
|
||||
export namespace JobStatuses {
|
||||
interface Methods {
|
||||
show(jobStatusId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
watch(
|
||||
jobStatusId: ZendeskID,
|
||||
interval: number,
|
||||
maxAttempts: number,
|
||||
cb: ZendeskCallback<unknown, unknown>
|
||||
): unknown;
|
||||
}
|
||||
|
||||
type Status = 'queued' | 'working' | 'failed' | 'completed' | 'killed';
|
||||
|
||||
interface Result extends PersistableModel {
|
||||
readonly action: string;
|
||||
readonly success: boolean;
|
||||
readonly status: string;
|
||||
}
|
||||
|
||||
interface ResponseModel extends PersistableModel {
|
||||
readonly url?: string | null;
|
||||
readonly total?: number;
|
||||
readonly progress?: number;
|
||||
readonly status?: Status;
|
||||
readonly message?: string | null;
|
||||
readonly results?: ReadonlyArray<Result>;
|
||||
}
|
||||
|
||||
interface ResponsePayload {
|
||||
readonly job_status: ResponseModel;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/macros|Zendesk Macros}
|
||||
*/
|
||||
export namespace Macros {
|
||||
interface Methods {
|
||||
applyTicket(
|
||||
ticketId: ZendeskID,
|
||||
macroId: number,
|
||||
cb: ZendeskCallback<unknown, unknown>
|
||||
): ApplyTicketResponsePayload;
|
||||
}
|
||||
|
||||
interface ApplyTicketResponsePayload {
|
||||
result: {
|
||||
ticket: Tickets.CreateModel;
|
||||
comment: {
|
||||
body: string;
|
||||
html_body: string;
|
||||
scoped_body?: unknown;
|
||||
public?: boolean;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/organizations|Zendesk Organizations}
|
||||
*/
|
||||
export namespace Organizations {
|
||||
interface Model extends AuditableModel {
|
||||
readonly url?: string;
|
||||
external_id?: string | null;
|
||||
name: string;
|
||||
domain_names?: ReadonlyArray<string>;
|
||||
details?: string | null;
|
||||
notes?: string | null;
|
||||
group_id?: number | null;
|
||||
shared_tickets?: boolean;
|
||||
shared_comments?: boolean;
|
||||
tags?: ReadonlyArray<string>;
|
||||
organization_fields?: object | null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/requests|Zendesk Requests}
|
||||
*/
|
||||
export namespace Requests {
|
||||
interface Methods {
|
||||
/** Listing Requests */
|
||||
list(cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listOpen(cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listSolved(cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listCCD(organizationId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listByUser(userId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listByOrganization(organizationId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
|
||||
/** Viewing Requests */
|
||||
getRequest(requestId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
|
||||
/** Creating Requests */
|
||||
create(request: CreatePayload, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
|
||||
/** Updating Requests */
|
||||
update(requestId: ZendeskID, request: UpdatePayload, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
|
||||
/** Listing Comments */
|
||||
listComments(requestId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): Comments.ListPayload;
|
||||
|
||||
/** Get Comment */
|
||||
getComment(
|
||||
requestId: ZendeskID,
|
||||
commentId: ZendeskID,
|
||||
cb: ZendeskCallback<unknown, unknown>
|
||||
): Comments.ResponsePayload;
|
||||
|
||||
/** Inherited */
|
||||
requestAll(httpMethod: string, fields: unknown, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/requests#create-request|Zendesk Requests Create}
|
||||
*/
|
||||
interface CreateModel {
|
||||
requester?: RequesterAnonymous; // Required for anonymous requests
|
||||
subject: string;
|
||||
comment: Comments.CreateModel;
|
||||
priority?: Tickets.Priority | null; // Anonymous requests can set priority, Authenticated requests cannot
|
||||
type?: Tickets.TicketType | null; // Anonymous requests can set type, Authenticated requests cannot
|
||||
custom_fields?: Tickets.Field[] | null;
|
||||
fields?: Tickets.Field[] | null;
|
||||
due_at?: string | null; // Anonymous requests can set due date as long as type == task. Authenticated requests cannot
|
||||
ticket_form_id?: number | null;
|
||||
recipient?: string | null;
|
||||
collaborators?: ZendeskID[] | string[] | Collaborator[];
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/requests#update-request|Zendesk Requests Update}
|
||||
*/
|
||||
interface UpdateModel {
|
||||
comment?: Comments.CreateModel;
|
||||
solved?: boolean;
|
||||
additional_collaborators?: ZendeskID[] | string[] | Collaborator[];
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/requests#json-format|Zendesk Requests JSON Format}
|
||||
*/
|
||||
interface ResponseModel extends AuditableModel {
|
||||
readonly url: string;
|
||||
readonly subject: string;
|
||||
readonly description: string;
|
||||
readonly status: Tickets.Status;
|
||||
readonly priority: Tickets.Priority | null;
|
||||
readonly type: Tickets.TicketType | null;
|
||||
readonly custom_fields: Tickets.Field[] | null;
|
||||
readonly fields: Tickets.Field[] | null;
|
||||
readonly organization_id: ZendeskID | null;
|
||||
readonly requester_id: ZendeskID;
|
||||
readonly assignee_id: ZendeskID | null;
|
||||
readonly group_id?: ZendeskID | null;
|
||||
readonly collaborator_ids: ZendeskID[];
|
||||
readonly email_cc_ids: ZendeskID[];
|
||||
readonly via: Tickets.Via;
|
||||
readonly is_public: boolean;
|
||||
readonly due_at: string | null;
|
||||
readonly can_be_solved_by_me?: boolean;
|
||||
readonly solved?: boolean;
|
||||
readonly ticket_form_id?: number | null;
|
||||
readonly recipient: string | null;
|
||||
readonly followup_source_id: string | null;
|
||||
}
|
||||
|
||||
interface RequesterAnonymous {
|
||||
name: string;
|
||||
email?: string;
|
||||
locale_id?: ZendeskID;
|
||||
}
|
||||
|
||||
interface Collaborator {
|
||||
name?: string;
|
||||
email: string;
|
||||
}
|
||||
|
||||
interface CreatePayload {
|
||||
readonly request: CreateModel;
|
||||
}
|
||||
|
||||
interface UpdatePayload {
|
||||
readonly request: UpdateModel;
|
||||
}
|
||||
|
||||
interface ResponsePayload {
|
||||
readonly request: ResponseModel;
|
||||
}
|
||||
|
||||
interface ListPayload extends PaginablePayload {
|
||||
readonly requests: ReadonlyArray<ResponseModel>;
|
||||
}
|
||||
|
||||
namespace Comments {
|
||||
interface CreateModel {
|
||||
url?: string;
|
||||
request_id?: number;
|
||||
body?: string;
|
||||
html_body?: string;
|
||||
public?: boolean;
|
||||
author_id?: ZendeskID;
|
||||
uploads?: ReadonlyArray<string>;
|
||||
}
|
||||
|
||||
interface ResponseModel extends TemporalModel {
|
||||
readonly url: string;
|
||||
readonly type: RequestType;
|
||||
readonly request_id: number;
|
||||
readonly body: string;
|
||||
readonly html_body: string;
|
||||
readonly plain_body: string;
|
||||
readonly public: boolean;
|
||||
readonly author_id: ZendeskID;
|
||||
readonly attachments: ReadonlyArray<Attachments.Model>;
|
||||
readonly via?: Tickets.Via;
|
||||
readonly metadata?: Tickets.Comments.Metadata;
|
||||
}
|
||||
|
||||
type RequestType = 'Comment' | 'VoiceComment';
|
||||
|
||||
namespace CommentsUsers {
|
||||
interface ResponseModel extends PersistableModel {
|
||||
readonly name: string;
|
||||
readonly photo: Attachments.Model | null;
|
||||
readonly agent: boolean;
|
||||
readonly organization_id: number | null;
|
||||
}
|
||||
}
|
||||
|
||||
interface ListPayload extends PaginablePayload {
|
||||
comments: ReadonlyArray<ResponseModel>;
|
||||
users: ReadonlyArray<CommentsUsers.ResponseModel>;
|
||||
organizations: ReadonlyArray<Tickets.Comments.Organizations.ResponseModel>;
|
||||
}
|
||||
|
||||
interface ResponsePayload {
|
||||
readonly comment: ResponseModel;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/tickets|Zendesk Tickets}
|
||||
*/
|
||||
export namespace Tickets {
|
||||
interface Methods {
|
||||
/** Listing Tickets */
|
||||
list(cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listAssigned(userId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listByOrganization(organizationId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listByUserRequested(userId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listByUserCCD(userId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listWithFilter(type: string, value: unknown, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listRecent(cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listCollaborators(ticketId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): Users.ListPayload;
|
||||
listIncidents(ticketId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listMetrics(ticketId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): Metrics.ResponsePayload;
|
||||
|
||||
/** Viewing Tickets */
|
||||
show(ticketId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
showMany(ticketIds: ReadonlyArray<ZendeskID>, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
|
||||
/** Creating Tickets */
|
||||
create(ticket: CreatePayload, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
createMany(tickets: CreateManyPayload, cb: ZendeskCallback<unknown, unknown>): JobStatuses.ResponsePayload;
|
||||
|
||||
/** Updating Tickets */
|
||||
update(ticketId: ZendeskID, ticket: UpdatePayload, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
updateMany(tickets: UpdateManyPayload, cb: ZendeskCallback<unknown, unknown>): JobStatuses.ResponsePayload;
|
||||
|
||||
/** Deleting Tickets */
|
||||
delete(ticketId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
deleteMany(ticketIds: ReadonlyArray<ZendeskID>, cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
|
||||
/** Merging Tickets */
|
||||
merge(
|
||||
ticketId: ZendeskID,
|
||||
mergingTickets: MergePayload,
|
||||
cb: ZendeskCallback<unknown, unknown>
|
||||
): JobStatuses.ResponsePayload;
|
||||
|
||||
/** Ticket Exports */
|
||||
export(startTime: number, cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
exportSample(startTime: number, options: unknown): unknown;
|
||||
incremental(startTime: number, cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
incrementalInclude(startTime: number, include: unknown, cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
incrementalSample(startTime: number, cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
|
||||
/** Listing Comments */
|
||||
getComments(requestId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): Comments.ListPayload;
|
||||
|
||||
/** Listing Audits */
|
||||
exportAudit(ticketId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): AuditsListPayload;
|
||||
|
||||
/** Adding Tags */
|
||||
addTags(ticketId: ZendeskID, tags: ReadonlyArray<string>, cb: ZendeskCallback<unknown, unknown>): TagsPayload;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/tickets#create-ticket|Zendesk Tickets Create}
|
||||
*/
|
||||
interface CreateModel {
|
||||
comment: Requests.Comments.CreateModel;
|
||||
external_id?: string | null;
|
||||
type?: TicketType | null;
|
||||
subject?: string | null;
|
||||
raw_subject?: string | null;
|
||||
priority?: Priority | null;
|
||||
status?: Status | null;
|
||||
recipient?: string | null;
|
||||
requester_id?: ZendeskID;
|
||||
submitter_id?: ZendeskID | null;
|
||||
assignee_id?: ZendeskID | null;
|
||||
organization_id?: number | null;
|
||||
group_id?: number | null;
|
||||
collaborator_ids?: ReadonlyArray<number> | null;
|
||||
collaborators?: ReadonlyArray<any> | null;
|
||||
follower_ids?: ReadonlyArray<number> | null;
|
||||
email_cc_ids?: ReadonlyArray<number> | null;
|
||||
forum_topic_id?: number | null;
|
||||
problem_id?: number | null;
|
||||
due_at?: string | null;
|
||||
tags?: ReadonlyArray<string> | null;
|
||||
custom_fields?: Field[] | null;
|
||||
fields?: Field[] | null;
|
||||
via_followup_source_id?: number | null;
|
||||
macro_ids?: ReadonlyArray<number> | null;
|
||||
ticket_form_id?: number | null;
|
||||
brand_id?: number | null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/tickets#update-ticket|Zendesk Tickets Update}
|
||||
*/
|
||||
interface UpdateModel {
|
||||
subject?: string | null;
|
||||
comment?: Requests.Comments.CreateModel;
|
||||
requester_id?: ZendeskID;
|
||||
assignee_id?: ZendeskID | null;
|
||||
assignee_email?: string | null;
|
||||
group_id?: number | null;
|
||||
organization_id?: number | null;
|
||||
collaborator_ids?: ReadonlyArray<number> | null;
|
||||
additional_collaborators?: ReadonlyArray<any> | null;
|
||||
followers?: ReadonlyArray<Follower> | null;
|
||||
email_ccs?: ReadonlyArray<EmailCC> | null;
|
||||
type?: TicketType | null;
|
||||
priority?: Priority | null;
|
||||
status?: Status | null;
|
||||
tags?: ReadonlyArray<string> | null;
|
||||
external_id?: string | null;
|
||||
problem_id?: number | null;
|
||||
due_at?: string | null;
|
||||
custom_fields?: Field[] | null;
|
||||
updated_stamp?: string | null;
|
||||
safe_update?: boolean;
|
||||
sharing_agreement_ids?: ReadonlyArray<number> | null;
|
||||
macro_ids?: ReadonlyArray<number> | null;
|
||||
attribute_value_ids?: ReadonlyArray<number> | null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/tickets#json-format|Zendesk Tickets JSON Format}
|
||||
*/
|
||||
interface ResponseModel extends AuditableModel {
|
||||
readonly url: string;
|
||||
readonly external_id: string | null;
|
||||
readonly type: TicketType | null;
|
||||
readonly subject: string | null;
|
||||
readonly raw_subject: string | null;
|
||||
readonly description: string;
|
||||
readonly priority: Priority | null;
|
||||
readonly status: Status;
|
||||
readonly recipient: string | null;
|
||||
readonly requester_id: ZendeskID;
|
||||
readonly submitter_id: ZendeskID;
|
||||
readonly assignee_id: ZendeskID | null;
|
||||
readonly organization_id: number;
|
||||
readonly group_id: number | null;
|
||||
readonly collaborator_ids: ReadonlyArray<number>;
|
||||
readonly follower_ids: ReadonlyArray<number>;
|
||||
readonly email_cc_ids: ReadonlyArray<number>;
|
||||
readonly forum_topic_id: number | null;
|
||||
readonly problem_id: number | null;
|
||||
readonly has_incidents: boolean;
|
||||
readonly due_at: string | null;
|
||||
readonly tags: ReadonlyArray<string>;
|
||||
readonly via: Via;
|
||||
readonly custom_fields: Field[];
|
||||
readonly fields: Field[];
|
||||
readonly satisfaction_rating: object | string | null;
|
||||
readonly sharing_agreement_ids: ReadonlyArray<number>;
|
||||
readonly followup_ids: ReadonlyArray<number>;
|
||||
readonly ticket_form_id?: number | null; // Enterprise version only
|
||||
readonly brand_id?: number | null; // Enterprise version only
|
||||
readonly allow_channelback: boolean;
|
||||
readonly allow_attachments: boolean;
|
||||
readonly is_public: boolean;
|
||||
readonly comment_count?: number;
|
||||
}
|
||||
|
||||
interface Audit {
|
||||
readonly id: ZendeskID;
|
||||
readonly ticket_id: ZendeskID;
|
||||
readonly metadata: unknown | null;
|
||||
readonly via: Via | null;
|
||||
readonly created_at: string;
|
||||
readonly author_id: ZendeskID;
|
||||
readonly events: ReadonlyArray<unknown> | null;
|
||||
}
|
||||
|
||||
interface EmailCC {
|
||||
user_id?: ZendeskID;
|
||||
user_email?: string;
|
||||
action: string;
|
||||
}
|
||||
|
||||
interface Field {
|
||||
id: number;
|
||||
value: any;
|
||||
}
|
||||
|
||||
interface Follower {
|
||||
user_id?: ZendeskID;
|
||||
user_email?: string;
|
||||
action: string;
|
||||
}
|
||||
|
||||
type Priority = 'urgent' | 'high' | 'normal' | 'low';
|
||||
|
||||
type Status = 'new' | 'open' | 'pending' | 'hold' | 'solved' | 'closed';
|
||||
|
||||
type TicketType = 'problem' | 'incident' | 'question' | 'task';
|
||||
|
||||
interface Via {
|
||||
channel: ViaChannel;
|
||||
source: ViaSource;
|
||||
}
|
||||
|
||||
type ViaChannel = 'api' | 'web' | 'mobile' | 'rule' | 'system';
|
||||
|
||||
interface ViaSource {
|
||||
to: object;
|
||||
from: object;
|
||||
rel: string | null;
|
||||
}
|
||||
|
||||
interface CreatePayload {
|
||||
readonly ticket: CreateModel;
|
||||
}
|
||||
|
||||
interface CreateManyPayload {
|
||||
readonly tickets: ReadonlyArray<CreateModel>;
|
||||
}
|
||||
|
||||
interface UpdatePayload {
|
||||
readonly ticket: UpdateModel;
|
||||
}
|
||||
|
||||
interface UpdateManyPayload {
|
||||
readonly tickets: ReadonlyArray<UpdateModel>;
|
||||
}
|
||||
|
||||
interface MergePayload {
|
||||
readonly ids: ReadonlyArray<ZendeskID>;
|
||||
readonly target_comment?: string | null;
|
||||
readonly source_comment?: string | null;
|
||||
}
|
||||
|
||||
interface AuditsListPayload extends PaginablePayload {
|
||||
readonly audits: ReadonlyArray<Audit>;
|
||||
}
|
||||
|
||||
interface TagsPayload {
|
||||
readonly tags: ReadonlyArray<string>;
|
||||
}
|
||||
|
||||
interface ResponsePayload {
|
||||
readonly ticket: ResponseModel;
|
||||
readonly audit: Audit;
|
||||
}
|
||||
|
||||
interface ListPayload extends PaginablePayload {
|
||||
readonly tickets: ReadonlyArray<ResponseModel>;
|
||||
}
|
||||
|
||||
namespace Comments {
|
||||
interface ResponseModel extends Requests.Comments.ResponseModel {
|
||||
readonly via?: Via;
|
||||
readonly metadata?: Metadata;
|
||||
}
|
||||
|
||||
interface Metadata {
|
||||
flags?: ReadonlyArray<number>;
|
||||
flag_options: unknown;
|
||||
}
|
||||
|
||||
interface ListPayload extends PaginablePayload {
|
||||
comments: ReadonlyArray<ResponseModel>;
|
||||
}
|
||||
|
||||
namespace CommentsUsers {
|
||||
interface ResponseModel extends Requests.Comments.CommentsUsers.ResponseModel {
|
||||
readonly role: Users.Role;
|
||||
}
|
||||
}
|
||||
|
||||
namespace Organizations {
|
||||
interface ResponseModel extends PersistableModel {
|
||||
readonly name: string;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace Metrics {
|
||||
interface MinutesObject {
|
||||
calendar: number;
|
||||
business: number;
|
||||
}
|
||||
|
||||
interface ResponseModel extends AuditableModel {
|
||||
readonly ticket_id?: ZendeskID;
|
||||
readonly url?: string;
|
||||
readonly group_stations?: number;
|
||||
readonly assignee_stations?: number;
|
||||
readonly reopens?: number;
|
||||
readonly replies?: number;
|
||||
readonly assignee_updated_at?: string | null;
|
||||
readonly requester_updated_at?: string | null;
|
||||
readonly initially_assigned_at?: string | null;
|
||||
readonly assigned_at?: string | null;
|
||||
readonly solved_at?: string | null;
|
||||
readonly latest_comment_added_at?: string | null;
|
||||
readonly first_resolution_time_in_minutes?: MinutesObject;
|
||||
readonly reply_time_in_minutes?: MinutesObject;
|
||||
readonly full_resolution_time_in_minutes?: MinutesObject;
|
||||
readonly agent_wait_time_in_minutes?: MinutesObject;
|
||||
readonly requester_wait_time_in_minutes?: MinutesObject;
|
||||
}
|
||||
|
||||
interface ResponsePayload {
|
||||
readonly ticket_metric: ResponseModel;
|
||||
}
|
||||
|
||||
interface ListPayload {
|
||||
readonly ticket_metrics: ReadonlyArray<ResponseModel>;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/users|Zendesk Users}
|
||||
*/
|
||||
export namespace Users {
|
||||
interface Methods {
|
||||
/** User Auth */
|
||||
auth(cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
|
||||
/** Listing Users */
|
||||
list(cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listByGroup(groupId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
listByOrganization(organizationId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
|
||||
/** Showing Users */
|
||||
show(userId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
showMany(userIds: ReadonlyArray<ZendeskID>, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
|
||||
/** Creating Users */
|
||||
create(user: CreatePayload, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
createMany(users: CreateManyPayload, cb: ZendeskCallback<unknown, unknown>): JobStatuses.ResponsePayload;
|
||||
createOrUpdate(user: CreatePayload, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
createOrUpdateMany(
|
||||
users: CreateManyPayload,
|
||||
cb: ZendeskCallback<unknown, unknown>
|
||||
): JobStatuses.ResponsePayload;
|
||||
|
||||
/** Updating Users */
|
||||
update(userId: ZendeskID, user: UpdatePayload, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
updateMany(
|
||||
userIds: UpdateIdPayload,
|
||||
users: UpdateManyPayload,
|
||||
cb: ZendeskCallback<unknown, unknown>
|
||||
): JobStatuses.ResponsePayload;
|
||||
|
||||
/** Suspending Users */
|
||||
suspend(userId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
unsuspend(userId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
|
||||
/** Deleting Users */
|
||||
delete(userId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
|
||||
/** Searching Users */
|
||||
search(params: unknown, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
|
||||
/** Getting own User */
|
||||
me(cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
|
||||
/** Merging Users */
|
||||
merge(userId: ZendeskID, targetUserId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
|
||||
/** Changing User Password */
|
||||
password(
|
||||
userId: ZendeskID,
|
||||
oldPassword: string,
|
||||
newPassword: string,
|
||||
cb: ZendeskCallback<unknown, unknown>
|
||||
): unknown;
|
||||
|
||||
/** Users Export */
|
||||
incrementalInclude(startTime: number, include: unknown, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
incremental(startTime: number, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
incrementalSample(startTime: number, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
}
|
||||
|
||||
interface BaseModel {
|
||||
email?: string | null;
|
||||
alias?: string | null;
|
||||
custom_role_id?: number | null;
|
||||
details?: string | null;
|
||||
external_id?: string | null;
|
||||
locale_id?: number | null;
|
||||
moderator?: boolean | null;
|
||||
notes?: string | null;
|
||||
only_private_comments?: boolean | null;
|
||||
organization_id?: number | null;
|
||||
default_group_id?: number | null;
|
||||
phone?: string | null;
|
||||
photo?: Attachments.Model | null;
|
||||
restricted_agent?: boolean | null;
|
||||
role?: Role | null;
|
||||
signature?: string | null;
|
||||
suspended?: boolean | null;
|
||||
tags?: ReadonlyArray<unknown> | null;
|
||||
ticket_restriction?: TicketRestriction | null;
|
||||
time_zone?: string | null;
|
||||
user_fields?: object | null;
|
||||
verified?: boolean | null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/users#create-user|Zendesk Users Create}
|
||||
*/
|
||||
interface CreateModel extends BaseModel {
|
||||
name: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/users#update-user|Zendesk Users Update}
|
||||
*/
|
||||
interface UpdateModel extends BaseModel {
|
||||
name?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/users#json-format-for-agent-or-admin-requests|Zendesk Users JSON Format}
|
||||
*/
|
||||
interface ResponseModel extends AuditableModel {
|
||||
readonly email: string | null;
|
||||
readonly name: string;
|
||||
readonly active: boolean;
|
||||
readonly alias: string | null;
|
||||
readonly chat_only: boolean;
|
||||
readonly custom_role_id: number | null;
|
||||
readonly role_type: RoleType;
|
||||
readonly details: string | null;
|
||||
readonly external_id: string | null;
|
||||
readonly last_login_at: string | null;
|
||||
readonly locale: string | null;
|
||||
readonly locale_id: number | null;
|
||||
readonly moderator: boolean;
|
||||
readonly notes: string | null;
|
||||
readonly only_private_comments: boolean;
|
||||
readonly organization_id: number | null;
|
||||
readonly default_group_id: number | null;
|
||||
readonly phone: string | null;
|
||||
readonly shared_phone_number: boolean | null;
|
||||
readonly photo: Attachments.Model | null;
|
||||
readonly restricted_agent: boolean;
|
||||
readonly role: Role;
|
||||
readonly shared: boolean;
|
||||
readonly shared_agent: boolean;
|
||||
readonly signature: string | null;
|
||||
readonly suspended: boolean;
|
||||
readonly tags?: ReadonlyArray<unknown> | null;
|
||||
readonly ticket_restriction: TicketRestriction | null;
|
||||
readonly time_zone: string | null;
|
||||
readonly two_factor_auth_enabled: boolean;
|
||||
readonly url: string;
|
||||
readonly user_fields?: object | null;
|
||||
readonly verified: boolean;
|
||||
readonly report_csv: boolean;
|
||||
}
|
||||
|
||||
type UpdateIdPayload =
|
||||
| string
|
||||
| ReadonlyArray<ZendeskID>
|
||||
| { ids: ReadonlyArray<ZendeskID> }
|
||||
| { external_ids: ReadonlyArray<ZendeskID> };
|
||||
|
||||
interface CreatePayload {
|
||||
user: CreateModel;
|
||||
}
|
||||
|
||||
interface CreateManyPayload {
|
||||
users: ReadonlyArray<CreateModel>;
|
||||
}
|
||||
|
||||
interface UpdatePayload {
|
||||
user: UpdateModel;
|
||||
}
|
||||
|
||||
interface UpdateManyPayload {
|
||||
users: ReadonlyArray<UpdateModel>;
|
||||
}
|
||||
|
||||
interface ResponsePayload {
|
||||
user: ResponseModel;
|
||||
}
|
||||
|
||||
interface ListPayload extends PaginablePayload {
|
||||
users: ReadonlyArray<ResponseModel>;
|
||||
}
|
||||
|
||||
type Role = 'admin' | 'agent' | 'end-user';
|
||||
|
||||
/**
|
||||
* Defines an agent type
|
||||
* 0 - Custom
|
||||
* 1 - Light
|
||||
* 2 - Chat
|
||||
*/
|
||||
type RoleType = 0 | 1 | 2;
|
||||
|
||||
type TicketRestriction = 'assigned' | 'groups' | 'organization' | 'requested';
|
||||
|
||||
/**
|
||||
* @see {@link https://developer.zendesk.com/rest_api/docs/support/user_identities|Zendesk User Identities}
|
||||
*/
|
||||
namespace Identities {
|
||||
interface Methods {
|
||||
/** Listing Identities */
|
||||
list(userId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
|
||||
/** Viewing Identities */
|
||||
show(userId: ZendeskID, identityId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
|
||||
/** Creating Identities */
|
||||
create(userId: ZendeskID, identity: CreatePayload, cb: ZendeskCallback<unknown, unknown>): ResponseModel;
|
||||
|
||||
/** Updating Identities */
|
||||
update(
|
||||
userId: ZendeskID,
|
||||
identityId: ZendeskID,
|
||||
identity: UpdatePayload,
|
||||
cb: ZendeskCallback<unknown, unknown>
|
||||
): ResponsePayload;
|
||||
makePrimary(userId: ZendeskID, identityId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ListPayload;
|
||||
verify(userId: ZendeskID, identityId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): ResponsePayload;
|
||||
requestVerification(
|
||||
userId: ZendeskID,
|
||||
identityId: ZendeskID,
|
||||
cb: ZendeskCallback<unknown, unknown>
|
||||
): unknown;
|
||||
|
||||
/** Deleting Identities */
|
||||
delete(userId: ZendeskID, identityId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
}
|
||||
|
||||
interface CreateModel {
|
||||
type: IdentityType;
|
||||
value: string;
|
||||
verified?: boolean;
|
||||
primary?: boolean;
|
||||
}
|
||||
|
||||
interface UpdateModel {
|
||||
value?: string;
|
||||
verified?: boolean;
|
||||
}
|
||||
|
||||
interface ResponseModel extends AuditableModel {
|
||||
readonly url: string;
|
||||
readonly user_id: ZendeskID;
|
||||
readonly type: IdentityType;
|
||||
readonly value: string;
|
||||
readonly verified: boolean;
|
||||
readonly primary: boolean;
|
||||
readonly undeliverable_count: number;
|
||||
readonly deliverable_state: DeliverableState;
|
||||
}
|
||||
|
||||
interface CreatePayload {
|
||||
readonly identity: CreateModel;
|
||||
}
|
||||
|
||||
interface UpdatePayload {
|
||||
readonly identity: UpdateModel;
|
||||
}
|
||||
|
||||
interface ListPayload extends PaginablePayload {
|
||||
readonly identities: ReadonlyArray<ResponseModel>;
|
||||
}
|
||||
|
||||
interface ResponsePayload {
|
||||
readonly identity: ResponseModel;
|
||||
}
|
||||
|
||||
type IdentityType = 'agent_forwarding' | 'email' | 'facebook' | 'google' | 'phone_number' | 'sdk';
|
||||
|
||||
type DeliverableState = 'deliverable' | 'undeliverable';
|
||||
}
|
||||
|
||||
namespace Fields {
|
||||
interface Methods {
|
||||
list(cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
show(fieldId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
create(field: unknown, cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
update(fieldId: ZendeskID, field: unknown, cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
delete(fieldId: ZendeskID, cb: ZendeskCallback<unknown, unknown>): unknown;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export interface PaginablePayload {
|
||||
next_page: number | null;
|
||||
previous_page: number | null;
|
||||
count: number;
|
||||
}
|
||||
|
||||
export interface PersistableModel {
|
||||
readonly id: ZendeskID;
|
||||
}
|
||||
|
||||
export interface TemporalModel extends PersistableModel {
|
||||
readonly created_at: string;
|
||||
}
|
||||
|
||||
export interface AuditableModel extends TemporalModel {
|
||||
readonly updated_at: string | null;
|
||||
}
|
||||
|
||||
export type ZendeskID = number;
|
||||
92
types/node-zendesk/node-zendesk-tests.ts
Normal file
92
types/node-zendesk/node-zendesk-tests.ts
Normal file
@ -0,0 +1,92 @@
|
||||
import { Client, createClient, ZendeskID } from 'node-zendesk';
|
||||
|
||||
const client: Client = createClient({
|
||||
username: 'foo',
|
||||
token: 'secret',
|
||||
remoteUri: '/example',
|
||||
});
|
||||
|
||||
const zendeskCallback = () => {};
|
||||
|
||||
/** Job Statuses Methods */
|
||||
client.jobstatuses.show(123, zendeskCallback);
|
||||
client.jobstatuses.watch(123, 2, 3, zendeskCallback);
|
||||
|
||||
/** Macros Methods */
|
||||
client.macros.applyTicket(123, 123, zendeskCallback);
|
||||
|
||||
/** Requests Methods */
|
||||
client.requests.list(zendeskCallback);
|
||||
client.requests.listOpen(zendeskCallback);
|
||||
client.requests.listSolved(zendeskCallback);
|
||||
client.requests.listCCD(123, zendeskCallback);
|
||||
client.requests.listByUser(123, zendeskCallback);
|
||||
client.requests.listByOrganization(123, zendeskCallback);
|
||||
client.requests.getRequest(123, zendeskCallback);
|
||||
client.requests.create({ request: { subject: 'foo', comment: {} } }, zendeskCallback);
|
||||
client.requests.update(123, { request: {} }, zendeskCallback);
|
||||
client.requests.listComments(123, zendeskCallback);
|
||||
client.requests.getComment(123, 123, zendeskCallback);
|
||||
|
||||
/** Tickets Methods */
|
||||
client.tickets.list(zendeskCallback);
|
||||
client.tickets.listByOrganization(123, zendeskCallback);
|
||||
client.tickets.listByUserRequested(123, zendeskCallback);
|
||||
client.tickets.listByUserCCD(123, zendeskCallback);
|
||||
client.tickets.listAssigned(123, zendeskCallback);
|
||||
client.tickets.listWithFilter('foo', 'bar', zendeskCallback);
|
||||
client.tickets.listRecent(zendeskCallback);
|
||||
client.tickets.listCollaborators(123, zendeskCallback);
|
||||
client.tickets.listIncidents(123, zendeskCallback);
|
||||
client.tickets.listMetrics(123, zendeskCallback);
|
||||
client.tickets.show(123, zendeskCallback);
|
||||
client.tickets.showMany([123, 234], zendeskCallback);
|
||||
client.tickets.create({ ticket: { comment: {} } }, zendeskCallback);
|
||||
client.tickets.createMany({ tickets: [{ comment: {} }] }, zendeskCallback);
|
||||
client.tickets.update(123, { ticket: {} }, zendeskCallback);
|
||||
client.tickets.updateMany({ tickets: [{}] }, zendeskCallback);
|
||||
client.tickets.delete(123, zendeskCallback);
|
||||
client.tickets.deleteMany([123, 234], zendeskCallback);
|
||||
client.tickets.merge(123, { ids: [234, 345] }, zendeskCallback);
|
||||
client.tickets.export(1332034771, zendeskCallback);
|
||||
client.tickets.exportSample(1332034771, {});
|
||||
client.tickets.incremental(1332034771, zendeskCallback);
|
||||
client.tickets.incrementalInclude(1332034771, {}, zendeskCallback);
|
||||
client.tickets.incrementalSample(1332034771, zendeskCallback);
|
||||
client.tickets.getComments(123, zendeskCallback);
|
||||
client.tickets.exportAudit(123, zendeskCallback);
|
||||
client.tickets.addTags(123, ['foo', 'bar'], zendeskCallback);
|
||||
|
||||
/** Users Methods */
|
||||
client.users.auth(zendeskCallback);
|
||||
client.users.list(zendeskCallback);
|
||||
client.users.listByGroup(123, zendeskCallback);
|
||||
client.users.listByOrganization(123, zendeskCallback);
|
||||
client.users.show(123, zendeskCallback);
|
||||
client.users.showMany([123, 234], zendeskCallback);
|
||||
client.users.create({ user: { name: 'foo' } }, zendeskCallback);
|
||||
client.users.createMany({ users: [{ name: 'foo' }] }, zendeskCallback);
|
||||
client.users.createOrUpdate({ user: { name: 'foo' } }, zendeskCallback);
|
||||
client.users.createOrUpdateMany({ users: [{ name: 'foo' }] }, zendeskCallback);
|
||||
client.users.update(123, { user: {} }, zendeskCallback);
|
||||
client.users.updateMany([123, 234], { users: [{}, {}] }, zendeskCallback);
|
||||
client.users.suspend(123, zendeskCallback);
|
||||
client.users.unsuspend(123, zendeskCallback);
|
||||
client.users.delete(123, zendeskCallback);
|
||||
client.users.search({}, zendeskCallback);
|
||||
client.users.me(zendeskCallback);
|
||||
client.users.merge(123, 234, zendeskCallback);
|
||||
client.users.password(123, 'foo', 'bar', zendeskCallback);
|
||||
client.users.incrementalInclude(1332034771, {}, zendeskCallback);
|
||||
client.users.incremental(1332034771, zendeskCallback);
|
||||
client.users.incrementalSample(1332034771, zendeskCallback);
|
||||
|
||||
/** User Identities Methods */
|
||||
client.useridentities.list(123, zendeskCallback);
|
||||
client.useridentities.show(123, 234, zendeskCallback);
|
||||
client.useridentities.create(123, { identity: { type: 'email', value: 'foo@example.com' } }, zendeskCallback);
|
||||
client.useridentities.update(123, 234, { identity: {} }, zendeskCallback);
|
||||
client.useridentities.makePrimary(123, 234, zendeskCallback);
|
||||
client.useridentities.verify(123, 234, zendeskCallback);
|
||||
client.useridentities.requestVerification(123, 234, zendeskCallback);
|
||||
client.useridentities.delete(123, 234, zendeskCallback);
|
||||
23
types/node-zendesk/tsconfig.json
Normal file
23
types/node-zendesk/tsconfig.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"lib": [
|
||||
"es6"
|
||||
],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictFunctionTypes": true,
|
||||
"strictNullChecks": true,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"node-zendesk-tests.ts"
|
||||
]
|
||||
}
|
||||
1
types/node-zendesk/tslint.json
Normal file
1
types/node-zendesk/tslint.json
Normal file
@ -0,0 +1 @@
|
||||
{ "extends": "dtslint/dt.json" }
|
||||
Loading…
Reference in New Issue
Block a user