Post accounts account persons person

Updates an existing person.

Script stripe Verified

by hugo697 ยท 10/30/2023

The script

Submitted by hugo697 Typescript (fetch-only)
Verified 368 days ago
1
type Stripe = {
2
  token: string;
3
};
4
/**
5
 * Post accounts account persons person
6
 * Updates an existing person.
7
 */
8
export async function main(
9
  auth: Stripe,
10
  account: string,
11
  person: string,
12
  body: {
13
    additional_tos_acceptances?: {
14
      account?: {
15
        date?: number;
16
        ip?: string;
17
        user_agent?: string | "";
18
        [k: string]: unknown;
19
      };
20
      [k: string]: unknown;
21
    };
22
    address?: {
23
      city?: string;
24
      country?: string;
25
      line1?: string;
26
      line2?: string;
27
      postal_code?: string;
28
      state?: string;
29
      [k: string]: unknown;
30
    };
31
    address_kana?: {
32
      city?: string;
33
      country?: string;
34
      line1?: string;
35
      line2?: string;
36
      postal_code?: string;
37
      state?: string;
38
      town?: string;
39
      [k: string]: unknown;
40
    };
41
    address_kanji?: {
42
      city?: string;
43
      country?: string;
44
      line1?: string;
45
      line2?: string;
46
      postal_code?: string;
47
      state?: string;
48
      town?: string;
49
      [k: string]: unknown;
50
    };
51
    dob?:
52
      | { day: number; month: number; year: number; [k: string]: unknown }
53
      | "";
54
    documents?: {
55
      company_authorization?: { files?: (string | "")[]; [k: string]: unknown };
56
      passport?: { files?: (string | "")[]; [k: string]: unknown };
57
      visa?: { files?: (string | "")[]; [k: string]: unknown };
58
      [k: string]: unknown;
59
    };
60
    email?: string;
61
    expand?: string[];
62
    first_name?: string;
63
    first_name_kana?: string;
64
    first_name_kanji?: string;
65
    full_name_aliases?: string[] | "";
66
    gender?: string;
67
    id_number?: string;
68
    id_number_secondary?: string;
69
    last_name?: string;
70
    last_name_kana?: string;
71
    last_name_kanji?: string;
72
    maiden_name?: string;
73
    metadata?: { [k: string]: string } | "";
74
    nationality?: string;
75
    person_token?: string;
76
    phone?: string;
77
    political_exposure?: string;
78
    registered_address?: {
79
      city?: string;
80
      country?: string;
81
      line1?: string;
82
      line2?: string;
83
      postal_code?: string;
84
      state?: string;
85
      [k: string]: unknown;
86
    };
87
    relationship?: {
88
      director?: boolean;
89
      executive?: boolean;
90
      legal_guardian?: boolean;
91
      owner?: boolean;
92
      percent_ownership?: number | "";
93
      representative?: boolean;
94
      title?: string;
95
      [k: string]: unknown;
96
    };
97
    ssn_last_4?: string;
98
    verification?: {
99
      additional_document?: {
100
        back?: string;
101
        front?: string;
102
        [k: string]: unknown;
103
      };
104
      document?: { back?: string; front?: string; [k: string]: unknown };
105
      [k: string]: unknown;
106
    };
107
  }
108
) {
109
  const url = new URL(
110
    `https://api.stripe.com/v1/accounts/${account}/persons/${person}`
111
  );
112

113
  const response = await fetch(url, {
114
    method: "POST",
115
    headers: {
116
      "Content-Type": "application/x-www-form-urlencoded",
117
      Authorization: "Bearer " + auth.token,
118
    },
119
    body: encodeParams(body),
120
  });
121
  if (!response.ok) {
122
    const text = await response.text();
123
    throw new Error(`${response.status} ${text}`);
124
  }
125
  return await response.json();
126
}
127

128
function encodeParams(o: any) {
129
  function iter(o: any, path: string) {
130
    if (Array.isArray(o)) {
131
      o.forEach(function (a) {
132
        iter(a, path + "[]");
133
      });
134
      return;
135
    }
136
    if (o !== null && typeof o === "object") {
137
      Object.keys(o).forEach(function (k) {
138
        iter(o[k], path + "[" + k + "]");
139
      });
140
      return;
141
    }
142
    data.push(path + "=" + o);
143
  }
144
  const data: string[] = [];
145
  Object.keys(o).forEach(function (k) {
146
    if (o[k] !== undefined) {
147
      iter(o[k], k);
148
    }
149
  });
150
  return new URLSearchParams(data.join("&"));
151
}
152