@faable/auth-sdk 2.7.69 → 2.7.71

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.
@@ -2005,6 +2005,26 @@ export interface paths {
2005
2005
  patch?: never;
2006
2006
  trace?: never;
2007
2007
  };
2008
+ "/sdk/report": {
2009
+ parameters: {
2010
+ query?: never;
2011
+ header?: never;
2012
+ path?: never;
2013
+ cookie?: never;
2014
+ };
2015
+ get?: never;
2016
+ put?: never;
2017
+ /**
2018
+ * Report a client-side sign-in failure
2019
+ * @description Called by the browser SDKs when a sign-in redirect could not be completed on the client (the code exchange stalled or had no PKCE verifier). The server only logs it; nothing is stored and the response is always empty.
2020
+ */
2021
+ post: operations["sdk/report"];
2022
+ delete?: never;
2023
+ options?: never;
2024
+ head?: never;
2025
+ patch?: never;
2026
+ trace?: never;
2027
+ };
2008
2028
  "/passwordless/verify_redirect": {
2009
2029
  parameters: {
2010
2030
  query?: never;
@@ -19559,6 +19579,8 @@ export interface operations {
19559
19579
  mode?: "auto" | "invite";
19560
19580
  /** @description Where `/invite-verify` redirects the invitee after a successful accept. Must be at an origin of one of this tenant's client callbacks or `callback_hostnames`. */
19561
19581
  redirect_uri?: string;
19582
+ /** @description The user who is inviting, when you call on their behalf with a machine token. Shown in the invite email. Must be a user of this tenant; defaults to the token's own user. */
19583
+ inviter_user_id?: string;
19562
19584
  /** @description Your own page for accepting the invite. The emailed link becomes `<accept_url>#<token>`; the page reads the token from the fragment, signs the user in, and calls `POST /team/invite/accept` with the token and the signed-in user's id. Must be at an origin of one of this tenant's client callbacks or `callback_hostnames`. Without it the link is auth's own `/invite-verify`. */
19563
19585
  accept_url?: string;
19564
19586
  };
@@ -26602,6 +26624,83 @@ export interface operations {
26602
26624
  };
26603
26625
  };
26604
26626
  };
26627
+ "sdk/report": {
26628
+ parameters: {
26629
+ query?: never;
26630
+ header?: never;
26631
+ path?: never;
26632
+ cookie?: never;
26633
+ };
26634
+ requestBody: {
26635
+ content: {
26636
+ "application/json": {
26637
+ client_id: string;
26638
+ event: "callback_stalled" | "callback_no_verifier";
26639
+ /** @description Last step the SDK reached before reporting (`detected`, `verifier_loaded`, `token_request_sent`, `token_response`…). */
26640
+ stage?: string;
26641
+ elapsed_ms?: number;
26642
+ detail?: string;
26643
+ };
26644
+ };
26645
+ };
26646
+ responses: {
26647
+ /** @description Default Response */
26648
+ 204: {
26649
+ headers: {
26650
+ [name: string]: unknown;
26651
+ };
26652
+ content?: never;
26653
+ };
26654
+ /** @description `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field. */
26655
+ 400: {
26656
+ headers: {
26657
+ [name: string]: unknown;
26658
+ };
26659
+ content: {
26660
+ "application/json": components["schemas"]["ErrorResponse"] & {
26661
+ /** @enum {string} */
26662
+ error_code?: "validation_error";
26663
+ };
26664
+ };
26665
+ };
26666
+ /** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
26667
+ 404: {
26668
+ headers: {
26669
+ [name: string]: unknown;
26670
+ };
26671
+ content: {
26672
+ "application/json": components["schemas"]["ErrorResponse"] & {
26673
+ /** @enum {string} */
26674
+ error_code?: "account_not_found";
26675
+ };
26676
+ };
26677
+ };
26678
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
26679
+ 429: {
26680
+ headers: {
26681
+ [name: string]: unknown;
26682
+ };
26683
+ content: {
26684
+ "application/json": components["schemas"]["ErrorResponse"] & {
26685
+ /** @enum {string} */
26686
+ error_code?: "too_many_requests";
26687
+ };
26688
+ };
26689
+ };
26690
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
26691
+ 500: {
26692
+ headers: {
26693
+ [name: string]: unknown;
26694
+ };
26695
+ content: {
26696
+ "application/json": components["schemas"]["ErrorResponse"] & {
26697
+ /** @enum {string} */
26698
+ error_code?: "internal_error";
26699
+ };
26700
+ };
26701
+ };
26702
+ };
26703
+ };
26605
26704
  "passwordless/verify_redirect": {
26606
26705
  parameters: {
26607
26706
  query: {
package/dist/version.js CHANGED
@@ -9,13 +9,13 @@
9
9
  // login pages could not import the SDK at all. Same pattern as auth-js.
10
10
  //
11
11
  // The sentinels MUST stay byte-identical to the `from` values in `.releaserc`.
12
- export const version = "2.7.69";
12
+ export const version = "2.7.71";
13
13
  // Short git SHA of the released commit. The version dates a build; this names
14
14
  // the exact tree, so a canonical log line or an audit entry leads straight to
15
15
  // `git show <sha>`. Deliberately NOT hex: an unreleased build (dev, a local
16
16
  // link) cannot be mistaken for a real commit — auth only records values that
17
17
  // look like a SHA, and this one never will.
18
- export const commit = "16c1571";
18
+ export const commit = "b7541d7";
19
19
  // What this SDK writes in `x-faable-client`. Exported for a consumer that
20
20
  // builds a strategy on its own (outside `FaableAuthApi`) and still wants the
21
21
  // token request attributed — a bare `authClientCredentials` stamps only what
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faable/auth-sdk",
3
- "version": "2.7.69",
3
+ "version": "2.7.71",
4
4
  "author": "Marc Pomar <marc@faable.com>",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/spec/openapi.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "info": {
4
4
  "title": "@faablecloud/auth",
5
5
  "description": "Auth Platform made by Faable. Manage Users and Roles",
6
- "version": "2.56.0",
6
+ "version": "2.58.0",
7
7
  "license": {
8
8
  "name": "private",
9
9
  "url": "https://faable.com/docs/platform/privacy-policy"
@@ -36817,6 +36817,10 @@
36817
36817
  "type": "string",
36818
36818
  "description": "Where `/invite-verify` redirects the invitee after a successful accept. Must be at an origin of one of this tenant's client callbacks or `callback_hostnames`."
36819
36819
  },
36820
+ "inviter_user_id": {
36821
+ "type": "string",
36822
+ "description": "The user who is inviting, when you call on their behalf with a machine token. Shown in the invite email. Must be a user of this tenant; defaults to the token's own user."
36823
+ },
36820
36824
  "accept_url": {
36821
36825
  "type": "string",
36822
36826
  "description": "Your own page for accepting the invite. The emailed link becomes `<accept_url>#<token>`; the page reads the token from the fragment, signs the user in, and calls `POST /team/invite/accept` with the token and the signed-in user's id. Must be at an origin of one of this tenant's client callbacks or `callback_hostnames`. Without it the link is auth's own `/invite-verify`."
@@ -54742,6 +54746,173 @@
54742
54746
  }
54743
54747
  }
54744
54748
  },
54749
+ "/sdk/report": {
54750
+ "post": {
54751
+ "operationId": "sdk/report",
54752
+ "summary": "Report a client-side sign-in failure",
54753
+ "tags": [
54754
+ "sdk"
54755
+ ],
54756
+ "description": "Called by the browser SDKs when a sign-in redirect could not be completed on the client (the code exchange stalled or had no PKCE verifier). The server only logs it; nothing is stored and the response is always empty.",
54757
+ "requestBody": {
54758
+ "required": true,
54759
+ "content": {
54760
+ "application/json": {
54761
+ "schema": {
54762
+ "type": "object",
54763
+ "required": [
54764
+ "client_id",
54765
+ "event"
54766
+ ],
54767
+ "properties": {
54768
+ "client_id": {
54769
+ "type": "string",
54770
+ "minLength": 1,
54771
+ "maxLength": 128
54772
+ },
54773
+ "event": {
54774
+ "anyOf": [
54775
+ {
54776
+ "type": "string",
54777
+ "enum": [
54778
+ "callback_stalled"
54779
+ ]
54780
+ },
54781
+ {
54782
+ "type": "string",
54783
+ "enum": [
54784
+ "callback_no_verifier"
54785
+ ]
54786
+ }
54787
+ ]
54788
+ },
54789
+ "stage": {
54790
+ "type": "string",
54791
+ "maxLength": 64,
54792
+ "description": "Last step the SDK reached before reporting (`detected`, `verifier_loaded`, `token_request_sent`, `token_response`…)."
54793
+ },
54794
+ "elapsed_ms": {
54795
+ "type": "integer",
54796
+ "minimum": 0,
54797
+ "maximum": 3600000
54798
+ },
54799
+ "detail": {
54800
+ "type": "string",
54801
+ "maxLength": 500
54802
+ }
54803
+ },
54804
+ "additionalProperties": false
54805
+ }
54806
+ }
54807
+ }
54808
+ },
54809
+ "responses": {
54810
+ "204": {
54811
+ "description": "Default Response"
54812
+ },
54813
+ "400": {
54814
+ "description": "`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
54815
+ "content": {
54816
+ "application/json": {
54817
+ "schema": {
54818
+ "allOf": [
54819
+ {
54820
+ "$ref": "#/components/schemas/ErrorResponse"
54821
+ },
54822
+ {
54823
+ "type": "object",
54824
+ "properties": {
54825
+ "error_code": {
54826
+ "type": "string",
54827
+ "enum": [
54828
+ "validation_error"
54829
+ ]
54830
+ }
54831
+ }
54832
+ }
54833
+ ]
54834
+ }
54835
+ }
54836
+ }
54837
+ },
54838
+ "404": {
54839
+ "description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
54840
+ "content": {
54841
+ "application/json": {
54842
+ "schema": {
54843
+ "allOf": [
54844
+ {
54845
+ "$ref": "#/components/schemas/ErrorResponse"
54846
+ },
54847
+ {
54848
+ "type": "object",
54849
+ "properties": {
54850
+ "error_code": {
54851
+ "type": "string",
54852
+ "enum": [
54853
+ "account_not_found"
54854
+ ]
54855
+ }
54856
+ }
54857
+ }
54858
+ ]
54859
+ }
54860
+ }
54861
+ }
54862
+ },
54863
+ "429": {
54864
+ "description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
54865
+ "content": {
54866
+ "application/json": {
54867
+ "schema": {
54868
+ "allOf": [
54869
+ {
54870
+ "$ref": "#/components/schemas/ErrorResponse"
54871
+ },
54872
+ {
54873
+ "type": "object",
54874
+ "properties": {
54875
+ "error_code": {
54876
+ "type": "string",
54877
+ "enum": [
54878
+ "too_many_requests"
54879
+ ]
54880
+ }
54881
+ }
54882
+ }
54883
+ ]
54884
+ }
54885
+ }
54886
+ }
54887
+ },
54888
+ "500": {
54889
+ "description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
54890
+ "content": {
54891
+ "application/json": {
54892
+ "schema": {
54893
+ "allOf": [
54894
+ {
54895
+ "$ref": "#/components/schemas/ErrorResponse"
54896
+ },
54897
+ {
54898
+ "type": "object",
54899
+ "properties": {
54900
+ "error_code": {
54901
+ "type": "string",
54902
+ "enum": [
54903
+ "internal_error"
54904
+ ]
54905
+ }
54906
+ }
54907
+ }
54908
+ ]
54909
+ }
54910
+ }
54911
+ }
54912
+ }
54913
+ }
54914
+ }
54915
+ },
54745
54916
  "/passwordless/verify_redirect": {
54746
54917
  "get": {
54747
54918
  "operationId": "passwordless/verify_redirect",