zyphr 0.1.57 → 0.1.59

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5df74a41bd87130c14d2f741651f1617baade8b9ebe23f90d7edc1b112c15bc0
4
- data.tar.gz: 72b9840799c7b7e72e16db2bcb96f982e5f7b9a2d4f296195d1303be7549d1fe
3
+ metadata.gz: 68a6a8c4ca53f0d9c241056229349324604e5041f8123f33c293e47c0ededfab
4
+ data.tar.gz: 4292defa42f1d859b8b3cd86a8e763313be7259c2fabbc80c995165494931c0b
5
5
  SHA512:
6
- metadata.gz: 7e558a85a1ffcc94bc8e692c4d7338d89632e878daf74229f7689d3b3c2236ae0500e8d375f1ee4d039836f0bd66e33ece72db481e9fb3416916d9d039eabeef
7
- data.tar.gz: dc84b266eaa34edd83b5000997e8867681378d12564c1b158a492aea6c0adcabaf1d2d28e7b7c5cdc554d5d35bf4905d8f3986745613c10cc4f0030c0530dede
6
+ metadata.gz: c4205020ca0940fde2cfb3cf1f4d6b0b6705273fe93ee111fdd3ac4040773483dacf0d3d26335aea4a3b999dad58ac52a818f729799a7a02f30e3ed4a5de06df
7
+ data.tar.gz: 48d3cc59856b33e78258731f226414caabd39e531059c838853382c0df13ae78001434d3ab3b777f304984744249599e364d9979a6f34bfaf3ca3a39833eedab
@@ -15,7 +15,7 @@ All URIs are relative to *https://api.zyphr.dev/v1*
15
15
 
16
16
  Confirm email verification
17
17
 
18
- Verify the user's email using a token you collected yourself. IMPORTANT: the emailed verification LINK verifies the address server-side **on click** and then redirects to `redirect_url`. So if you take the token off that redirect and post it here, it is already redeemed and this endpoint treats that as an idempotent **success** (`200` with `already_verified: true`), not an error. Only a genuinely invalid / expired / unknown token returns `400`. `send` / `confirm` / `resend` are NOT a mandatory matched set`confirm` is for flows where you collect the token directly rather than landing the hosted redirect. Recommended pattern for the redirect landing: call `confirm`, ignore its result, then read the user's verified state back and report that — correct whether or not the link already consumed the token.
18
+ Verify the user's email using the token from the emailed link. Zyphr does NOT host auth pages and never redeems the token itself. The emailed link points at YOUR `redirect_url` with `?token=<raw>`; your app reads that token and posts it here. Nothing is verified until this call. This endpoint is idempotent: re-posting an already-redeemed token returns `200` with `already_verified: true` rather than an error, so a double submit or a link opened twice is safe. Only a genuinely invalid / expired / unknown token returns `400`. Note `redirect_url` is REQUIRED (snake_case) when sending the verification emailthere is no hosted fallback page.
19
19
 
20
20
  ### Examples
21
21
 
data/docs/DevicesApi.md CHANGED
@@ -378,7 +378,7 @@ end
378
378
 
379
379
  Register a device
380
380
 
381
- Register a device for push notifications. Registration is an upsert keyed on (project, token), so calling it on every app launch is safe and idempotent. Re-registering an existing token under a different `user_id` **reassigns** the device to that user — the previous association does not persist, so a push addressed to the old user will not reach this device. `user_id` is an opaque string you choose. It is stored verbatim with no foreign key, and `POST /v1/push` matches on exactly that value. No Subscriber record is created for you. Requires a secret API key, so call it from your backend and derive `user_id` from the authenticated session rather than the request body.
381
+ Register a device for push notifications. Registration is an upsert keyed on (project, token), so calling it on every app launch is safe and idempotent. Re-registering an existing token under a different `user_id` **reassigns** the device to that user — the previous association does not persist, so a push addressed to the old user will not reach this device. `user_id` is an opaque string you choose. It is stored verbatim with no foreign key, and `POST /v1/push` matches on exactly that value. No Subscriber record is created for you. Call this from your backend and derive `user_id` from the authenticated session rather than the request body. **Two credentials are accepted, and the choice matters for push routing:** - **Application credentials** — `X-Application-Key` + `X-Application-Secret` (`za_*`). The device is bound to that application, and pushes to it resolve *that application's* push provider credentials. Use this when a single project contains more than one app: APNs credentials are bound to a bundle id, so a device registered under the wrong application has its pushes rejected by Apple. The application is taken from the credential and can never be set from the request body. Using an **environment-scoped** key (`za_test_pub_*` / `za_live_pub_*`) also binds the device to that environment, which is what lets APNs sandbox and production credentials be configured separately. A legacy application-level key (`za_pub_*`) binds the application only, and such devices will not match an environment-scoped push config. - **Project secret API key** (`zy_*`) — the device is not bound to any application and resolves the project-level push provider config. This is the historical behaviour and remains supported.
382
382
 
383
383
  ### Examples
384
384
 
@@ -387,10 +387,20 @@ require 'time'
387
387
  require 'zyphr'
388
388
  # setup authorization
389
389
  Zyphr.configure do |config|
390
+ # Configure API key authorization: ApplicationSecret
391
+ config.api_key['X-Application-Secret'] = 'YOUR API KEY'
392
+ # Uncomment the following line to set a prefix for the API key, e.g. 'Bearer' (defaults to nil)
393
+ # config.api_key_prefix['X-Application-Secret'] = 'Bearer'
394
+
390
395
  # Configure API key authorization: ApiKeyAuth
391
396
  config.api_key['X-API-Key'] = 'YOUR API KEY'
392
397
  # Uncomment the following line to set a prefix for the API key, e.g. 'Bearer' (defaults to nil)
393
398
  # config.api_key_prefix['X-API-Key'] = 'Bearer'
399
+
400
+ # Configure API key authorization: ApplicationPublicKey
401
+ config.api_key['X-Application-Key'] = 'YOUR API KEY'
402
+ # Uncomment the following line to set a prefix for the API key, e.g. 'Bearer' (defaults to nil)
403
+ # config.api_key_prefix['X-Application-Key'] = 'Bearer'
394
404
  end
395
405
 
396
406
  api_instance = Zyphr::DevicesApi.new
@@ -435,7 +445,7 @@ end
435
445
 
436
446
  ### Authorization
437
447
 
438
- [ApiKeyAuth](../README.md#ApiKeyAuth)
448
+ [ApplicationSecret](../README.md#ApplicationSecret), [ApiKeyAuth](../README.md#ApiKeyAuth), [ApplicationPublicKey](../README.md#ApplicationPublicKey)
439
449
 
440
450
  ### HTTP request headers
441
451
 
@@ -20,7 +20,7 @@ module Zyphr
20
20
  @api_client = api_client
21
21
  end
22
22
  # Confirm email verification
23
- # Verify the user's email using a token you collected yourself. IMPORTANT: the emailed verification LINK verifies the address server-side **on click** and then redirects to `redirect_url`. So if you take the token off that redirect and post it here, it is already redeemed and this endpoint treats that as an idempotent **success** (`200` with `already_verified: true`), not an error. Only a genuinely invalid / expired / unknown token returns `400`. `send` / `confirm` / `resend` are NOT a mandatory matched set`confirm` is for flows where you collect the token directly rather than landing the hosted redirect. Recommended pattern for the redirect landing: call `confirm`, ignore its result, then read the user's verified state back and report that — correct whether or not the link already consumed the token.
23
+ # Verify the user's email using the token from the emailed link. Zyphr does NOT host auth pages and never redeems the token itself. The emailed link points at YOUR `redirect_url` with `?token=<raw>`; your app reads that token and posts it here. Nothing is verified until this call. This endpoint is idempotent: re-posting an already-redeemed token returns `200` with `already_verified: true` rather than an error, so a double submit or a link opened twice is safe. Only a genuinely invalid / expired / unknown token returns `400`. Note `redirect_url` is REQUIRED (snake_case) when sending the verification emailthere is no hosted fallback page.
24
24
  # @param confirm_email_verification_request [ConfirmEmailVerificationRequest]
25
25
  # @param [Hash] opts the optional parameters
26
26
  # @return [ConfirmEmailVerificationResponse]
@@ -30,7 +30,7 @@ module Zyphr
30
30
  end
31
31
 
32
32
  # Confirm email verification
33
- # Verify the user&#39;s email using a token you collected yourself. IMPORTANT: the emailed verification LINK verifies the address server-side **on click** and then redirects to &#x60;redirect_url&#x60;. So if you take the token off that redirect and post it here, it is already redeemed and this endpoint treats that as an idempotent **success** (&#x60;200&#x60; with &#x60;already_verified: true&#x60;), not an error. Only a genuinely invalid / expired / unknown token returns &#x60;400&#x60;. &#x60;send&#x60; / &#x60;confirm&#x60; / &#x60;resend&#x60; are NOT a mandatory matched set&#x60;confirm&#x60; is for flows where you collect the token directly rather than landing the hosted redirect. Recommended pattern for the redirect landing: call &#x60;confirm&#x60;, ignore its result, then read the user&#39;s verified state back and report that — correct whether or not the link already consumed the token.
33
+ # Verify the user&#39;s email using the token from the emailed link. Zyphr does NOT host auth pages and never redeems the token itself. The emailed link points at YOUR &#x60;redirect_url&#x60; with &#x60;?token&#x3D;&lt;raw&gt;&#x60;; your app reads that token and posts it here. Nothing is verified until this call. This endpoint is idempotent: re-posting an already-redeemed token returns &#x60;200&#x60; with &#x60;already_verified: true&#x60; rather than an error, so a double submit or a link opened twice is safe. Only a genuinely invalid / expired / unknown token returns &#x60;400&#x60;. Note &#x60;redirect_url&#x60; is REQUIRED (snake_case) when sending the verification emailthere is no hosted fallback page.
34
34
  # @param confirm_email_verification_request [ConfirmEmailVerificationRequest]
35
35
  # @param [Hash] opts the optional parameters
36
36
  # @return [Array<(ConfirmEmailVerificationResponse, Integer, Hash)>] ConfirmEmailVerificationResponse data, response status code and response headers
@@ -339,7 +339,7 @@ module Zyphr
339
339
  end
340
340
 
341
341
  # Register a device
342
- # Register a device for push notifications. Registration is an upsert keyed on (project, token), so calling it on every app launch is safe and idempotent. Re-registering an existing token under a different `user_id` **reassigns** the device to that user — the previous association does not persist, so a push addressed to the old user will not reach this device. `user_id` is an opaque string you choose. It is stored verbatim with no foreign key, and `POST /v1/push` matches on exactly that value. No Subscriber record is created for you. Requires a secret API key, so call it from your backend and derive `user_id` from the authenticated session rather than the request body.
342
+ # Register a device for push notifications. Registration is an upsert keyed on (project, token), so calling it on every app launch is safe and idempotent. Re-registering an existing token under a different `user_id` **reassigns** the device to that user — the previous association does not persist, so a push addressed to the old user will not reach this device. `user_id` is an opaque string you choose. It is stored verbatim with no foreign key, and `POST /v1/push` matches on exactly that value. No Subscriber record is created for you. Call this from your backend and derive `user_id` from the authenticated session rather than the request body. **Two credentials are accepted, and the choice matters for push routing:** - **Application credentials** — `X-Application-Key` + `X-Application-Secret` (`za_*`). The device is bound to that application, and pushes to it resolve *that application's* push provider credentials. Use this when a single project contains more than one app: APNs credentials are bound to a bundle id, so a device registered under the wrong application has its pushes rejected by Apple. The application is taken from the credential and can never be set from the request body. Using an **environment-scoped** key (`za_test_pub_*` / `za_live_pub_*`) also binds the device to that environment, which is what lets APNs sandbox and production credentials be configured separately. A legacy application-level key (`za_pub_*`) binds the application only, and such devices will not match an environment-scoped push config. - **Project secret API key** (`zy_*`) — the device is not bound to any application and resolves the project-level push provider config. This is the historical behaviour and remains supported.
343
343
  # @param register_device_request [RegisterDeviceRequest]
344
344
  # @param [Hash] opts the optional parameters
345
345
  # @return [DeviceResponse]
@@ -349,7 +349,7 @@ module Zyphr
349
349
  end
350
350
 
351
351
  # Register a device
352
- # Register a device for push notifications. Registration is an upsert keyed on (project, token), so calling it on every app launch is safe and idempotent. Re-registering an existing token under a different &#x60;user_id&#x60; **reassigns** the device to that user — the previous association does not persist, so a push addressed to the old user will not reach this device. &#x60;user_id&#x60; is an opaque string you choose. It is stored verbatim with no foreign key, and &#x60;POST /v1/push&#x60; matches on exactly that value. No Subscriber record is created for you. Requires a secret API key, so call it from your backend and derive &#x60;user_id&#x60; from the authenticated session rather than the request body.
352
+ # Register a device for push notifications. Registration is an upsert keyed on (project, token), so calling it on every app launch is safe and idempotent. Re-registering an existing token under a different &#x60;user_id&#x60; **reassigns** the device to that user — the previous association does not persist, so a push addressed to the old user will not reach this device. &#x60;user_id&#x60; is an opaque string you choose. It is stored verbatim with no foreign key, and &#x60;POST /v1/push&#x60; matches on exactly that value. No Subscriber record is created for you. Call this from your backend and derive &#x60;user_id&#x60; from the authenticated session rather than the request body. **Two credentials are accepted, and the choice matters for push routing:** - **Application credentials** — &#x60;X-Application-Key&#x60; + &#x60;X-Application-Secret&#x60; (&#x60;za_*&#x60;). The device is bound to that application, and pushes to it resolve *that application&#39;s* push provider credentials. Use this when a single project contains more than one app: APNs credentials are bound to a bundle id, so a device registered under the wrong application has its pushes rejected by Apple. The application is taken from the credential and can never be set from the request body. Using an **environment-scoped** key (&#x60;za_test_pub_*&#x60; / &#x60;za_live_pub_*&#x60;) also binds the device to that environment, which is what lets APNs sandbox and production credentials be configured separately. A legacy application-level key (&#x60;za_pub_*&#x60;) binds the application only, and such devices will not match an environment-scoped push config. - **Project secret API key** (&#x60;zy_*&#x60;) — the device is not bound to any application and resolves the project-level push provider config. This is the historical behaviour and remains supported.
353
353
  # @param register_device_request [RegisterDeviceRequest]
354
354
  # @param [Hash] opts the optional parameters
355
355
  # @return [Array<(DeviceResponse, Integer, Hash)>] DeviceResponse data, response status code and response headers
@@ -387,7 +387,7 @@ module Zyphr
387
387
  return_type = opts[:debug_return_type] || 'DeviceResponse'
388
388
 
389
389
  # auth_names
390
- auth_names = opts[:debug_auth_names] || ['ApiKeyAuth']
390
+ auth_names = opts[:debug_auth_names] || ['ApplicationSecret', 'ApiKeyAuth', 'ApplicationPublicKey']
391
391
 
392
392
  new_options = opts.merge(
393
393
  :operation => :"DevicesApi.register_device",
@@ -34,7 +34,7 @@ describe 'AuthEmailVerificationApi' do
34
34
 
35
35
  # unit tests for confirm_email_verification
36
36
  # Confirm email verification
37
- # Verify the user&#39;s email using a token you collected yourself. IMPORTANT: the emailed verification LINK verifies the address server-side **on click** and then redirects to &#x60;redirect_url&#x60;. So if you take the token off that redirect and post it here, it is already redeemed and this endpoint treats that as an idempotent **success** (&#x60;200&#x60; with &#x60;already_verified: true&#x60;), not an error. Only a genuinely invalid / expired / unknown token returns &#x60;400&#x60;. &#x60;send&#x60; / &#x60;confirm&#x60; / &#x60;resend&#x60; are NOT a mandatory matched set&#x60;confirm&#x60; is for flows where you collect the token directly rather than landing the hosted redirect. Recommended pattern for the redirect landing: call &#x60;confirm&#x60;, ignore its result, then read the user&#39;s verified state back and report that — correct whether or not the link already consumed the token.
37
+ # Verify the user&#39;s email using the token from the emailed link. Zyphr does NOT host auth pages and never redeems the token itself. The emailed link points at YOUR &#x60;redirect_url&#x60; with &#x60;?token&#x3D;&lt;raw&gt;&#x60;; your app reads that token and posts it here. Nothing is verified until this call. This endpoint is idempotent: re-posting an already-redeemed token returns &#x60;200&#x60; with &#x60;already_verified: true&#x60; rather than an error, so a double submit or a link opened twice is safe. Only a genuinely invalid / expired / unknown token returns &#x60;400&#x60;. Note &#x60;redirect_url&#x60; is REQUIRED (snake_case) when sending the verification emailthere is no hosted fallback page.
38
38
  # @param confirm_email_verification_request
39
39
  # @param [Hash] opts the optional parameters
40
40
  # @return [ConfirmEmailVerificationResponse]
@@ -96,7 +96,7 @@ describe 'DevicesApi' do
96
96
 
97
97
  # unit tests for register_device
98
98
  # Register a device
99
- # Register a device for push notifications. Registration is an upsert keyed on (project, token), so calling it on every app launch is safe and idempotent. Re-registering an existing token under a different &#x60;user_id&#x60; **reassigns** the device to that user — the previous association does not persist, so a push addressed to the old user will not reach this device. &#x60;user_id&#x60; is an opaque string you choose. It is stored verbatim with no foreign key, and &#x60;POST /v1/push&#x60; matches on exactly that value. No Subscriber record is created for you. Requires a secret API key, so call it from your backend and derive &#x60;user_id&#x60; from the authenticated session rather than the request body.
99
+ # Register a device for push notifications. Registration is an upsert keyed on (project, token), so calling it on every app launch is safe and idempotent. Re-registering an existing token under a different &#x60;user_id&#x60; **reassigns** the device to that user — the previous association does not persist, so a push addressed to the old user will not reach this device. &#x60;user_id&#x60; is an opaque string you choose. It is stored verbatim with no foreign key, and &#x60;POST /v1/push&#x60; matches on exactly that value. No Subscriber record is created for you. Call this from your backend and derive &#x60;user_id&#x60; from the authenticated session rather than the request body. **Two credentials are accepted, and the choice matters for push routing:** - **Application credentials** — &#x60;X-Application-Key&#x60; + &#x60;X-Application-Secret&#x60; (&#x60;za_*&#x60;). The device is bound to that application, and pushes to it resolve *that application&#39;s* push provider credentials. Use this when a single project contains more than one app: APNs credentials are bound to a bundle id, so a device registered under the wrong application has its pushes rejected by Apple. The application is taken from the credential and can never be set from the request body. Using an **environment-scoped** key (&#x60;za_test_pub_*&#x60; / &#x60;za_live_pub_*&#x60;) also binds the device to that environment, which is what lets APNs sandbox and production credentials be configured separately. A legacy application-level key (&#x60;za_pub_*&#x60;) binds the application only, and such devices will not match an environment-scoped push config. - **Project secret API key** (&#x60;zy_*&#x60;) — the device is not bound to any application and resolves the project-level push provider config. This is the historical behaviour and remains supported.
100
100
  # @param register_device_request
101
101
  # @param [Hash] opts the optional parameters
102
102
  # @return [DeviceResponse]
data/zyphr.gemspec CHANGED
@@ -17,7 +17,7 @@ require "zyphr/version"
17
17
 
18
18
  Gem::Specification.new do |s|
19
19
  s.name = "zyphr"
20
- s.version = '0.1.57'
20
+ s.version = '0.1.59'
21
21
  s.platform = Gem::Platform::RUBY
22
22
  s.authors = ["Zyphr"]
23
23
  s.email = ["support@zyphr.dev"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zyphr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.57
4
+ version: 0.1.59
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zyphr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-08-17 00:00:00.000000000 Z
11
+ date: 2026-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday