Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,4 +6,5 @@ export { ElementTypes } from './src/resources/Element';
export { EntityTypes, EntityStatuses } from './src/resources/Entity';
export { PaymentFundStatuses, PaymentStatuses } from './src/resources/Payment';
export { ReportTypes, ReportStatuses } from './src/resources/Report';
export { ReportScheduleStatuses, ReportScheduleDeliveryMethodTypes } from './src/resources/ReportSchedule';
export { WebhookTypes } from './src/resources/Webhook';
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
{
"name": "method-node",
"version": "3.0.0",
"version": "3.0.1",
"description": "Node.js library for the Method API",
"main": "dist/index.ts",
"module": "dist/index.mjs",
Expand Down
3 changes: 3 additions & 0 deletions src/method.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,7 @@ import Event from './resources/Event';
import Merchant from './resources/Merchant';
import Payment from './resources/Payment';
import Report from './resources/Report';
import ReportSchedule from './resources/ReportSchedule';
import Webhook from './resources/Webhook';
import HealthCheck, { IPingResponse } from './resources/HealthCheck';
import Simulate from './resources/Simulate';
Expand All@@ -25,6 +26,7 @@ export class Method {
merchants: Merchant;
payments: Payment;
reports: Report;
reportSchedules: ReportSchedule;
webhooks: Webhook;
healthcheck: HealthCheck;
simulate: Simulate;
Expand All@@ -46,6 +48,7 @@ export class Method {
this.merchants = new Merchant(config);
this.payments = new Payment(config);
this.reports = new Report(config);
this.reportSchedules = new ReportSchedule(config);
this.webhooks = new Webhook(config);
this.healthcheck = new HealthCheck(config);
this.simulate = new Simulate(config);
Expand Down
8 changes: 8 additions & 0 deletions src/resource.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,11 +16,13 @@ import { SimulateAttributesInstance } from './resources/Simulate/Entities/Attrib
import { SimulateVerificationSessionInstance } from './resources/Simulate/Accounts/VerificationSessions';
import { SimulatePaymentInstrumentInstance } from './resources/Simulate/PaymentInstruments';
import { ManagedAccountSubResources } from './resources/ManagedAccount';
import { ReportScheduleSubResources } from './resources/ReportSchedule';

type TSubResources =
| AccountSubResources
| PaymentSubResources
| EntitySubResources
| ReportScheduleSubResources
| SimulateAccountsSubResources
| SimulateEntitiesSubResources
| SimulateCreditScoresInstance
Expand DownExpand Up@@ -307,6 +309,12 @@ export default class Resource extends ExtensibleFunction {
return (await this.client.delete(`/${id}`)).data.data;
}

protected async _deleteWithParams<Response, Params = {}>(
params: Params,
): Promise<Response> {
return (await this.client.delete('', { params })).data.data;
}

protected async _deleteWithSubPath<Response>(
path: string,
requestConfig: IRequestConfig = {},
Expand Down
53 changes: 53 additions & 0 deletions src/resources/ReportSchedule/DeliveryMethods.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule, TReportScheduleDeliveryMethodTypes } from './types';

export interface IReportScheduleDeliveryMethodAddOpts {
delivery_method: TReportScheduleDeliveryMethodTypes;
};

export interface IReportScheduleDeliveryMethodsReplaceOpts {
delivery_methods: TReportScheduleDeliveryMethodTypes[];
};

export default class ReportScheduleDeliveryMethods extends Resource {
constructor(config: Configuration) {
super(config.addPath('delivery_methods'));
}

/**
* Adds a single delivery method to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/add
*
* @param opts IReportScheduleDeliveryMethodAddOpts: { delivery_method: TReportScheduleDeliveryMethodTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleDeliveryMethodAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodAddOpts>(opts);
}

/**
* Replaces the full delivery_methods array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/replace
*
* @param opts IReportScheduleDeliveryMethodsReplaceOpts: { delivery_methods: TReportScheduleDeliveryMethodTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleDeliveryMethodsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodsReplaceOpts>(opts);
}

/**
* Removes a single delivery method from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/delete
*
* @param delivery_method The delivery method to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(delivery_method: TReportScheduleDeliveryMethodTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { delivery_method: TReportScheduleDeliveryMethodTypes }>({ delivery_method });
}
};
56 changes: 56 additions & 0 deletions src/resources/ReportSchedule/Recipients.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule } from './types';

export interface IReportScheduleRecipientAddOpts {
recipient: string;
};

export interface IReportScheduleRecipientsReplaceOpts {
recipients: string[];
};

export default class ReportScheduleRecipients extends Resource {
constructor(config: Configuration) {
super(config.addPath('recipients'));
}

/**
* Adds a single recipient email address to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/add
*
* @param opts IReportScheduleRecipientAddOpts: { recipient: string }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleRecipientAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleRecipientAddOpts>(opts);
}

/**
* Replaces the full recipients array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/replace
*
* @param opts IReportScheduleRecipientsReplaceOpts: { recipients: string[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleRecipientsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleRecipientsReplaceOpts>(opts);
}

/**
* Removes a recipient from an existing Report Schedule. Provide a recipient to
* remove a single email address, or omit it to clear all recipients.
* https://docs.methodfi.com/reference/report-schedules/recipients/delete
*
* @param recipient The email address to remove. If omitted, all recipients are cleared.
* @returns Returns the updated Report Schedule object.
*/

async delete(recipient?: string) {
return super._deleteWithParams<IResponse<IReportSchedule>, { recipient?: string }>(
recipient ? { recipient } : {},
);
}
};
54 changes: 54 additions & 0 deletions src/resources/ReportSchedule/ReportTypes.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { TReportTypes } from '../Report';
import type { IReportSchedule } from './types';

export interface IReportScheduleTypeAddOpts {
type: TReportTypes;
};

export interface IReportScheduleTypesReplaceOpts {
types: TReportTypes[];
};

export default class ReportScheduleTypes extends Resource {
constructor(config: Configuration) {
super(config.addPath('types'));
}

/**
* Adds a single Report type to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/add
*
* @param opts IReportScheduleTypeAddOpts: { type: TReportTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleTypeAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleTypeAddOpts>(opts);
}

/**
* Replaces the full types array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/replace
*
* @param opts IReportScheduleTypesReplaceOpts: { types: TReportTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleTypesReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleTypesReplaceOpts>(opts);
}

/**
* Removes a single Report type from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/delete
*
* @param type The Report type to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(type: TReportTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { type: TReportTypes }>({ type });
}
};
100 changes: 100 additions & 0 deletions src/resources/ReportSchedule/index.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
import Resource, { IRequestConfig } from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import ReportScheduleTypes from './ReportTypes';
import ReportScheduleDeliveryMethods from './DeliveryMethods';
import ReportScheduleRecipients from './Recipients';
import type {
IReportSchedule,
IReportScheduleCreateOpts,
IReportScheduleUpdateOpts,
} from './types';

export class ReportScheduleSubResources {
types: ReportScheduleTypes;
deliveryMethods: ReportScheduleDeliveryMethods;
recipients: ReportScheduleRecipients;

constructor(rpt_sch_id: string, config: Configuration) {
this.types = new ReportScheduleTypes(config.addPath(rpt_sch_id));
this.deliveryMethods = new ReportScheduleDeliveryMethods(config.addPath(rpt_sch_id));
this.recipients = new ReportScheduleRecipients(config.addPath(rpt_sch_id));
}
};

export interface ReportSchedule {
(rpt_sch_id: string): ReportScheduleSubResources;
};

export class ReportSchedule extends Resource {
constructor(config: Configuration) {
super(config.addPath('report_schedules'));
}

protected _call(rpt_sch_id: string): ReportScheduleSubResources {
return new ReportScheduleSubResources(rpt_sch_id, this.config);
}

/**
* Retrieves the Report Schedule associated with the ID.
* https://docs.methodfi.com/reference/report-schedules/retrieve
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns the Report Schedule associated with the ID.
*/

async retrieve(rpt_sch_id: string) {
return super._getWithId<IResponse<IReportSchedule>>(rpt_sch_id);
}

/**
* Returns all the active Report Schedules associated with your team, or an empty array if none have been created.
* https://docs.methodfi.com/reference/report-schedules/list
*
* @returns Returns a list of Report Schedule objects.
*/

async list() {
return super._list<IResponse<IReportSchedule>>();
}

/**
* Creates a new Report Schedule. Once created, the first run is queued immediately for the next scheduled date.
* https://docs.methodfi.com/reference/report-schedules/create
*
* @param opts IReportScheduleCreateOpts
* @param requestConfig Idempotency key: { idempotency_key: string }
* @returns Returns the newly created Report Schedule object.
*/

async create(opts: IReportScheduleCreateOpts, requestConfig?: IRequestConfig) {
return super._create<IResponse<IReportSchedule>, IReportScheduleCreateOpts>(opts, requestConfig);
}

/**
* Updates the cron expression of an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/update
*
* @param rpt_sch_id id of the Report Schedule
* @param opts IReportScheduleUpdateOpts: { cron: string }
* @returns Returns the updated Report Schedule object.
*/

async update(rpt_sch_id: string, opts: IReportScheduleUpdateOpts, requestConfig?: IRequestConfig) {
return super._patchWithId<IResponse<IReportSchedule>, IReportScheduleUpdateOpts>(rpt_sch_id, opts, requestConfig);
}

/**
* Deletes a Report Schedule. The schedule's status is set to inactive and no further reports will be generated.
* https://docs.methodfi.com/reference/report-schedules/delete
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns an empty response.
*/

async delete(rpt_sch_id: string) {
return super._delete<IResponse<IReportSchedule>>(rpt_sch_id);
}
};

export default ReportSchedule;
export * from './types';
37 changes: 37 additions & 0 deletions src/resources/ReportSchedule/types.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
import type { TReportTypes } from '../Report';

export const ReportScheduleStatuses = {
active: 'active',
inactive: 'inactive',
} as const;

export type TReportScheduleStatuses = keyof typeof ReportScheduleStatuses;

export const ReportScheduleDeliveryMethodTypes = {
webhook: 'webhook',
email: 'email',
} as const;

export type TReportScheduleDeliveryMethodTypes = typeof ReportScheduleDeliveryMethodTypes[keyof typeof ReportScheduleDeliveryMethodTypes];

export interface IReportSchedule {
id: string;
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients: string[] | null;
cron: string;
status: TReportScheduleStatuses;
created_at: string;
updated_at: string;
};

export interface IReportScheduleCreateOpts {
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients?: string[];
cron?: string;
};

export interface IReportScheduleUpdateOpts {
cron: string;
};
1 change: 1 addition & 0 deletions test/index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@ require('./resources/Entity.tests');
require('./resources/Merchant.tests');
require('./resources/Payment.tests');
require('./resources/Report.tests');
require('./resources/ReportSchedule.tests');
require('./resources/Webhook.tests');
require('./resources/HealthCheck.tests');
require('./resources/Metadata.tests');
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,4 +6,5 @@ export { ElementTypes } from './src/resources/Element';
export { EntityTypes, EntityStatuses } from './src/resources/Entity';
export { PaymentFundStatuses, PaymentStatuses } from './src/resources/Payment';
export { ReportTypes, ReportStatuses } from './src/resources/Report';
export { ReportScheduleStatuses, ReportScheduleDeliveryMethodTypes } from './src/resources/ReportSchedule';
export { WebhookTypes } from './src/resources/Webhook';
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
{
"name": "method-node",
"version": "3.0.0",
"version": "3.0.1",
"description": "Node.js library for the Method API",
"main": "dist/index.ts",
"module": "dist/index.mjs",
Expand Down
3 changes: 3 additions & 0 deletions src/method.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,7 @@ import Event from './resources/Event';
import Merchant from './resources/Merchant';
import Payment from './resources/Payment';
import Report from './resources/Report';
import ReportSchedule from './resources/ReportSchedule';
import Webhook from './resources/Webhook';
import HealthCheck, { IPingResponse } from './resources/HealthCheck';
import Simulate from './resources/Simulate';
Expand All@@ -25,6 +26,7 @@ export class Method {
merchants: Merchant;
payments: Payment;
reports: Report;
reportSchedules: ReportSchedule;
webhooks: Webhook;
healthcheck: HealthCheck;
simulate: Simulate;
Expand All@@ -46,6 +48,7 @@ export class Method {
this.merchants = new Merchant(config);
this.payments = new Payment(config);
this.reports = new Report(config);
this.reportSchedules = new ReportSchedule(config);
this.webhooks = new Webhook(config);
this.healthcheck = new HealthCheck(config);
this.simulate = new Simulate(config);
Expand Down
8 changes: 8 additions & 0 deletions src/resource.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,11 +16,13 @@ import { SimulateAttributesInstance } from './resources/Simulate/Entities/Attrib
import { SimulateVerificationSessionInstance } from './resources/Simulate/Accounts/VerificationSessions';
import { SimulatePaymentInstrumentInstance } from './resources/Simulate/PaymentInstruments';
import { ManagedAccountSubResources } from './resources/ManagedAccount';
import { ReportScheduleSubResources } from './resources/ReportSchedule';

type TSubResources =
| AccountSubResources
| PaymentSubResources
| EntitySubResources
| ReportScheduleSubResources
| SimulateAccountsSubResources
| SimulateEntitiesSubResources
| SimulateCreditScoresInstance
Expand DownExpand Up@@ -307,6 +309,12 @@ export default class Resource extends ExtensibleFunction {
return (await this.client.delete(`/${id}`)).data.data;
}

protected async _deleteWithParams<Response, Params = {}>(
params: Params,
): Promise<Response> {
return (await this.client.delete('', { params })).data.data;
}

protected async _deleteWithSubPath<Response>(
path: string,
requestConfig: IRequestConfig = {},
Expand Down
53 changes: 53 additions & 0 deletions src/resources/ReportSchedule/DeliveryMethods.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule, TReportScheduleDeliveryMethodTypes } from './types';

export interface IReportScheduleDeliveryMethodAddOpts {
delivery_method: TReportScheduleDeliveryMethodTypes;
};

export interface IReportScheduleDeliveryMethodsReplaceOpts {
delivery_methods: TReportScheduleDeliveryMethodTypes[];
};

export default class ReportScheduleDeliveryMethods extends Resource {
constructor(config: Configuration) {
super(config.addPath('delivery_methods'));
}

/**
* Adds a single delivery method to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/add
*
* @param opts IReportScheduleDeliveryMethodAddOpts: { delivery_method: TReportScheduleDeliveryMethodTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleDeliveryMethodAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodAddOpts>(opts);
}

/**
* Replaces the full delivery_methods array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/replace
*
* @param opts IReportScheduleDeliveryMethodsReplaceOpts: { delivery_methods: TReportScheduleDeliveryMethodTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleDeliveryMethodsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodsReplaceOpts>(opts);
}

/**
* Removes a single delivery method from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/delete
*
* @param delivery_method The delivery method to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(delivery_method: TReportScheduleDeliveryMethodTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { delivery_method: TReportScheduleDeliveryMethodTypes }>({ delivery_method });
}
};
56 changes: 56 additions & 0 deletions src/resources/ReportSchedule/Recipients.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule } from './types';

export interface IReportScheduleRecipientAddOpts {
recipient: string;
};

export interface IReportScheduleRecipientsReplaceOpts {
recipients: string[];
};

export default class ReportScheduleRecipients extends Resource {
constructor(config: Configuration) {
super(config.addPath('recipients'));
}

/**
* Adds a single recipient email address to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/add
*
* @param opts IReportScheduleRecipientAddOpts: { recipient: string }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleRecipientAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleRecipientAddOpts>(opts);
}

/**
* Replaces the full recipients array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/replace
*
* @param opts IReportScheduleRecipientsReplaceOpts: { recipients: string[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleRecipientsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleRecipientsReplaceOpts>(opts);
}

/**
* Removes a recipient from an existing Report Schedule. Provide a recipient to
* remove a single email address, or omit it to clear all recipients.
* https://docs.methodfi.com/reference/report-schedules/recipients/delete
*
* @param recipient The email address to remove. If omitted, all recipients are cleared.
* @returns Returns the updated Report Schedule object.
*/

async delete(recipient?: string) {
return super._deleteWithParams<IResponse<IReportSchedule>, { recipient?: string }>(
recipient ? { recipient } : {},
);
}
};
54 changes: 54 additions & 0 deletions src/resources/ReportSchedule/ReportTypes.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { TReportTypes } from '../Report';
import type { IReportSchedule } from './types';

export interface IReportScheduleTypeAddOpts {
type: TReportTypes;
};

export interface IReportScheduleTypesReplaceOpts {
types: TReportTypes[];
};

export default class ReportScheduleTypes extends Resource {
constructor(config: Configuration) {
super(config.addPath('types'));
}

/**
* Adds a single Report type to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/add
*
* @param opts IReportScheduleTypeAddOpts: { type: TReportTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleTypeAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleTypeAddOpts>(opts);
}

/**
* Replaces the full types array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/replace
*
* @param opts IReportScheduleTypesReplaceOpts: { types: TReportTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleTypesReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleTypesReplaceOpts>(opts);
}

/**
* Removes a single Report type from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/delete
*
* @param type The Report type to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(type: TReportTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { type: TReportTypes }>({ type });
}
};
100 changes: 100 additions & 0 deletions src/resources/ReportSchedule/index.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
import Resource, { IRequestConfig } from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import ReportScheduleTypes from './ReportTypes';
import ReportScheduleDeliveryMethods from './DeliveryMethods';
import ReportScheduleRecipients from './Recipients';
import type {
IReportSchedule,
IReportScheduleCreateOpts,
IReportScheduleUpdateOpts,
} from './types';

export class ReportScheduleSubResources {
types: ReportScheduleTypes;
deliveryMethods: ReportScheduleDeliveryMethods;
recipients: ReportScheduleRecipients;

constructor(rpt_sch_id: string, config: Configuration) {
this.types = new ReportScheduleTypes(config.addPath(rpt_sch_id));
this.deliveryMethods = new ReportScheduleDeliveryMethods(config.addPath(rpt_sch_id));
this.recipients = new ReportScheduleRecipients(config.addPath(rpt_sch_id));
}
};

export interface ReportSchedule {
(rpt_sch_id: string): ReportScheduleSubResources;
};

export class ReportSchedule extends Resource {
constructor(config: Configuration) {
super(config.addPath('report_schedules'));
}

protected _call(rpt_sch_id: string): ReportScheduleSubResources {
return new ReportScheduleSubResources(rpt_sch_id, this.config);
}

/**
* Retrieves the Report Schedule associated with the ID.
* https://docs.methodfi.com/reference/report-schedules/retrieve
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns the Report Schedule associated with the ID.
*/

async retrieve(rpt_sch_id: string) {
return super._getWithId<IResponse<IReportSchedule>>(rpt_sch_id);
}

/**
* Returns all the active Report Schedules associated with your team, or an empty array if none have been created.
* https://docs.methodfi.com/reference/report-schedules/list
*
* @returns Returns a list of Report Schedule objects.
*/

async list() {
return super._list<IResponse<IReportSchedule>>();
}

/**
* Creates a new Report Schedule. Once created, the first run is queued immediately for the next scheduled date.
* https://docs.methodfi.com/reference/report-schedules/create
*
* @param opts IReportScheduleCreateOpts
* @param requestConfig Idempotency key: { idempotency_key: string }
* @returns Returns the newly created Report Schedule object.
*/

async create(opts: IReportScheduleCreateOpts, requestConfig?: IRequestConfig) {
return super._create<IResponse<IReportSchedule>, IReportScheduleCreateOpts>(opts, requestConfig);
}

/**
* Updates the cron expression of an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/update
*
* @param rpt_sch_id id of the Report Schedule
* @param opts IReportScheduleUpdateOpts: { cron: string }
* @returns Returns the updated Report Schedule object.
*/

async update(rpt_sch_id: string, opts: IReportScheduleUpdateOpts, requestConfig?: IRequestConfig) {
return super._patchWithId<IResponse<IReportSchedule>, IReportScheduleUpdateOpts>(rpt_sch_id, opts, requestConfig);
}

/**
* Deletes a Report Schedule. The schedule's status is set to inactive and no further reports will be generated.
* https://docs.methodfi.com/reference/report-schedules/delete
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns an empty response.
*/

async delete(rpt_sch_id: string) {
return super._delete<IResponse<IReportSchedule>>(rpt_sch_id);
}
};

export default ReportSchedule;
export * from './types';
37 changes: 37 additions & 0 deletions src/resources/ReportSchedule/types.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
import type { TReportTypes } from '../Report';

export const ReportScheduleStatuses = {
active: 'active',
inactive: 'inactive',
} as const;

export type TReportScheduleStatuses = keyof typeof ReportScheduleStatuses;

export const ReportScheduleDeliveryMethodTypes = {
webhook: 'webhook',
email: 'email',
} as const;

export type TReportScheduleDeliveryMethodTypes = typeof ReportScheduleDeliveryMethodTypes[keyof typeof ReportScheduleDeliveryMethodTypes];

export interface IReportSchedule {
id: string;
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients: string[] | null;
cron: string;
status: TReportScheduleStatuses;
created_at: string;
updated_at: string;
};

export interface IReportScheduleCreateOpts {
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients?: string[];
cron?: string;
};

export interface IReportScheduleUpdateOpts {
cron: string;
};
1 change: 1 addition & 0 deletions test/index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@ require('./resources/Entity.tests');
require('./resources/Merchant.tests');
require('./resources/Payment.tests');
require('./resources/Report.tests');
require('./resources/ReportSchedule.tests');
require('./resources/Webhook.tests');
require('./resources/HealthCheck.tests');
require('./resources/Metadata.tests');
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,4 +6,5 @@ export { ElementTypes } from './src/resources/Element';
export { EntityTypes, EntityStatuses } from './src/resources/Entity';
export { PaymentFundStatuses, PaymentStatuses } from './src/resources/Payment';
export { ReportTypes, ReportStatuses } from './src/resources/Report';
export { ReportScheduleStatuses, ReportScheduleDeliveryMethodTypes } from './src/resources/ReportSchedule';
export { WebhookTypes } from './src/resources/Webhook';
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
{
"name": "method-node",
"version": "3.0.0",
"version": "3.0.1",
"description": "Node.js library for the Method API",
"main": "dist/index.ts",
"module": "dist/index.mjs",
Expand Down
3 changes: 3 additions & 0 deletions src/method.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,7 @@ import Event from './resources/Event';
import Merchant from './resources/Merchant';
import Payment from './resources/Payment';
import Report from './resources/Report';
import ReportSchedule from './resources/ReportSchedule';
import Webhook from './resources/Webhook';
import HealthCheck, { IPingResponse } from './resources/HealthCheck';
import Simulate from './resources/Simulate';
Expand All@@ -25,6 +26,7 @@ export class Method {
merchants: Merchant;
payments: Payment;
reports: Report;
reportSchedules: ReportSchedule;
webhooks: Webhook;
healthcheck: HealthCheck;
simulate: Simulate;
Expand All@@ -46,6 +48,7 @@ export class Method {
this.merchants = new Merchant(config);
this.payments = new Payment(config);
this.reports = new Report(config);
this.reportSchedules = new ReportSchedule(config);
this.webhooks = new Webhook(config);
this.healthcheck = new HealthCheck(config);
this.simulate = new Simulate(config);
Expand Down
8 changes: 8 additions & 0 deletions src/resource.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,11 +16,13 @@ import { SimulateAttributesInstance } from './resources/Simulate/Entities/Attrib
import { SimulateVerificationSessionInstance } from './resources/Simulate/Accounts/VerificationSessions';
import { SimulatePaymentInstrumentInstance } from './resources/Simulate/PaymentInstruments';
import { ManagedAccountSubResources } from './resources/ManagedAccount';
import { ReportScheduleSubResources } from './resources/ReportSchedule';

type TSubResources =
| AccountSubResources
| PaymentSubResources
| EntitySubResources
| ReportScheduleSubResources
| SimulateAccountsSubResources
| SimulateEntitiesSubResources
| SimulateCreditScoresInstance
Expand DownExpand Up@@ -307,6 +309,12 @@ export default class Resource extends ExtensibleFunction {
return (await this.client.delete(`/${id}`)).data.data;
}

protected async _deleteWithParams<Response, Params = {}>(
params: Params,
): Promise<Response> {
return (await this.client.delete('', { params })).data.data;
}

protected async _deleteWithSubPath<Response>(
path: string,
requestConfig: IRequestConfig = {},
Expand Down
53 changes: 53 additions & 0 deletions src/resources/ReportSchedule/DeliveryMethods.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule, TReportScheduleDeliveryMethodTypes } from './types';

export interface IReportScheduleDeliveryMethodAddOpts {
delivery_method: TReportScheduleDeliveryMethodTypes;
};

export interface IReportScheduleDeliveryMethodsReplaceOpts {
delivery_methods: TReportScheduleDeliveryMethodTypes[];
};

export default class ReportScheduleDeliveryMethods extends Resource {
constructor(config: Configuration) {
super(config.addPath('delivery_methods'));
}

/**
* Adds a single delivery method to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/add
*
* @param opts IReportScheduleDeliveryMethodAddOpts: { delivery_method: TReportScheduleDeliveryMethodTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleDeliveryMethodAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodAddOpts>(opts);
}

/**
* Replaces the full delivery_methods array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/replace
*
* @param opts IReportScheduleDeliveryMethodsReplaceOpts: { delivery_methods: TReportScheduleDeliveryMethodTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleDeliveryMethodsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodsReplaceOpts>(opts);
}

/**
* Removes a single delivery method from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/delete
*
* @param delivery_method The delivery method to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(delivery_method: TReportScheduleDeliveryMethodTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { delivery_method: TReportScheduleDeliveryMethodTypes }>({ delivery_method });
}
};
56 changes: 56 additions & 0 deletions src/resources/ReportSchedule/Recipients.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule } from './types';

export interface IReportScheduleRecipientAddOpts {
recipient: string;
};

export interface IReportScheduleRecipientsReplaceOpts {
recipients: string[];
};

export default class ReportScheduleRecipients extends Resource {
constructor(config: Configuration) {
super(config.addPath('recipients'));
}

/**
* Adds a single recipient email address to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/add
*
* @param opts IReportScheduleRecipientAddOpts: { recipient: string }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleRecipientAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleRecipientAddOpts>(opts);
}

/**
* Replaces the full recipients array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/replace
*
* @param opts IReportScheduleRecipientsReplaceOpts: { recipients: string[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleRecipientsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleRecipientsReplaceOpts>(opts);
}

/**
* Removes a recipient from an existing Report Schedule. Provide a recipient to
* remove a single email address, or omit it to clear all recipients.
* https://docs.methodfi.com/reference/report-schedules/recipients/delete
*
* @param recipient The email address to remove. If omitted, all recipients are cleared.
* @returns Returns the updated Report Schedule object.
*/

async delete(recipient?: string) {
return super._deleteWithParams<IResponse<IReportSchedule>, { recipient?: string }>(
recipient ? { recipient } : {},
);
}
};
54 changes: 54 additions & 0 deletions src/resources/ReportSchedule/ReportTypes.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { TReportTypes } from '../Report';
import type { IReportSchedule } from './types';

export interface IReportScheduleTypeAddOpts {
type: TReportTypes;
};

export interface IReportScheduleTypesReplaceOpts {
types: TReportTypes[];
};

export default class ReportScheduleTypes extends Resource {
constructor(config: Configuration) {
super(config.addPath('types'));
}

/**
* Adds a single Report type to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/add
*
* @param opts IReportScheduleTypeAddOpts: { type: TReportTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleTypeAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleTypeAddOpts>(opts);
}

/**
* Replaces the full types array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/replace
*
* @param opts IReportScheduleTypesReplaceOpts: { types: TReportTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleTypesReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleTypesReplaceOpts>(opts);
}

/**
* Removes a single Report type from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/delete
*
* @param type The Report type to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(type: TReportTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { type: TReportTypes }>({ type });
}
};
100 changes: 100 additions & 0 deletions src/resources/ReportSchedule/index.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
import Resource, { IRequestConfig } from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import ReportScheduleTypes from './ReportTypes';
import ReportScheduleDeliveryMethods from './DeliveryMethods';
import ReportScheduleRecipients from './Recipients';
import type {
IReportSchedule,
IReportScheduleCreateOpts,
IReportScheduleUpdateOpts,
} from './types';

export class ReportScheduleSubResources {
types: ReportScheduleTypes;
deliveryMethods: ReportScheduleDeliveryMethods;
recipients: ReportScheduleRecipients;

constructor(rpt_sch_id: string, config: Configuration) {
this.types = new ReportScheduleTypes(config.addPath(rpt_sch_id));
this.deliveryMethods = new ReportScheduleDeliveryMethods(config.addPath(rpt_sch_id));
this.recipients = new ReportScheduleRecipients(config.addPath(rpt_sch_id));
}
};

export interface ReportSchedule {
(rpt_sch_id: string): ReportScheduleSubResources;
};

export class ReportSchedule extends Resource {
constructor(config: Configuration) {
super(config.addPath('report_schedules'));
}

protected _call(rpt_sch_id: string): ReportScheduleSubResources {
return new ReportScheduleSubResources(rpt_sch_id, this.config);
}

/**
* Retrieves the Report Schedule associated with the ID.
* https://docs.methodfi.com/reference/report-schedules/retrieve
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns the Report Schedule associated with the ID.
*/

async retrieve(rpt_sch_id: string) {
return super._getWithId<IResponse<IReportSchedule>>(rpt_sch_id);
}

/**
* Returns all the active Report Schedules associated with your team, or an empty array if none have been created.
* https://docs.methodfi.com/reference/report-schedules/list
*
* @returns Returns a list of Report Schedule objects.
*/

async list() {
return super._list<IResponse<IReportSchedule>>();
}

/**
* Creates a new Report Schedule. Once created, the first run is queued immediately for the next scheduled date.
* https://docs.methodfi.com/reference/report-schedules/create
*
* @param opts IReportScheduleCreateOpts
* @param requestConfig Idempotency key: { idempotency_key: string }
* @returns Returns the newly created Report Schedule object.
*/

async create(opts: IReportScheduleCreateOpts, requestConfig?: IRequestConfig) {
return super._create<IResponse<IReportSchedule>, IReportScheduleCreateOpts>(opts, requestConfig);
}

/**
* Updates the cron expression of an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/update
*
* @param rpt_sch_id id of the Report Schedule
* @param opts IReportScheduleUpdateOpts: { cron: string }
* @returns Returns the updated Report Schedule object.
*/

async update(rpt_sch_id: string, opts: IReportScheduleUpdateOpts, requestConfig?: IRequestConfig) {
return super._patchWithId<IResponse<IReportSchedule>, IReportScheduleUpdateOpts>(rpt_sch_id, opts, requestConfig);
}

/**
* Deletes a Report Schedule. The schedule's status is set to inactive and no further reports will be generated.
* https://docs.methodfi.com/reference/report-schedules/delete
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns an empty response.
*/

async delete(rpt_sch_id: string) {
return super._delete<IResponse<IReportSchedule>>(rpt_sch_id);
}
};

export default ReportSchedule;
export * from './types';
37 changes: 37 additions & 0 deletions src/resources/ReportSchedule/types.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
import type { TReportTypes } from '../Report';

export const ReportScheduleStatuses = {
active: 'active',
inactive: 'inactive',
} as const;

export type TReportScheduleStatuses = keyof typeof ReportScheduleStatuses;

export const ReportScheduleDeliveryMethodTypes = {
webhook: 'webhook',
email: 'email',
} as const;

export type TReportScheduleDeliveryMethodTypes = typeof ReportScheduleDeliveryMethodTypes[keyof typeof ReportScheduleDeliveryMethodTypes];

export interface IReportSchedule {
id: string;
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients: string[] | null;
cron: string;
status: TReportScheduleStatuses;
created_at: string;
updated_at: string;
};

export interface IReportScheduleCreateOpts {
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients?: string[];
cron?: string;
};

export interface IReportScheduleUpdateOpts {
cron: string;
};
1 change: 1 addition & 0 deletions test/index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@ require('./resources/Entity.tests');
require('./resources/Merchant.tests');
require('./resources/Payment.tests');
require('./resources/Report.tests');
require('./resources/ReportSchedule.tests');
require('./resources/Webhook.tests');
require('./resources/HealthCheck.tests');
require('./resources/Metadata.tests');
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,4 +6,5 @@ export { ElementTypes } from './src/resources/Element';
export { EntityTypes, EntityStatuses } from './src/resources/Entity';
export { PaymentFundStatuses, PaymentStatuses } from './src/resources/Payment';
export { ReportTypes, ReportStatuses } from './src/resources/Report';
export { ReportScheduleStatuses, ReportScheduleDeliveryMethodTypes } from './src/resources/ReportSchedule';
export { WebhookTypes } from './src/resources/Webhook';
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
{
"name": "method-node",
"version": "3.0.0",
"version": "3.0.1",
"description": "Node.js library for the Method API",
"main": "dist/index.ts",
"module": "dist/index.mjs",
Expand Down
3 changes: 3 additions & 0 deletions src/method.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,7 @@ import Event from './resources/Event';
import Merchant from './resources/Merchant';
import Payment from './resources/Payment';
import Report from './resources/Report';
import ReportSchedule from './resources/ReportSchedule';
import Webhook from './resources/Webhook';
import HealthCheck, { IPingResponse } from './resources/HealthCheck';
import Simulate from './resources/Simulate';
Expand All@@ -25,6 +26,7 @@ export class Method {
merchants: Merchant;
payments: Payment;
reports: Report;
reportSchedules: ReportSchedule;
webhooks: Webhook;
healthcheck: HealthCheck;
simulate: Simulate;
Expand All@@ -46,6 +48,7 @@ export class Method {
this.merchants = new Merchant(config);
this.payments = new Payment(config);
this.reports = new Report(config);
this.reportSchedules = new ReportSchedule(config);
this.webhooks = new Webhook(config);
this.healthcheck = new HealthCheck(config);
this.simulate = new Simulate(config);
Expand Down
8 changes: 8 additions & 0 deletions src/resource.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,11 +16,13 @@ import { SimulateAttributesInstance } from './resources/Simulate/Entities/Attrib
import { SimulateVerificationSessionInstance } from './resources/Simulate/Accounts/VerificationSessions';
import { SimulatePaymentInstrumentInstance } from './resources/Simulate/PaymentInstruments';
import { ManagedAccountSubResources } from './resources/ManagedAccount';
import { ReportScheduleSubResources } from './resources/ReportSchedule';

type TSubResources =
| AccountSubResources
| PaymentSubResources
| EntitySubResources
| ReportScheduleSubResources
| SimulateAccountsSubResources
| SimulateEntitiesSubResources
| SimulateCreditScoresInstance
Expand DownExpand Up@@ -307,6 +309,12 @@ export default class Resource extends ExtensibleFunction {
return (await this.client.delete(`/${id}`)).data.data;
}

protected async _deleteWithParams<Response, Params = {}>(
params: Params,
): Promise<Response> {
return (await this.client.delete('', { params })).data.data;
}

protected async _deleteWithSubPath<Response>(
path: string,
requestConfig: IRequestConfig = {},
Expand Down
53 changes: 53 additions & 0 deletions src/resources/ReportSchedule/DeliveryMethods.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule, TReportScheduleDeliveryMethodTypes } from './types';

export interface IReportScheduleDeliveryMethodAddOpts {
delivery_method: TReportScheduleDeliveryMethodTypes;
};

export interface IReportScheduleDeliveryMethodsReplaceOpts {
delivery_methods: TReportScheduleDeliveryMethodTypes[];
};

export default class ReportScheduleDeliveryMethods extends Resource {
constructor(config: Configuration) {
super(config.addPath('delivery_methods'));
}

/**
* Adds a single delivery method to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/add
*
* @param opts IReportScheduleDeliveryMethodAddOpts: { delivery_method: TReportScheduleDeliveryMethodTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleDeliveryMethodAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodAddOpts>(opts);
}

/**
* Replaces the full delivery_methods array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/replace
*
* @param opts IReportScheduleDeliveryMethodsReplaceOpts: { delivery_methods: TReportScheduleDeliveryMethodTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleDeliveryMethodsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodsReplaceOpts>(opts);
}

/**
* Removes a single delivery method from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/delete
*
* @param delivery_method The delivery method to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(delivery_method: TReportScheduleDeliveryMethodTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { delivery_method: TReportScheduleDeliveryMethodTypes }>({ delivery_method });
}
};
56 changes: 56 additions & 0 deletions src/resources/ReportSchedule/Recipients.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule } from './types';

export interface IReportScheduleRecipientAddOpts {
recipient: string;
};

export interface IReportScheduleRecipientsReplaceOpts {
recipients: string[];
};

export default class ReportScheduleRecipients extends Resource {
constructor(config: Configuration) {
super(config.addPath('recipients'));
}

/**
* Adds a single recipient email address to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/add
*
* @param opts IReportScheduleRecipientAddOpts: { recipient: string }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleRecipientAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleRecipientAddOpts>(opts);
}

/**
* Replaces the full recipients array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/replace
*
* @param opts IReportScheduleRecipientsReplaceOpts: { recipients: string[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleRecipientsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleRecipientsReplaceOpts>(opts);
}

/**
* Removes a recipient from an existing Report Schedule. Provide a recipient to
* remove a single email address, or omit it to clear all recipients.
* https://docs.methodfi.com/reference/report-schedules/recipients/delete
*
* @param recipient The email address to remove. If omitted, all recipients are cleared.
* @returns Returns the updated Report Schedule object.
*/

async delete(recipient?: string) {
return super._deleteWithParams<IResponse<IReportSchedule>, { recipient?: string }>(
recipient ? { recipient } : {},
);
}
};
54 changes: 54 additions & 0 deletions src/resources/ReportSchedule/ReportTypes.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { TReportTypes } from '../Report';
import type { IReportSchedule } from './types';

export interface IReportScheduleTypeAddOpts {
type: TReportTypes;
};

export interface IReportScheduleTypesReplaceOpts {
types: TReportTypes[];
};

export default class ReportScheduleTypes extends Resource {
constructor(config: Configuration) {
super(config.addPath('types'));
}

/**
* Adds a single Report type to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/add
*
* @param opts IReportScheduleTypeAddOpts: { type: TReportTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleTypeAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleTypeAddOpts>(opts);
}

/**
* Replaces the full types array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/replace
*
* @param opts IReportScheduleTypesReplaceOpts: { types: TReportTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleTypesReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleTypesReplaceOpts>(opts);
}

/**
* Removes a single Report type from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/delete
*
* @param type The Report type to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(type: TReportTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { type: TReportTypes }>({ type });
}
};
100 changes: 100 additions & 0 deletions src/resources/ReportSchedule/index.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
import Resource, { IRequestConfig } from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import ReportScheduleTypes from './ReportTypes';
import ReportScheduleDeliveryMethods from './DeliveryMethods';
import ReportScheduleRecipients from './Recipients';
import type {
IReportSchedule,
IReportScheduleCreateOpts,
IReportScheduleUpdateOpts,
} from './types';

export class ReportScheduleSubResources {
types: ReportScheduleTypes;
deliveryMethods: ReportScheduleDeliveryMethods;
recipients: ReportScheduleRecipients;

constructor(rpt_sch_id: string, config: Configuration) {
this.types = new ReportScheduleTypes(config.addPath(rpt_sch_id));
this.deliveryMethods = new ReportScheduleDeliveryMethods(config.addPath(rpt_sch_id));
this.recipients = new ReportScheduleRecipients(config.addPath(rpt_sch_id));
}
};

export interface ReportSchedule {
(rpt_sch_id: string): ReportScheduleSubResources;
};

export class ReportSchedule extends Resource {
constructor(config: Configuration) {
super(config.addPath('report_schedules'));
}

protected _call(rpt_sch_id: string): ReportScheduleSubResources {
return new ReportScheduleSubResources(rpt_sch_id, this.config);
}

/**
* Retrieves the Report Schedule associated with the ID.
* https://docs.methodfi.com/reference/report-schedules/retrieve
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns the Report Schedule associated with the ID.
*/

async retrieve(rpt_sch_id: string) {
return super._getWithId<IResponse<IReportSchedule>>(rpt_sch_id);
}

/**
* Returns all the active Report Schedules associated with your team, or an empty array if none have been created.
* https://docs.methodfi.com/reference/report-schedules/list
*
* @returns Returns a list of Report Schedule objects.
*/

async list() {
return super._list<IResponse<IReportSchedule>>();
}

/**
* Creates a new Report Schedule. Once created, the first run is queued immediately for the next scheduled date.
* https://docs.methodfi.com/reference/report-schedules/create
*
* @param opts IReportScheduleCreateOpts
* @param requestConfig Idempotency key: { idempotency_key: string }
* @returns Returns the newly created Report Schedule object.
*/

async create(opts: IReportScheduleCreateOpts, requestConfig?: IRequestConfig) {
return super._create<IResponse<IReportSchedule>, IReportScheduleCreateOpts>(opts, requestConfig);
}

/**
* Updates the cron expression of an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/update
*
* @param rpt_sch_id id of the Report Schedule
* @param opts IReportScheduleUpdateOpts: { cron: string }
* @returns Returns the updated Report Schedule object.
*/

async update(rpt_sch_id: string, opts: IReportScheduleUpdateOpts, requestConfig?: IRequestConfig) {
return super._patchWithId<IResponse<IReportSchedule>, IReportScheduleUpdateOpts>(rpt_sch_id, opts, requestConfig);
}

/**
* Deletes a Report Schedule. The schedule's status is set to inactive and no further reports will be generated.
* https://docs.methodfi.com/reference/report-schedules/delete
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns an empty response.
*/

async delete(rpt_sch_id: string) {
return super._delete<IResponse<IReportSchedule>>(rpt_sch_id);
}
};

export default ReportSchedule;
export * from './types';
37 changes: 37 additions & 0 deletions src/resources/ReportSchedule/types.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
import type { TReportTypes } from '../Report';

export const ReportScheduleStatuses = {
active: 'active',
inactive: 'inactive',
} as const;

export type TReportScheduleStatuses = keyof typeof ReportScheduleStatuses;

export const ReportScheduleDeliveryMethodTypes = {
webhook: 'webhook',
email: 'email',
} as const;

export type TReportScheduleDeliveryMethodTypes = typeof ReportScheduleDeliveryMethodTypes[keyof typeof ReportScheduleDeliveryMethodTypes];

export interface IReportSchedule {
id: string;
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients: string[] | null;
cron: string;
status: TReportScheduleStatuses;
created_at: string;
updated_at: string;
};

export interface IReportScheduleCreateOpts {
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients?: string[];
cron?: string;
};

export interface IReportScheduleUpdateOpts {
cron: string;
};
1 change: 1 addition & 0 deletions test/index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@ require('./resources/Entity.tests');
require('./resources/Merchant.tests');
require('./resources/Payment.tests');
require('./resources/Report.tests');
require('./resources/ReportSchedule.tests');
require('./resources/Webhook.tests');
require('./resources/HealthCheck.tests');
require('./resources/Metadata.tests');
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,4 +6,5 @@ export { ElementTypes } from './src/resources/Element';
export { EntityTypes, EntityStatuses } from './src/resources/Entity';
export { PaymentFundStatuses, PaymentStatuses } from './src/resources/Payment';
export { ReportTypes, ReportStatuses } from './src/resources/Report';
export { ReportScheduleStatuses, ReportScheduleDeliveryMethodTypes } from './src/resources/ReportSchedule';
export { WebhookTypes } from './src/resources/Webhook';
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
{
"name": "method-node",
"version": "3.0.0",
"version": "3.0.1",
"description": "Node.js library for the Method API",
"main": "dist/index.ts",
"module": "dist/index.mjs",
Expand Down
3 changes: 3 additions & 0 deletions src/method.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,7 @@ import Event from './resources/Event';
import Merchant from './resources/Merchant';
import Payment from './resources/Payment';
import Report from './resources/Report';
import ReportSchedule from './resources/ReportSchedule';
import Webhook from './resources/Webhook';
import HealthCheck, { IPingResponse } from './resources/HealthCheck';
import Simulate from './resources/Simulate';
Expand All@@ -25,6 +26,7 @@ export class Method {
merchants: Merchant;
payments: Payment;
reports: Report;
reportSchedules: ReportSchedule;
webhooks: Webhook;
healthcheck: HealthCheck;
simulate: Simulate;
Expand All@@ -46,6 +48,7 @@ export class Method {
this.merchants = new Merchant(config);
this.payments = new Payment(config);
this.reports = new Report(config);
this.reportSchedules = new ReportSchedule(config);
this.webhooks = new Webhook(config);
this.healthcheck = new HealthCheck(config);
this.simulate = new Simulate(config);
Expand Down
8 changes: 8 additions & 0 deletions src/resource.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,11 +16,13 @@ import { SimulateAttributesInstance } from './resources/Simulate/Entities/Attrib
import { SimulateVerificationSessionInstance } from './resources/Simulate/Accounts/VerificationSessions';
import { SimulatePaymentInstrumentInstance } from './resources/Simulate/PaymentInstruments';
import { ManagedAccountSubResources } from './resources/ManagedAccount';
import { ReportScheduleSubResources } from './resources/ReportSchedule';

type TSubResources =
| AccountSubResources
| PaymentSubResources
| EntitySubResources
| ReportScheduleSubResources
| SimulateAccountsSubResources
| SimulateEntitiesSubResources
| SimulateCreditScoresInstance
Expand DownExpand Up@@ -307,6 +309,12 @@ export default class Resource extends ExtensibleFunction {
return (await this.client.delete(`/${id}`)).data.data;
}

protected async _deleteWithParams<Response, Params = {}>(
params: Params,
): Promise<Response> {
return (await this.client.delete('', { params })).data.data;
}

protected async _deleteWithSubPath<Response>(
path: string,
requestConfig: IRequestConfig = {},
Expand Down
53 changes: 53 additions & 0 deletions src/resources/ReportSchedule/DeliveryMethods.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule, TReportScheduleDeliveryMethodTypes } from './types';

export interface IReportScheduleDeliveryMethodAddOpts {
delivery_method: TReportScheduleDeliveryMethodTypes;
};

export interface IReportScheduleDeliveryMethodsReplaceOpts {
delivery_methods: TReportScheduleDeliveryMethodTypes[];
};

export default class ReportScheduleDeliveryMethods extends Resource {
constructor(config: Configuration) {
super(config.addPath('delivery_methods'));
}

/**
* Adds a single delivery method to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/add
*
* @param opts IReportScheduleDeliveryMethodAddOpts: { delivery_method: TReportScheduleDeliveryMethodTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleDeliveryMethodAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodAddOpts>(opts);
}

/**
* Replaces the full delivery_methods array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/replace
*
* @param opts IReportScheduleDeliveryMethodsReplaceOpts: { delivery_methods: TReportScheduleDeliveryMethodTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleDeliveryMethodsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodsReplaceOpts>(opts);
}

/**
* Removes a single delivery method from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/delete
*
* @param delivery_method The delivery method to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(delivery_method: TReportScheduleDeliveryMethodTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { delivery_method: TReportScheduleDeliveryMethodTypes }>({ delivery_method });
}
};
56 changes: 56 additions & 0 deletions src/resources/ReportSchedule/Recipients.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule } from './types';

export interface IReportScheduleRecipientAddOpts {
recipient: string;
};

export interface IReportScheduleRecipientsReplaceOpts {
recipients: string[];
};

export default class ReportScheduleRecipients extends Resource {
constructor(config: Configuration) {
super(config.addPath('recipients'));
}

/**
* Adds a single recipient email address to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/add
*
* @param opts IReportScheduleRecipientAddOpts: { recipient: string }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleRecipientAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleRecipientAddOpts>(opts);
}

/**
* Replaces the full recipients array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/replace
*
* @param opts IReportScheduleRecipientsReplaceOpts: { recipients: string[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleRecipientsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleRecipientsReplaceOpts>(opts);
}

/**
* Removes a recipient from an existing Report Schedule. Provide a recipient to
* remove a single email address, or omit it to clear all recipients.
* https://docs.methodfi.com/reference/report-schedules/recipients/delete
*
* @param recipient The email address to remove. If omitted, all recipients are cleared.
* @returns Returns the updated Report Schedule object.
*/

async delete(recipient?: string) {
return super._deleteWithParams<IResponse<IReportSchedule>, { recipient?: string }>(
recipient ? { recipient } : {},
);
}
};
54 changes: 54 additions & 0 deletions src/resources/ReportSchedule/ReportTypes.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { TReportTypes } from '../Report';
import type { IReportSchedule } from './types';

export interface IReportScheduleTypeAddOpts {
type: TReportTypes;
};

export interface IReportScheduleTypesReplaceOpts {
types: TReportTypes[];
};

export default class ReportScheduleTypes extends Resource {
constructor(config: Configuration) {
super(config.addPath('types'));
}

/**
* Adds a single Report type to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/add
*
* @param opts IReportScheduleTypeAddOpts: { type: TReportTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleTypeAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleTypeAddOpts>(opts);
}

/**
* Replaces the full types array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/replace
*
* @param opts IReportScheduleTypesReplaceOpts: { types: TReportTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleTypesReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleTypesReplaceOpts>(opts);
}

/**
* Removes a single Report type from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/delete
*
* @param type The Report type to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(type: TReportTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { type: TReportTypes }>({ type });
}
};
100 changes: 100 additions & 0 deletions src/resources/ReportSchedule/index.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
import Resource, { IRequestConfig } from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import ReportScheduleTypes from './ReportTypes';
import ReportScheduleDeliveryMethods from './DeliveryMethods';
import ReportScheduleRecipients from './Recipients';
import type {
IReportSchedule,
IReportScheduleCreateOpts,
IReportScheduleUpdateOpts,
} from './types';

export class ReportScheduleSubResources {
types: ReportScheduleTypes;
deliveryMethods: ReportScheduleDeliveryMethods;
recipients: ReportScheduleRecipients;

constructor(rpt_sch_id: string, config: Configuration) {
this.types = new ReportScheduleTypes(config.addPath(rpt_sch_id));
this.deliveryMethods = new ReportScheduleDeliveryMethods(config.addPath(rpt_sch_id));
this.recipients = new ReportScheduleRecipients(config.addPath(rpt_sch_id));
}
};

export interface ReportSchedule {
(rpt_sch_id: string): ReportScheduleSubResources;
};

export class ReportSchedule extends Resource {
constructor(config: Configuration) {
super(config.addPath('report_schedules'));
}

protected _call(rpt_sch_id: string): ReportScheduleSubResources {
return new ReportScheduleSubResources(rpt_sch_id, this.config);
}

/**
* Retrieves the Report Schedule associated with the ID.
* https://docs.methodfi.com/reference/report-schedules/retrieve
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns the Report Schedule associated with the ID.
*/

async retrieve(rpt_sch_id: string) {
return super._getWithId<IResponse<IReportSchedule>>(rpt_sch_id);
}

/**
* Returns all the active Report Schedules associated with your team, or an empty array if none have been created.
* https://docs.methodfi.com/reference/report-schedules/list
*
* @returns Returns a list of Report Schedule objects.
*/

async list() {
return super._list<IResponse<IReportSchedule>>();
}

/**
* Creates a new Report Schedule. Once created, the first run is queued immediately for the next scheduled date.
* https://docs.methodfi.com/reference/report-schedules/create
*
* @param opts IReportScheduleCreateOpts
* @param requestConfig Idempotency key: { idempotency_key: string }
* @returns Returns the newly created Report Schedule object.
*/

async create(opts: IReportScheduleCreateOpts, requestConfig?: IRequestConfig) {
return super._create<IResponse<IReportSchedule>, IReportScheduleCreateOpts>(opts, requestConfig);
}

/**
* Updates the cron expression of an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/update
*
* @param rpt_sch_id id of the Report Schedule
* @param opts IReportScheduleUpdateOpts: { cron: string }
* @returns Returns the updated Report Schedule object.
*/

async update(rpt_sch_id: string, opts: IReportScheduleUpdateOpts, requestConfig?: IRequestConfig) {
return super._patchWithId<IResponse<IReportSchedule>, IReportScheduleUpdateOpts>(rpt_sch_id, opts, requestConfig);
}

/**
* Deletes a Report Schedule. The schedule's status is set to inactive and no further reports will be generated.
* https://docs.methodfi.com/reference/report-schedules/delete
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns an empty response.
*/

async delete(rpt_sch_id: string) {
return super._delete<IResponse<IReportSchedule>>(rpt_sch_id);
}
};

export default ReportSchedule;
export * from './types';
37 changes: 37 additions & 0 deletions src/resources/ReportSchedule/types.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
import type { TReportTypes } from '../Report';

export const ReportScheduleStatuses = {
active: 'active',
inactive: 'inactive',
} as const;

export type TReportScheduleStatuses = keyof typeof ReportScheduleStatuses;

export const ReportScheduleDeliveryMethodTypes = {
webhook: 'webhook',
email: 'email',
} as const;

export type TReportScheduleDeliveryMethodTypes = typeof ReportScheduleDeliveryMethodTypes[keyof typeof ReportScheduleDeliveryMethodTypes];

export interface IReportSchedule {
id: string;
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients: string[] | null;
cron: string;
status: TReportScheduleStatuses;
created_at: string;
updated_at: string;
};

export interface IReportScheduleCreateOpts {
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients?: string[];
cron?: string;
};

export interface IReportScheduleUpdateOpts {
cron: string;
};
1 change: 1 addition & 0 deletions test/index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@ require('./resources/Entity.tests');
require('./resources/Merchant.tests');
require('./resources/Payment.tests');
require('./resources/Report.tests');
require('./resources/ReportSchedule.tests');
require('./resources/Webhook.tests');
require('./resources/HealthCheck.tests');
require('./resources/Metadata.tests');
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,4 +6,5 @@ export { ElementTypes } from './src/resources/Element';
export { EntityTypes, EntityStatuses } from './src/resources/Entity';
export { PaymentFundStatuses, PaymentStatuses } from './src/resources/Payment';
export { ReportTypes, ReportStatuses } from './src/resources/Report';
export { ReportScheduleStatuses, ReportScheduleDeliveryMethodTypes } from './src/resources/ReportSchedule';
export { WebhookTypes } from './src/resources/Webhook';
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
{
"name": "method-node",
"version": "3.0.0",
"version": "3.0.1",
"description": "Node.js library for the Method API",
"main": "dist/index.ts",
"module": "dist/index.mjs",
Expand Down
3 changes: 3 additions & 0 deletions src/method.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,7 @@ import Event from './resources/Event';
import Merchant from './resources/Merchant';
import Payment from './resources/Payment';
import Report from './resources/Report';
import ReportSchedule from './resources/ReportSchedule';
import Webhook from './resources/Webhook';
import HealthCheck, { IPingResponse } from './resources/HealthCheck';
import Simulate from './resources/Simulate';
Expand All@@ -25,6 +26,7 @@ export class Method {
merchants: Merchant;
payments: Payment;
reports: Report;
reportSchedules: ReportSchedule;
webhooks: Webhook;
healthcheck: HealthCheck;
simulate: Simulate;
Expand All@@ -46,6 +48,7 @@ export class Method {
this.merchants = new Merchant(config);
this.payments = new Payment(config);
this.reports = new Report(config);
this.reportSchedules = new ReportSchedule(config);
this.webhooks = new Webhook(config);
this.healthcheck = new HealthCheck(config);
this.simulate = new Simulate(config);
Expand Down
8 changes: 8 additions & 0 deletions src/resource.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,11 +16,13 @@ import { SimulateAttributesInstance } from './resources/Simulate/Entities/Attrib
import { SimulateVerificationSessionInstance } from './resources/Simulate/Accounts/VerificationSessions';
import { SimulatePaymentInstrumentInstance } from './resources/Simulate/PaymentInstruments';
import { ManagedAccountSubResources } from './resources/ManagedAccount';
import { ReportScheduleSubResources } from './resources/ReportSchedule';

type TSubResources =
| AccountSubResources
| PaymentSubResources
| EntitySubResources
| ReportScheduleSubResources
| SimulateAccountsSubResources
| SimulateEntitiesSubResources
| SimulateCreditScoresInstance
Expand DownExpand Up@@ -307,6 +309,12 @@ export default class Resource extends ExtensibleFunction {
return (await this.client.delete(`/${id}`)).data.data;
}

protected async _deleteWithParams<Response, Params = {}>(
params: Params,
): Promise<Response> {
return (await this.client.delete('', { params })).data.data;
}

protected async _deleteWithSubPath<Response>(
path: string,
requestConfig: IRequestConfig = {},
Expand Down
53 changes: 53 additions & 0 deletions src/resources/ReportSchedule/DeliveryMethods.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule, TReportScheduleDeliveryMethodTypes } from './types';

export interface IReportScheduleDeliveryMethodAddOpts {
delivery_method: TReportScheduleDeliveryMethodTypes;
};

export interface IReportScheduleDeliveryMethodsReplaceOpts {
delivery_methods: TReportScheduleDeliveryMethodTypes[];
};

export default class ReportScheduleDeliveryMethods extends Resource {
constructor(config: Configuration) {
super(config.addPath('delivery_methods'));
}

/**
* Adds a single delivery method to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/add
*
* @param opts IReportScheduleDeliveryMethodAddOpts: { delivery_method: TReportScheduleDeliveryMethodTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleDeliveryMethodAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodAddOpts>(opts);
}

/**
* Replaces the full delivery_methods array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/replace
*
* @param opts IReportScheduleDeliveryMethodsReplaceOpts: { delivery_methods: TReportScheduleDeliveryMethodTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleDeliveryMethodsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodsReplaceOpts>(opts);
}

/**
* Removes a single delivery method from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/delete
*
* @param delivery_method The delivery method to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(delivery_method: TReportScheduleDeliveryMethodTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { delivery_method: TReportScheduleDeliveryMethodTypes }>({ delivery_method });
}
};
56 changes: 56 additions & 0 deletions src/resources/ReportSchedule/Recipients.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule } from './types';

export interface IReportScheduleRecipientAddOpts {
recipient: string;
};

export interface IReportScheduleRecipientsReplaceOpts {
recipients: string[];
};

export default class ReportScheduleRecipients extends Resource {
constructor(config: Configuration) {
super(config.addPath('recipients'));
}

/**
* Adds a single recipient email address to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/add
*
* @param opts IReportScheduleRecipientAddOpts: { recipient: string }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleRecipientAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleRecipientAddOpts>(opts);
}

/**
* Replaces the full recipients array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/replace
*
* @param opts IReportScheduleRecipientsReplaceOpts: { recipients: string[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleRecipientsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleRecipientsReplaceOpts>(opts);
}

/**
* Removes a recipient from an existing Report Schedule. Provide a recipient to
* remove a single email address, or omit it to clear all recipients.
* https://docs.methodfi.com/reference/report-schedules/recipients/delete
*
* @param recipient The email address to remove. If omitted, all recipients are cleared.
* @returns Returns the updated Report Schedule object.
*/

async delete(recipient?: string) {
return super._deleteWithParams<IResponse<IReportSchedule>, { recipient?: string }>(
recipient ? { recipient } : {},
);
}
};
54 changes: 54 additions & 0 deletions src/resources/ReportSchedule/ReportTypes.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { TReportTypes } from '../Report';
import type { IReportSchedule } from './types';

export interface IReportScheduleTypeAddOpts {
type: TReportTypes;
};

export interface IReportScheduleTypesReplaceOpts {
types: TReportTypes[];
};

export default class ReportScheduleTypes extends Resource {
constructor(config: Configuration) {
super(config.addPath('types'));
}

/**
* Adds a single Report type to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/add
*
* @param opts IReportScheduleTypeAddOpts: { type: TReportTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleTypeAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleTypeAddOpts>(opts);
}

/**
* Replaces the full types array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/replace
*
* @param opts IReportScheduleTypesReplaceOpts: { types: TReportTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleTypesReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleTypesReplaceOpts>(opts);
}

/**
* Removes a single Report type from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/delete
*
* @param type The Report type to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(type: TReportTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { type: TReportTypes }>({ type });
}
};
100 changes: 100 additions & 0 deletions src/resources/ReportSchedule/index.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
import Resource, { IRequestConfig } from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import ReportScheduleTypes from './ReportTypes';
import ReportScheduleDeliveryMethods from './DeliveryMethods';
import ReportScheduleRecipients from './Recipients';
import type {
IReportSchedule,
IReportScheduleCreateOpts,
IReportScheduleUpdateOpts,
} from './types';

export class ReportScheduleSubResources {
types: ReportScheduleTypes;
deliveryMethods: ReportScheduleDeliveryMethods;
recipients: ReportScheduleRecipients;

constructor(rpt_sch_id: string, config: Configuration) {
this.types = new ReportScheduleTypes(config.addPath(rpt_sch_id));
this.deliveryMethods = new ReportScheduleDeliveryMethods(config.addPath(rpt_sch_id));
this.recipients = new ReportScheduleRecipients(config.addPath(rpt_sch_id));
}
};

export interface ReportSchedule {
(rpt_sch_id: string): ReportScheduleSubResources;
};

export class ReportSchedule extends Resource {
constructor(config: Configuration) {
super(config.addPath('report_schedules'));
}

protected _call(rpt_sch_id: string): ReportScheduleSubResources {
return new ReportScheduleSubResources(rpt_sch_id, this.config);
}

/**
* Retrieves the Report Schedule associated with the ID.
* https://docs.methodfi.com/reference/report-schedules/retrieve
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns the Report Schedule associated with the ID.
*/

async retrieve(rpt_sch_id: string) {
return super._getWithId<IResponse<IReportSchedule>>(rpt_sch_id);
}

/**
* Returns all the active Report Schedules associated with your team, or an empty array if none have been created.
* https://docs.methodfi.com/reference/report-schedules/list
*
* @returns Returns a list of Report Schedule objects.
*/

async list() {
return super._list<IResponse<IReportSchedule>>();
}

/**
* Creates a new Report Schedule. Once created, the first run is queued immediately for the next scheduled date.
* https://docs.methodfi.com/reference/report-schedules/create
*
* @param opts IReportScheduleCreateOpts
* @param requestConfig Idempotency key: { idempotency_key: string }
* @returns Returns the newly created Report Schedule object.
*/

async create(opts: IReportScheduleCreateOpts, requestConfig?: IRequestConfig) {
return super._create<IResponse<IReportSchedule>, IReportScheduleCreateOpts>(opts, requestConfig);
}

/**
* Updates the cron expression of an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/update
*
* @param rpt_sch_id id of the Report Schedule
* @param opts IReportScheduleUpdateOpts: { cron: string }
* @returns Returns the updated Report Schedule object.
*/

async update(rpt_sch_id: string, opts: IReportScheduleUpdateOpts, requestConfig?: IRequestConfig) {
return super._patchWithId<IResponse<IReportSchedule>, IReportScheduleUpdateOpts>(rpt_sch_id, opts, requestConfig);
}

/**
* Deletes a Report Schedule. The schedule's status is set to inactive and no further reports will be generated.
* https://docs.methodfi.com/reference/report-schedules/delete
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns an empty response.
*/

async delete(rpt_sch_id: string) {
return super._delete<IResponse<IReportSchedule>>(rpt_sch_id);
}
};

export default ReportSchedule;
export * from './types';
37 changes: 37 additions & 0 deletions src/resources/ReportSchedule/types.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
import type { TReportTypes } from '../Report';

export const ReportScheduleStatuses = {
active: 'active',
inactive: 'inactive',
} as const;

export type TReportScheduleStatuses = keyof typeof ReportScheduleStatuses;

export const ReportScheduleDeliveryMethodTypes = {
webhook: 'webhook',
email: 'email',
} as const;

export type TReportScheduleDeliveryMethodTypes = typeof ReportScheduleDeliveryMethodTypes[keyof typeof ReportScheduleDeliveryMethodTypes];

export interface IReportSchedule {
id: string;
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients: string[] | null;
cron: string;
status: TReportScheduleStatuses;
created_at: string;
updated_at: string;
};

export interface IReportScheduleCreateOpts {
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients?: string[];
cron?: string;
};

export interface IReportScheduleUpdateOpts {
cron: string;
};
1 change: 1 addition & 0 deletions test/index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@ require('./resources/Entity.tests');
require('./resources/Merchant.tests');
require('./resources/Payment.tests');
require('./resources/Report.tests');
require('./resources/ReportSchedule.tests');
require('./resources/Webhook.tests');
require('./resources/HealthCheck.tests');
require('./resources/Metadata.tests');
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,4 +6,5 @@ export { ElementTypes } from './src/resources/Element';
export { EntityTypes, EntityStatuses } from './src/resources/Entity';
export { PaymentFundStatuses, PaymentStatuses } from './src/resources/Payment';
export { ReportTypes, ReportStatuses } from './src/resources/Report';
export { ReportScheduleStatuses, ReportScheduleDeliveryMethodTypes } from './src/resources/ReportSchedule';
export { WebhookTypes } from './src/resources/Webhook';
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
{
"name": "method-node",
"version": "3.0.0",
"version": "3.0.1",
"description": "Node.js library for the Method API",
"main": "dist/index.ts",
"module": "dist/index.mjs",
Expand Down
3 changes: 3 additions & 0 deletions src/method.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,7 @@ import Event from './resources/Event';
import Merchant from './resources/Merchant';
import Payment from './resources/Payment';
import Report from './resources/Report';
import ReportSchedule from './resources/ReportSchedule';
import Webhook from './resources/Webhook';
import HealthCheck, { IPingResponse } from './resources/HealthCheck';
import Simulate from './resources/Simulate';
Expand All@@ -25,6 +26,7 @@ export class Method {
merchants: Merchant;
payments: Payment;
reports: Report;
reportSchedules: ReportSchedule;
webhooks: Webhook;
healthcheck: HealthCheck;
simulate: Simulate;
Expand All@@ -46,6 +48,7 @@ export class Method {
this.merchants = new Merchant(config);
this.payments = new Payment(config);
this.reports = new Report(config);
this.reportSchedules = new ReportSchedule(config);
this.webhooks = new Webhook(config);
this.healthcheck = new HealthCheck(config);
this.simulate = new Simulate(config);
Expand Down
8 changes: 8 additions & 0 deletions src/resource.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,11 +16,13 @@ import { SimulateAttributesInstance } from './resources/Simulate/Entities/Attrib
import { SimulateVerificationSessionInstance } from './resources/Simulate/Accounts/VerificationSessions';
import { SimulatePaymentInstrumentInstance } from './resources/Simulate/PaymentInstruments';
import { ManagedAccountSubResources } from './resources/ManagedAccount';
import { ReportScheduleSubResources } from './resources/ReportSchedule';

type TSubResources =
| AccountSubResources
| PaymentSubResources
| EntitySubResources
| ReportScheduleSubResources
| SimulateAccountsSubResources
| SimulateEntitiesSubResources
| SimulateCreditScoresInstance
Expand DownExpand Up@@ -307,6 +309,12 @@ export default class Resource extends ExtensibleFunction {
return (await this.client.delete(`/${id}`)).data.data;
}

protected async _deleteWithParams<Response, Params = {}>(
params: Params,
): Promise<Response> {
return (await this.client.delete('', { params })).data.data;
}

protected async _deleteWithSubPath<Response>(
path: string,
requestConfig: IRequestConfig = {},
Expand Down
53 changes: 53 additions & 0 deletions src/resources/ReportSchedule/DeliveryMethods.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule, TReportScheduleDeliveryMethodTypes } from './types';

export interface IReportScheduleDeliveryMethodAddOpts {
delivery_method: TReportScheduleDeliveryMethodTypes;
};

export interface IReportScheduleDeliveryMethodsReplaceOpts {
delivery_methods: TReportScheduleDeliveryMethodTypes[];
};

export default class ReportScheduleDeliveryMethods extends Resource {
constructor(config: Configuration) {
super(config.addPath('delivery_methods'));
}

/**
* Adds a single delivery method to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/add
*
* @param opts IReportScheduleDeliveryMethodAddOpts: { delivery_method: TReportScheduleDeliveryMethodTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleDeliveryMethodAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodAddOpts>(opts);
}

/**
* Replaces the full delivery_methods array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/replace
*
* @param opts IReportScheduleDeliveryMethodsReplaceOpts: { delivery_methods: TReportScheduleDeliveryMethodTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleDeliveryMethodsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodsReplaceOpts>(opts);
}

/**
* Removes a single delivery method from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/delete
*
* @param delivery_method The delivery method to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(delivery_method: TReportScheduleDeliveryMethodTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { delivery_method: TReportScheduleDeliveryMethodTypes }>({ delivery_method });
}
};
56 changes: 56 additions & 0 deletions src/resources/ReportSchedule/Recipients.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule } from './types';

export interface IReportScheduleRecipientAddOpts {
recipient: string;
};

export interface IReportScheduleRecipientsReplaceOpts {
recipients: string[];
};

export default class ReportScheduleRecipients extends Resource {
constructor(config: Configuration) {
super(config.addPath('recipients'));
}

/**
* Adds a single recipient email address to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/add
*
* @param opts IReportScheduleRecipientAddOpts: { recipient: string }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleRecipientAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleRecipientAddOpts>(opts);
}

/**
* Replaces the full recipients array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/replace
*
* @param opts IReportScheduleRecipientsReplaceOpts: { recipients: string[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleRecipientsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleRecipientsReplaceOpts>(opts);
}

/**
* Removes a recipient from an existing Report Schedule. Provide a recipient to
* remove a single email address, or omit it to clear all recipients.
* https://docs.methodfi.com/reference/report-schedules/recipients/delete
*
* @param recipient The email address to remove. If omitted, all recipients are cleared.
* @returns Returns the updated Report Schedule object.
*/

async delete(recipient?: string) {
return super._deleteWithParams<IResponse<IReportSchedule>, { recipient?: string }>(
recipient ? { recipient } : {},
);
}
};
54 changes: 54 additions & 0 deletions src/resources/ReportSchedule/ReportTypes.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { TReportTypes } from '../Report';
import type { IReportSchedule } from './types';

export interface IReportScheduleTypeAddOpts {
type: TReportTypes;
};

export interface IReportScheduleTypesReplaceOpts {
types: TReportTypes[];
};

export default class ReportScheduleTypes extends Resource {
constructor(config: Configuration) {
super(config.addPath('types'));
}

/**
* Adds a single Report type to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/add
*
* @param opts IReportScheduleTypeAddOpts: { type: TReportTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleTypeAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleTypeAddOpts>(opts);
}

/**
* Replaces the full types array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/replace
*
* @param opts IReportScheduleTypesReplaceOpts: { types: TReportTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleTypesReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleTypesReplaceOpts>(opts);
}

/**
* Removes a single Report type from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/delete
*
* @param type The Report type to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(type: TReportTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { type: TReportTypes }>({ type });
}
};
100 changes: 100 additions & 0 deletions src/resources/ReportSchedule/index.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
import Resource, { IRequestConfig } from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import ReportScheduleTypes from './ReportTypes';
import ReportScheduleDeliveryMethods from './DeliveryMethods';
import ReportScheduleRecipients from './Recipients';
import type {
IReportSchedule,
IReportScheduleCreateOpts,
IReportScheduleUpdateOpts,
} from './types';

export class ReportScheduleSubResources {
types: ReportScheduleTypes;
deliveryMethods: ReportScheduleDeliveryMethods;
recipients: ReportScheduleRecipients;

constructor(rpt_sch_id: string, config: Configuration) {
this.types = new ReportScheduleTypes(config.addPath(rpt_sch_id));
this.deliveryMethods = new ReportScheduleDeliveryMethods(config.addPath(rpt_sch_id));
this.recipients = new ReportScheduleRecipients(config.addPath(rpt_sch_id));
}
};

export interface ReportSchedule {
(rpt_sch_id: string): ReportScheduleSubResources;
};

export class ReportSchedule extends Resource {
constructor(config: Configuration) {
super(config.addPath('report_schedules'));
}

protected _call(rpt_sch_id: string): ReportScheduleSubResources {
return new ReportScheduleSubResources(rpt_sch_id, this.config);
}

/**
* Retrieves the Report Schedule associated with the ID.
* https://docs.methodfi.com/reference/report-schedules/retrieve
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns the Report Schedule associated with the ID.
*/

async retrieve(rpt_sch_id: string) {
return super._getWithId<IResponse<IReportSchedule>>(rpt_sch_id);
}

/**
* Returns all the active Report Schedules associated with your team, or an empty array if none have been created.
* https://docs.methodfi.com/reference/report-schedules/list
*
* @returns Returns a list of Report Schedule objects.
*/

async list() {
return super._list<IResponse<IReportSchedule>>();
}

/**
* Creates a new Report Schedule. Once created, the first run is queued immediately for the next scheduled date.
* https://docs.methodfi.com/reference/report-schedules/create
*
* @param opts IReportScheduleCreateOpts
* @param requestConfig Idempotency key: { idempotency_key: string }
* @returns Returns the newly created Report Schedule object.
*/

async create(opts: IReportScheduleCreateOpts, requestConfig?: IRequestConfig) {
return super._create<IResponse<IReportSchedule>, IReportScheduleCreateOpts>(opts, requestConfig);
}

/**
* Updates the cron expression of an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/update
*
* @param rpt_sch_id id of the Report Schedule
* @param opts IReportScheduleUpdateOpts: { cron: string }
* @returns Returns the updated Report Schedule object.
*/

async update(rpt_sch_id: string, opts: IReportScheduleUpdateOpts, requestConfig?: IRequestConfig) {
return super._patchWithId<IResponse<IReportSchedule>, IReportScheduleUpdateOpts>(rpt_sch_id, opts, requestConfig);
}

/**
* Deletes a Report Schedule. The schedule's status is set to inactive and no further reports will be generated.
* https://docs.methodfi.com/reference/report-schedules/delete
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns an empty response.
*/

async delete(rpt_sch_id: string) {
return super._delete<IResponse<IReportSchedule>>(rpt_sch_id);
}
};

export default ReportSchedule;
export * from './types';
37 changes: 37 additions & 0 deletions src/resources/ReportSchedule/types.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
import type { TReportTypes } from '../Report';

export const ReportScheduleStatuses = {
active: 'active',
inactive: 'inactive',
} as const;

export type TReportScheduleStatuses = keyof typeof ReportScheduleStatuses;

export const ReportScheduleDeliveryMethodTypes = {
webhook: 'webhook',
email: 'email',
} as const;

export type TReportScheduleDeliveryMethodTypes = typeof ReportScheduleDeliveryMethodTypes[keyof typeof ReportScheduleDeliveryMethodTypes];

export interface IReportSchedule {
id: string;
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients: string[] | null;
cron: string;
status: TReportScheduleStatuses;
created_at: string;
updated_at: string;
};

export interface IReportScheduleCreateOpts {
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients?: string[];
cron?: string;
};

export interface IReportScheduleUpdateOpts {
cron: string;
};
1 change: 1 addition & 0 deletions test/index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@ require('./resources/Entity.tests');
require('./resources/Merchant.tests');
require('./resources/Payment.tests');
require('./resources/Report.tests');
require('./resources/ReportSchedule.tests');
require('./resources/Webhook.tests');
require('./resources/HealthCheck.tests');
require('./resources/Metadata.tests');
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,4 +6,5 @@ export { ElementTypes } from './src/resources/Element';
export { EntityTypes, EntityStatuses } from './src/resources/Entity';
export { PaymentFundStatuses, PaymentStatuses } from './src/resources/Payment';
export { ReportTypes, ReportStatuses } from './src/resources/Report';
export { ReportScheduleStatuses, ReportScheduleDeliveryMethodTypes } from './src/resources/ReportSchedule';
export { WebhookTypes } from './src/resources/Webhook';
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
{
"name": "method-node",
"version": "3.0.0",
"version": "3.0.1",
"description": "Node.js library for the Method API",
"main": "dist/index.ts",
"module": "dist/index.mjs",
Expand Down
3 changes: 3 additions & 0 deletions src/method.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,7 @@ import Event from './resources/Event';
import Merchant from './resources/Merchant';
import Payment from './resources/Payment';
import Report from './resources/Report';
import ReportSchedule from './resources/ReportSchedule';
import Webhook from './resources/Webhook';
import HealthCheck, { IPingResponse } from './resources/HealthCheck';
import Simulate from './resources/Simulate';
Expand All@@ -25,6 +26,7 @@ export class Method {
merchants: Merchant;
payments: Payment;
reports: Report;
reportSchedules: ReportSchedule;
webhooks: Webhook;
healthcheck: HealthCheck;
simulate: Simulate;
Expand All@@ -46,6 +48,7 @@ export class Method {
this.merchants = new Merchant(config);
this.payments = new Payment(config);
this.reports = new Report(config);
this.reportSchedules = new ReportSchedule(config);
this.webhooks = new Webhook(config);
this.healthcheck = new HealthCheck(config);
this.simulate = new Simulate(config);
Expand Down
8 changes: 8 additions & 0 deletions src/resource.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,11 +16,13 @@ import { SimulateAttributesInstance } from './resources/Simulate/Entities/Attrib
import { SimulateVerificationSessionInstance } from './resources/Simulate/Accounts/VerificationSessions';
import { SimulatePaymentInstrumentInstance } from './resources/Simulate/PaymentInstruments';
import { ManagedAccountSubResources } from './resources/ManagedAccount';
import { ReportScheduleSubResources } from './resources/ReportSchedule';

type TSubResources =
| AccountSubResources
| PaymentSubResources
| EntitySubResources
| ReportScheduleSubResources
| SimulateAccountsSubResources
| SimulateEntitiesSubResources
| SimulateCreditScoresInstance
Expand DownExpand Up@@ -307,6 +309,12 @@ export default class Resource extends ExtensibleFunction {
return (await this.client.delete(`/${id}`)).data.data;
}

protected async _deleteWithParams<Response, Params = {}>(
params: Params,
): Promise<Response> {
return (await this.client.delete('', { params })).data.data;
}

protected async _deleteWithSubPath<Response>(
path: string,
requestConfig: IRequestConfig = {},
Expand Down
53 changes: 53 additions & 0 deletions src/resources/ReportSchedule/DeliveryMethods.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule, TReportScheduleDeliveryMethodTypes } from './types';

export interface IReportScheduleDeliveryMethodAddOpts {
delivery_method: TReportScheduleDeliveryMethodTypes;
};

export interface IReportScheduleDeliveryMethodsReplaceOpts {
delivery_methods: TReportScheduleDeliveryMethodTypes[];
};

export default class ReportScheduleDeliveryMethods extends Resource {
constructor(config: Configuration) {
super(config.addPath('delivery_methods'));
}

/**
* Adds a single delivery method to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/add
*
* @param opts IReportScheduleDeliveryMethodAddOpts: { delivery_method: TReportScheduleDeliveryMethodTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleDeliveryMethodAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodAddOpts>(opts);
}

/**
* Replaces the full delivery_methods array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/replace
*
* @param opts IReportScheduleDeliveryMethodsReplaceOpts: { delivery_methods: TReportScheduleDeliveryMethodTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleDeliveryMethodsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleDeliveryMethodsReplaceOpts>(opts);
}

/**
* Removes a single delivery method from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/delivery-methods/delete
*
* @param delivery_method The delivery method to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(delivery_method: TReportScheduleDeliveryMethodTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { delivery_method: TReportScheduleDeliveryMethodTypes }>({ delivery_method });
}
};
56 changes: 56 additions & 0 deletions src/resources/ReportSchedule/Recipients.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { IReportSchedule } from './types';

export interface IReportScheduleRecipientAddOpts {
recipient: string;
};

export interface IReportScheduleRecipientsReplaceOpts {
recipients: string[];
};

export default class ReportScheduleRecipients extends Resource {
constructor(config: Configuration) {
super(config.addPath('recipients'));
}

/**
* Adds a single recipient email address to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/add
*
* @param opts IReportScheduleRecipientAddOpts: { recipient: string }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleRecipientAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleRecipientAddOpts>(opts);
}

/**
* Replaces the full recipients array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/recipients/replace
*
* @param opts IReportScheduleRecipientsReplaceOpts: { recipients: string[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleRecipientsReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleRecipientsReplaceOpts>(opts);
}

/**
* Removes a recipient from an existing Report Schedule. Provide a recipient to
* remove a single email address, or omit it to clear all recipients.
* https://docs.methodfi.com/reference/report-schedules/recipients/delete
*
* @param recipient The email address to remove. If omitted, all recipients are cleared.
* @returns Returns the updated Report Schedule object.
*/

async delete(recipient?: string) {
return super._deleteWithParams<IResponse<IReportSchedule>, { recipient?: string }>(
recipient ? { recipient } : {},
);
}
};
54 changes: 54 additions & 0 deletions src/resources/ReportSchedule/ReportTypes.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
import Resource from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import type { TReportTypes } from '../Report';
import type { IReportSchedule } from './types';

export interface IReportScheduleTypeAddOpts {
type: TReportTypes;
};

export interface IReportScheduleTypesReplaceOpts {
types: TReportTypes[];
};

export default class ReportScheduleTypes extends Resource {
constructor(config: Configuration) {
super(config.addPath('types'));
}

/**
* Adds a single Report type to an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/add
*
* @param opts IReportScheduleTypeAddOpts: { type: TReportTypes }
* @returns Returns the updated Report Schedule object.
*/

async add(opts: IReportScheduleTypeAddOpts) {
return super._create<IResponse<IReportSchedule>, IReportScheduleTypeAddOpts>(opts);
}

/**
* Replaces the full types array on an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/replace
*
* @param opts IReportScheduleTypesReplaceOpts: { types: TReportTypes[] }
* @returns Returns the updated Report Schedule object.
*/

async replace(opts: IReportScheduleTypesReplaceOpts) {
return super._update<IResponse<IReportSchedule>, IReportScheduleTypesReplaceOpts>(opts);
}

/**
* Removes a single Report type from an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/types/delete
*
* @param type The Report type to remove.
* @returns Returns the updated Report Schedule object.
*/

async delete(type: TReportTypes) {
return super._deleteWithParams<IResponse<IReportSchedule>, { type: TReportTypes }>({ type });
}
};
100 changes: 100 additions & 0 deletions src/resources/ReportSchedule/index.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
import Resource, { IRequestConfig } from '../../resource';
import Configuration, { IResponse } from '../../configuration';
import ReportScheduleTypes from './ReportTypes';
import ReportScheduleDeliveryMethods from './DeliveryMethods';
import ReportScheduleRecipients from './Recipients';
import type {
IReportSchedule,
IReportScheduleCreateOpts,
IReportScheduleUpdateOpts,
} from './types';

export class ReportScheduleSubResources {
types: ReportScheduleTypes;
deliveryMethods: ReportScheduleDeliveryMethods;
recipients: ReportScheduleRecipients;

constructor(rpt_sch_id: string, config: Configuration) {
this.types = new ReportScheduleTypes(config.addPath(rpt_sch_id));
this.deliveryMethods = new ReportScheduleDeliveryMethods(config.addPath(rpt_sch_id));
this.recipients = new ReportScheduleRecipients(config.addPath(rpt_sch_id));
}
};

export interface ReportSchedule {
(rpt_sch_id: string): ReportScheduleSubResources;
};

export class ReportSchedule extends Resource {
constructor(config: Configuration) {
super(config.addPath('report_schedules'));
}

protected _call(rpt_sch_id: string): ReportScheduleSubResources {
return new ReportScheduleSubResources(rpt_sch_id, this.config);
}

/**
* Retrieves the Report Schedule associated with the ID.
* https://docs.methodfi.com/reference/report-schedules/retrieve
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns the Report Schedule associated with the ID.
*/

async retrieve(rpt_sch_id: string) {
return super._getWithId<IResponse<IReportSchedule>>(rpt_sch_id);
}

/**
* Returns all the active Report Schedules associated with your team, or an empty array if none have been created.
* https://docs.methodfi.com/reference/report-schedules/list
*
* @returns Returns a list of Report Schedule objects.
*/

async list() {
return super._list<IResponse<IReportSchedule>>();
}

/**
* Creates a new Report Schedule. Once created, the first run is queued immediately for the next scheduled date.
* https://docs.methodfi.com/reference/report-schedules/create
*
* @param opts IReportScheduleCreateOpts
* @param requestConfig Idempotency key: { idempotency_key: string }
* @returns Returns the newly created Report Schedule object.
*/

async create(opts: IReportScheduleCreateOpts, requestConfig?: IRequestConfig) {
return super._create<IResponse<IReportSchedule>, IReportScheduleCreateOpts>(opts, requestConfig);
}

/**
* Updates the cron expression of an existing Report Schedule.
* https://docs.methodfi.com/reference/report-schedules/update
*
* @param rpt_sch_id id of the Report Schedule
* @param opts IReportScheduleUpdateOpts: { cron: string }
* @returns Returns the updated Report Schedule object.
*/

async update(rpt_sch_id: string, opts: IReportScheduleUpdateOpts, requestConfig?: IRequestConfig) {
return super._patchWithId<IResponse<IReportSchedule>, IReportScheduleUpdateOpts>(rpt_sch_id, opts, requestConfig);
}

/**
* Deletes a Report Schedule. The schedule's status is set to inactive and no further reports will be generated.
* https://docs.methodfi.com/reference/report-schedules/delete
*
* @param rpt_sch_id id of the Report Schedule
* @returns Returns an empty response.
*/

async delete(rpt_sch_id: string) {
return super._delete<IResponse<IReportSchedule>>(rpt_sch_id);
}
};

export default ReportSchedule;
export * from './types';
37 changes: 37 additions & 0 deletions src/resources/ReportSchedule/types.ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
import type { TReportTypes } from '../Report';

export const ReportScheduleStatuses = {
active: 'active',
inactive: 'inactive',
} as const;

export type TReportScheduleStatuses = keyof typeof ReportScheduleStatuses;

export const ReportScheduleDeliveryMethodTypes = {
webhook: 'webhook',
email: 'email',
} as const;

export type TReportScheduleDeliveryMethodTypes = typeof ReportScheduleDeliveryMethodTypes[keyof typeof ReportScheduleDeliveryMethodTypes];

export interface IReportSchedule {
id: string;
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients: string[] | null;
cron: string;
status: TReportScheduleStatuses;
created_at: string;
updated_at: string;
};

export interface IReportScheduleCreateOpts {
types: TReportTypes[];
delivery_methods: TReportScheduleDeliveryMethodTypes[];
recipients?: string[];
cron?: string;
};

export interface IReportScheduleUpdateOpts {
cron: string;
};
1 change: 1 addition & 0 deletions test/index.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@ require('./resources/Entity.tests');
require('./resources/Merchant.tests');
require('./resources/Payment.tests');
require('./resources/Report.tests');
require('./resources/ReportSchedule.tests');
require('./resources/Webhook.tests');
require('./resources/HealthCheck.tests');
require('./resources/Metadata.tests');
Expand Down
Loading
Loading