aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/docs/lib/ConvertKitApi.ts
diff options
context:
space:
mode:
author简律纯 <hsiangnianian@outlook.com>2023-04-28 00:28:05 +0800
committer简律纯 <hsiangnianian@outlook.com>2023-04-28 00:28:05 +0800
commitb992e50faf69e6f9e2d17385c0b05191e29bd49c (patch)
tree11e77cc771fc4afd83108ffcabac97fd4f937ea2 /docs/lib/ConvertKitApi.ts
parent871ea962c722bb74758e2ea801e3f3ca99af4907 (diff)
downloadHydroRoll-b992e50faf69e6f9e2d17385c0b05191e29bd49c.tar.gz
HydroRoll-b992e50faf69e6f9e2d17385c0b05191e29bd49c.zip
Diffstat (limited to 'docs/lib/ConvertKitApi.ts')
-rw-r--r--docs/lib/ConvertKitApi.ts59
1 files changed, 59 insertions, 0 deletions
diff --git a/docs/lib/ConvertKitApi.ts b/docs/lib/ConvertKitApi.ts
new file mode 100644
index 0000000..3e35ec9
--- /dev/null
+++ b/docs/lib/ConvertKitApi.ts
@@ -0,0 +1,59 @@
+import axios from "axios";
+
+const API_KEY = process.env.CONVERTKIT_API_KEY;
+const API_SECRET = process.env.CONVERTKIT_API_SECRET;
+
+const Http = axios.create({
+ baseURL: "https://api.convertkit.com/v3",
+ headers: {
+ "Content-Type": "application/json; charset=utf-8",
+ },
+});
+
+export function subscribeToForm({
+ formId,
+ email,
+ firstName,
+ fields,
+}: {
+ formId: string;
+ email: string;
+ firstName: string;
+ fields?: Record<string, any>;
+}): Promise<Subscriber> {
+ return Http(`/forms/${formId}/subscribe`, {
+ method: "POST",
+ data: { api_key: API_KEY, email, first_name: firstName, fields },
+ }).then((res) => res.data.subscription?.subscriber);
+}
+
+export function updateSubscriber(
+ id: string,
+ update: Subscriber
+): Promise<unknown> {
+ return Http(`/subscribers/${id}`, {
+ method: "PUT",
+ data: {
+ api_secret: API_SECRET,
+ ...update,
+ },
+ }).then((res) => res.data);
+}
+
+export interface Subscriber {
+ id: number;
+ first_name: string;
+ email_address: string;
+ state: string; // maybe 'active' | 'inactive'
+ created_at: string;
+ fields: Record<string, any>;
+}
+
+export function getSubscriber(id: string): Promise<Subscriber> {
+ return Http(`/subscribers/${id}`, {
+ method: "GET",
+ data: {
+ api_secret: API_SECRET,
+ },
+ }).then((res) => res.data.subscriber);
+} \ No newline at end of file