Skip to content
This repository has been archived by the owner on Mar 9, 2023. It is now read-only.

Commit

Permalink
Add estimates (#5)
Browse files Browse the repository at this point in the history
  • Loading branch information
tatethurston authored Sep 13, 2020
1 parent a31352d commit fed5032
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 4 deletions.
48 changes: 48 additions & 0 deletions src/creates/create-estimate.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { Bundle, ZObject } from "zapier-platform-core";
import { ZapierCreate, PatchResponse } from "../types";

type CreateData = {
mass_g: number;
project_id?: string;
metadata?: Record<string, string>;
};

const perform = async (
z: ZObject,
bundle: Bundle<CreateData>
): Promise<unknown> => {
const { mass_g, project_id, metadata } = bundle.inputData;
const { data } = await z.request({
method: "POST",
url: "https://api.usepatch.com/v1/estimates",
body: { mass_g, project_id, metadata },
});
return (data as PatchResponse).data;
};

export const CreateEstimate: ZapierCreate<CreateData> = {
key: "create-estimate",
noun: "estimate",
display: {
label: "Create Estimate",
description: "Creates a new estimate.",
},
operation: {
perform,
inputFields: [
{ key: "mass_g", label: "Mass (grams)", required: true, type: "integer" },
// will call the trigger with a key of project
{
key: "project_id",
label: "Project",
dynamic: "project.id.name",
},
{ key: "metadata", dict: true },
],
sample: {
mass_g: 100,
project_id: "pro_test_1234",
metadata: { user: "john doe" },
},
},
};
1 change: 1 addition & 0 deletions src/creates/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export * from "./cancel-order";
export * from "./create-estimate";
export * from "./create-order";
export * from "./place-order";
15 changes: 11 additions & 4 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
import { Bundle, HttpRequestOptions, ZObject } from "zapier-platform-core";
import { OrderTrigger, ProjectTrigger } from "./triggers";
import { CreateOrder, PlaceOrder, CancelOrder } from "./creates";
import { EstimateTrigger, OrderTrigger, ProjectTrigger } from "./triggers";
import {
CreateEstimate,
CreateOrder,
PlaceOrder,
CancelOrder,
} from "./creates";
import { version as platformVersion } from "zapier-platform-core";
const { version } = require("../package.json"); // eslint-disable-line

Expand Down Expand Up @@ -33,13 +38,15 @@ export default {
},

triggers: {
[ProjectTrigger.key]: ProjectTrigger,
[EstimateTrigger.key]: EstimateTrigger,
[OrderTrigger.key]: OrderTrigger,
[ProjectTrigger.key]: ProjectTrigger,
},

creates: {
[CancelOrder.key]: CancelOrder,
[CreateEstimate.key]: CreateEstimate,
[CreateOrder.key]: CreateOrder,
[PlaceOrder.key]: PlaceOrder,
[CancelOrder.key]: CancelOrder,
},
};
50 changes: 50 additions & 0 deletions src/triggers/estimate.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { Bundle, ZObject } from "zapier-platform-core";
import { PatchResponse, ZapierTrigger } from "../types";

const perform = async (z: ZObject, bundle: Bundle): Promise<unknown> => {
// zapier starts with page 0
const page = bundle.meta.page + 1;
const { data } = await z.request("https://api.usepatch.com/v1/estimates", {
params: { page },
});
return (data as PatchResponse).data;
};

export const EstimateTrigger: ZapierTrigger = {
key: "estimate",
noun: "estimate",
display: {
label: "New Estimate",
description: "Triggers when a new estimate is created.",
},
operation: {
type: "polling",
canPaginate: true,
perform,
sample: {
id: "ord_test_16d8054a8f8502d81a830252d58024bb",
allocation_state: "allocated",
allocations: [
{
id: "all_test_be33c362135078d77cce3e8ab242dac1",
mass_g: 34,
offset: {
id: "off_test_a6a8c407b8f3e9f783f9aa41fb833d1a",
developer: "Carbo Culture",
production: false,
serial_number: null,
vintage_year: 2020,
},
production: false,
},
],
mass_g: 34,
metadata: {
foo: "bar",
},
price_cents_usd: "1.0",
production: false,
state: "placed",
},
},
};
1 change: 1 addition & 0 deletions src/triggers/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export * from "./estimate";
export * from "./order";
export * from "./project";

0 comments on commit fed5032

Please sign in to comment.