@zapier/zapier-sdk-core 0.7.0 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @zapier/zapier-sdk-core
2
2
 
3
+ ## 0.7.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 74f835d: Move x-required-scopes to x-fastify-config.requiredScopes.
8
+
9
+ ## 0.7.1
10
+
11
+ ### Patch Changes
12
+
13
+ - c740422: Add dedupe method to zapier-sdk-core
14
+
3
15
  ## 0.7.0
4
16
 
5
17
  ### Minor Changes
@@ -53,6 +53,10 @@ var tags = [
53
53
  name: "Client Credentials",
54
54
  description: "Client credentials management routes"
55
55
  },
56
+ {
57
+ name: "Deduplication",
58
+ description: "Deduplication-related routes"
59
+ },
56
60
  {
57
61
  name: "Documentation",
58
62
  description: "Documentation-related routes"
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/v0/config/metadata.ts"],"sourcesContent":["/**\n * OpenAPI specification metadata\n *\n * This file contains all the base metadata for the OpenAPI specification\n * that was previously stored in openapi-base.yaml.\n *\n * Note on 'as const' usage:\n * - We use 'as const' on literal values that should be treated as enums\n * (e.g., \"apiKey\", \"header\", \"3.1.0\") to get precise literal types\n * - We avoid 'as const' on top-level configuration objects to prevent\n * deep readonly types that can cause compatibility issues with libraries\n * expecting mutable types (like zod-to-openapi)\n * - If you encounter readonly type errors, check whether the consuming\n * library expects mutable types and remove 'as const' accordingly\n */\n\nexport const apiInfo = {\n title: \"Zapier SDK API\",\n version: \"1.0.0\",\n contact: {\n email: \"engineering@zapier.com\",\n },\n description: \"The Zapier SDK API serves as a backend for the Zapier SDK.\",\n};\n\nexport const servers: Array<{ url: string; description: string }> = [];\n\nexport const tags = [\n {\n name: \"Actions\",\n description: \"Action-related routes\",\n },\n {\n name: \"Apps\",\n description: \"App-related routes\",\n },\n {\n name: \"Authentications\",\n description: \"Authentication-related routes\",\n },\n {\n name: \"Client Credentials\",\n description: \"Client credentials management routes\",\n },\n {\n name: \"Documentation\",\n description: \"Documentation-related routes\",\n },\n];\n\n/**\n * Security schemes for OpenAPI specification\n *\n * Note: 'as const' is used on enum-like literal values (\"apiKey\", \"header\")\n * to ensure TypeScript treats them as literal types rather than generic strings.\n * This provides better type safety when the OpenAPI generator validates these values.\n */\nexport const securitySchemes = {\n userJwt: {\n type: \"apiKey\" as const,\n in: \"header\" as const,\n name: \"Authorization\",\n description:\n \"Format should be `JWT <your-jwt>` (you must ensure that the JWT prefix \" +\n \"is included in your requests).\\\\n\\\\n\" +\n \"Example: `Authorization: JWT your.jwt.value.here`\",\n },\n} as const;\n\n/**\n * Complete OpenAPI metadata for document generation\n */\nexport const openApiMetadata = {\n openapi: \"3.1.0\" as const,\n info: apiInfo,\n servers,\n tags,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBO,IAAM,UAAU;AAAA,EACrB,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA,aAAa;AACf;AAEO,IAAM,UAAuD,CAAC;AAE9D,IAAM,OAAO;AAAA,EAClB;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AACF;AASO,IAAM,kBAAkB;AAAA,EAC7B,SAAS;AAAA,IACP,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EAGJ;AACF;AAKO,IAAM,kBAAkB;AAAA,EAC7B,SAAS;AAAA,EACT,MAAM;AAAA,EACN;AAAA,EACA;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/v0/config/metadata.ts"],"sourcesContent":["/**\n * OpenAPI specification metadata\n *\n * This file contains all the base metadata for the OpenAPI specification\n * that was previously stored in openapi-base.yaml.\n *\n * Note on 'as const' usage:\n * - We use 'as const' on literal values that should be treated as enums\n * (e.g., \"apiKey\", \"header\", \"3.1.0\") to get precise literal types\n * - We avoid 'as const' on top-level configuration objects to prevent\n * deep readonly types that can cause compatibility issues with libraries\n * expecting mutable types (like zod-to-openapi)\n * - If you encounter readonly type errors, check whether the consuming\n * library expects mutable types and remove 'as const' accordingly\n */\n\nexport const apiInfo = {\n title: \"Zapier SDK API\",\n version: \"1.0.0\",\n contact: {\n email: \"engineering@zapier.com\",\n },\n description: \"The Zapier SDK API serves as a backend for the Zapier SDK.\",\n};\n\nexport const servers: Array<{ url: string; description: string }> = [];\n\nexport const tags = [\n {\n name: \"Actions\",\n description: \"Action-related routes\",\n },\n {\n name: \"Apps\",\n description: \"App-related routes\",\n },\n {\n name: \"Authentications\",\n description: \"Authentication-related routes\",\n },\n {\n name: \"Client Credentials\",\n description: \"Client credentials management routes\",\n },\n {\n name: \"Deduplication\",\n description: \"Deduplication-related routes\",\n },\n {\n name: \"Documentation\",\n description: \"Documentation-related routes\",\n },\n];\n\n/**\n * Security schemes for OpenAPI specification\n *\n * Note: 'as const' is used on enum-like literal values (\"apiKey\", \"header\")\n * to ensure TypeScript treats them as literal types rather than generic strings.\n * This provides better type safety when the OpenAPI generator validates these values.\n */\nexport const securitySchemes = {\n userJwt: {\n type: \"apiKey\" as const,\n in: \"header\" as const,\n name: \"Authorization\",\n description:\n \"Format should be `JWT <your-jwt>` (you must ensure that the JWT prefix \" +\n \"is included in your requests).\\\\n\\\\n\" +\n \"Example: `Authorization: JWT your.jwt.value.here`\",\n },\n} as const;\n\n/**\n * Complete OpenAPI metadata for document generation\n */\nexport const openApiMetadata = {\n openapi: \"3.1.0\" as const,\n info: apiInfo,\n servers,\n tags,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBO,IAAM,UAAU;AAAA,EACrB,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA,aAAa;AACf;AAEO,IAAM,UAAuD,CAAC;AAE9D,IAAM,OAAO;AAAA,EAClB;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AACF;AASO,IAAM,kBAAkB;AAAA,EAC7B,SAAS;AAAA,IACP,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EAGJ;AACF;AAKO,IAAM,kBAAkB;AAAA,EAC7B,SAAS;AAAA,EACT,MAAM;AAAA,EACN;AAAA,EACA;AACF;","names":[]}
@@ -25,6 +25,10 @@ var tags = [
25
25
  name: "Client Credentials",
26
26
  description: "Client credentials management routes"
27
27
  },
28
+ {
29
+ name: "Deduplication",
30
+ description: "Deduplication-related routes"
31
+ },
28
32
  {
29
33
  name: "Documentation",
30
34
  description: "Documentation-related routes"
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/v0/config/metadata.ts"],"sourcesContent":["/**\n * OpenAPI specification metadata\n *\n * This file contains all the base metadata for the OpenAPI specification\n * that was previously stored in openapi-base.yaml.\n *\n * Note on 'as const' usage:\n * - We use 'as const' on literal values that should be treated as enums\n * (e.g., \"apiKey\", \"header\", \"3.1.0\") to get precise literal types\n * - We avoid 'as const' on top-level configuration objects to prevent\n * deep readonly types that can cause compatibility issues with libraries\n * expecting mutable types (like zod-to-openapi)\n * - If you encounter readonly type errors, check whether the consuming\n * library expects mutable types and remove 'as const' accordingly\n */\n\nexport const apiInfo = {\n title: \"Zapier SDK API\",\n version: \"1.0.0\",\n contact: {\n email: \"engineering@zapier.com\",\n },\n description: \"The Zapier SDK API serves as a backend for the Zapier SDK.\",\n};\n\nexport const servers: Array<{ url: string; description: string }> = [];\n\nexport const tags = [\n {\n name: \"Actions\",\n description: \"Action-related routes\",\n },\n {\n name: \"Apps\",\n description: \"App-related routes\",\n },\n {\n name: \"Authentications\",\n description: \"Authentication-related routes\",\n },\n {\n name: \"Client Credentials\",\n description: \"Client credentials management routes\",\n },\n {\n name: \"Documentation\",\n description: \"Documentation-related routes\",\n },\n];\n\n/**\n * Security schemes for OpenAPI specification\n *\n * Note: 'as const' is used on enum-like literal values (\"apiKey\", \"header\")\n * to ensure TypeScript treats them as literal types rather than generic strings.\n * This provides better type safety when the OpenAPI generator validates these values.\n */\nexport const securitySchemes = {\n userJwt: {\n type: \"apiKey\" as const,\n in: \"header\" as const,\n name: \"Authorization\",\n description:\n \"Format should be `JWT <your-jwt>` (you must ensure that the JWT prefix \" +\n \"is included in your requests).\\\\n\\\\n\" +\n \"Example: `Authorization: JWT your.jwt.value.here`\",\n },\n} as const;\n\n/**\n * Complete OpenAPI metadata for document generation\n */\nexport const openApiMetadata = {\n openapi: \"3.1.0\" as const,\n info: apiInfo,\n servers,\n tags,\n};\n"],"mappings":";AAgBO,IAAM,UAAU;AAAA,EACrB,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA,aAAa;AACf;AAEO,IAAM,UAAuD,CAAC;AAE9D,IAAM,OAAO;AAAA,EAClB;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AACF;AASO,IAAM,kBAAkB;AAAA,EAC7B,SAAS;AAAA,IACP,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EAGJ;AACF;AAKO,IAAM,kBAAkB;AAAA,EAC7B,SAAS;AAAA,EACT,MAAM;AAAA,EACN;AAAA,EACA;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/v0/config/metadata.ts"],"sourcesContent":["/**\n * OpenAPI specification metadata\n *\n * This file contains all the base metadata for the OpenAPI specification\n * that was previously stored in openapi-base.yaml.\n *\n * Note on 'as const' usage:\n * - We use 'as const' on literal values that should be treated as enums\n * (e.g., \"apiKey\", \"header\", \"3.1.0\") to get precise literal types\n * - We avoid 'as const' on top-level configuration objects to prevent\n * deep readonly types that can cause compatibility issues with libraries\n * expecting mutable types (like zod-to-openapi)\n * - If you encounter readonly type errors, check whether the consuming\n * library expects mutable types and remove 'as const' accordingly\n */\n\nexport const apiInfo = {\n title: \"Zapier SDK API\",\n version: \"1.0.0\",\n contact: {\n email: \"engineering@zapier.com\",\n },\n description: \"The Zapier SDK API serves as a backend for the Zapier SDK.\",\n};\n\nexport const servers: Array<{ url: string; description: string }> = [];\n\nexport const tags = [\n {\n name: \"Actions\",\n description: \"Action-related routes\",\n },\n {\n name: \"Apps\",\n description: \"App-related routes\",\n },\n {\n name: \"Authentications\",\n description: \"Authentication-related routes\",\n },\n {\n name: \"Client Credentials\",\n description: \"Client credentials management routes\",\n },\n {\n name: \"Deduplication\",\n description: \"Deduplication-related routes\",\n },\n {\n name: \"Documentation\",\n description: \"Documentation-related routes\",\n },\n];\n\n/**\n * Security schemes for OpenAPI specification\n *\n * Note: 'as const' is used on enum-like literal values (\"apiKey\", \"header\")\n * to ensure TypeScript treats them as literal types rather than generic strings.\n * This provides better type safety when the OpenAPI generator validates these values.\n */\nexport const securitySchemes = {\n userJwt: {\n type: \"apiKey\" as const,\n in: \"header\" as const,\n name: \"Authorization\",\n description:\n \"Format should be `JWT <your-jwt>` (you must ensure that the JWT prefix \" +\n \"is included in your requests).\\\\n\\\\n\" +\n \"Example: `Authorization: JWT your.jwt.value.here`\",\n },\n} as const;\n\n/**\n * Complete OpenAPI metadata for document generation\n */\nexport const openApiMetadata = {\n openapi: \"3.1.0\" as const,\n info: apiInfo,\n servers,\n tags,\n};\n"],"mappings":";AAgBO,IAAM,UAAU;AAAA,EACrB,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA,aAAa;AACf;AAEO,IAAM,UAAuD,CAAC;AAE9D,IAAM,OAAO;AAAA,EAClB;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AACF;AASO,IAAM,kBAAkB;AAAA,EAC7B,SAAS;AAAA,IACP,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EAGJ;AACF;AAKO,IAAM,kBAAkB;AAAA,EAC7B,SAAS;AAAA,EACT,MAAM;AAAA,EACN;AAAA,EACA;AACF;","names":[]}
package/openapi.yaml CHANGED
@@ -19,6 +19,8 @@ tags:
19
19
  description: Authentication-related routes
20
20
  - name: Client Credentials
21
21
  description: Client credentials management routes
22
+ - name: Deduplication
23
+ description: Deduplication-related routes
22
24
  - name: Documentation
23
25
  description: Documentation-related routes
24
26
  components:
@@ -153,6 +155,50 @@ components:
153
155
  required:
154
156
  - errors
155
157
  description: A JSON:API error response document containing an array of error objects.
158
+ CheckDedupeResponse:
159
+ type: object
160
+ properties:
161
+ data:
162
+ type: object
163
+ properties:
164
+ is_duplicate:
165
+ type: boolean
166
+ description: Whether this combination of dedupe_key and parameters has been seen before
167
+ dedupe_id:
168
+ type: string
169
+ format: uuid
170
+ description: Unique identifier for this dedupe record
171
+ created_at:
172
+ type: string
173
+ format: date-time
174
+ description: ISO 8601 timestamp when the record was created
175
+ expires_at:
176
+ type: string
177
+ format: date-time
178
+ description: ISO 8601 timestamp when the record will expire
179
+ required:
180
+ - is_duplicate
181
+ - dedupe_id
182
+ - created_at
183
+ - expires_at
184
+ description: The dedupe check result
185
+ required:
186
+ - data
187
+ CheckDedupeRequest:
188
+ type: object
189
+ properties:
190
+ dedupe_key:
191
+ type: string
192
+ minLength: 1
193
+ maxLength: 255
194
+ description: A key to namespace the deduplication check
195
+ parameters:
196
+ type: object
197
+ additionalProperties: {}
198
+ description: Parameters object to check for duplicates. The hash is computed from this object.
199
+ required:
200
+ - dedupe_key
201
+ - parameters
156
202
  CreateClientCredentialsResponse:
157
203
  type: object
158
204
  properties:
@@ -803,36 +849,35 @@ components:
803
849
  name: Authorization
804
850
  description: "Format should be `JWT <your-jwt>` (you must ensure that the JWT prefix is included in your requests).\\n\\nExample: `Authorization: JWT your.jwt.value.here`"
805
851
  paths:
806
- /api/v0/client-credentials:
852
+ /api/v0/dedupe/check:
807
853
  post:
808
- summary: Create client credentials
809
- description: Creates new client credentials for the authenticated user. The client_secret is only returned once in this response and cannot be retrieved again.
854
+ summary: Check for duplicate
855
+ description: Checks if a combination of dedupe_key and parameters has been seen before. If new, stores the hash and returns is_duplicate=false. If exists, returns is_duplicate=true. Records automatically expire after 7 days.
810
856
  tags:
811
- - Client Credentials
812
- operationId: v0_create_client_credentials
857
+ - Deduplication
858
+ operationId: v0_check_dedupe
813
859
  security:
814
860
  - userJwt: []
815
- x-required-scopes:
816
- - credentials
817
861
  requestBody:
818
862
  content:
819
863
  application/json:
820
864
  schema:
821
- $ref: "#/components/schemas/CreateClientCredentialsRequest"
865
+ $ref: "#/components/schemas/CheckDedupeRequest"
822
866
  examples:
823
867
  default:
824
- summary: Create credentials with external scope
868
+ summary: Check for duplicate email send
825
869
  value:
826
- name: My App Credentials
827
- allowed_scopes:
828
- - external
870
+ dedupe_key: email-campaign-123
871
+ parameters:
872
+ email: user@example.com
873
+ template_id: welcome-email
829
874
  responses:
830
- "201":
831
- description: Client credentials created successfully
875
+ "200":
876
+ description: Dedupe check completed successfully
832
877
  content:
833
878
  application/json:
834
879
  schema:
835
- $ref: "#/components/schemas/CreateClientCredentialsResponse"
880
+ $ref: "#/components/schemas/CheckDedupeResponse"
836
881
  "400":
837
882
  description: Bad Request
838
883
  content:
@@ -885,6 +930,59 @@ paths:
885
930
  application/json: &a7
886
931
  schema:
887
932
  $ref: "#/components/schemas/ErrorsResponse"
933
+ /api/v0/client-credentials:
934
+ post:
935
+ summary: Create client credentials
936
+ description: Creates new client credentials for the authenticated user. The client_secret is only returned once in this response and cannot be retrieved again.
937
+ tags:
938
+ - Client Credentials
939
+ operationId: v0_create_client_credentials
940
+ security:
941
+ - userJwt: []
942
+ x-fastify-config:
943
+ requiredScopes:
944
+ - credentials
945
+ requestBody:
946
+ content:
947
+ application/json:
948
+ schema:
949
+ $ref: "#/components/schemas/CreateClientCredentialsRequest"
950
+ examples:
951
+ default:
952
+ summary: Create credentials with external scope
953
+ value:
954
+ name: My App Credentials
955
+ allowed_scopes:
956
+ - external
957
+ responses:
958
+ "201":
959
+ description: Client credentials created successfully
960
+ content:
961
+ application/json:
962
+ schema:
963
+ $ref: "#/components/schemas/CreateClientCredentialsResponse"
964
+ "400":
965
+ description: Bad Request
966
+ content:
967
+ application/json: *a1
968
+ "401":
969
+ description: Unauthorized
970
+ content:
971
+ application/json: *a2
972
+ "429":
973
+ description: Too Many Requests
974
+ headers: *a3
975
+ content:
976
+ application/json: *a4
977
+ "500":
978
+ description: Server Error
979
+ content:
980
+ application/json: *a5
981
+ "503":
982
+ description: Service Unavailable
983
+ headers: *a6
984
+ content:
985
+ application/json: *a7
888
986
  get:
889
987
  summary: List client credentials
890
988
  description: Returns a paginated list of client credentials for the authenticated user.
@@ -893,8 +991,9 @@ paths:
893
991
  operationId: v0_list_client_credentials
894
992
  security:
895
993
  - userJwt: []
896
- x-required-scopes:
897
- - credentials
994
+ x-fastify-config:
995
+ requiredScopes:
996
+ - credentials
898
997
  parameters:
899
998
  - schema:
900
999
  type: integer
@@ -953,8 +1052,9 @@ paths:
953
1052
  operationId: v0_delete_client_credentials
954
1053
  security:
955
1054
  - userJwt: []
956
- x-required-scopes:
957
- - credentials
1055
+ x-fastify-config:
1056
+ requiredScopes:
1057
+ - credentials
958
1058
  parameters:
959
1059
  - schema:
960
1060
  type: string
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zapier/zapier-sdk-core",
3
- "version": "0.7.0",
3
+ "version": "0.7.2",
4
4
  "description": "Core schemas and TypeScript types for the Zapier SDK API",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Zapier, Inc.",