@ofidj/contracts 3.6.24 → 3.7.1

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,28 +1,27 @@
1
- ## Sandbox build isolation
1
+ # Changelog
2
2
 
3
- - Compile contracts without ambient consumer test globals so nested checkouts build consistently under API and Angular workspaces.
3
+ - Describe login acceptance fields and public versioned app-agreement metadata.
4
4
 
5
- # Changelog
5
+ Dated entries are historical; current workflow is in the package README.
6
6
 
7
- - Add typed OIDC, organization/member/group/access and external-provider capability contracts.
7
+ ## [3.7.0] - 2026-09-11
8
8
 
9
- - Correct owner user-list payloads and expose closing-app status.
9
+ Minor, not patch: `FidjApiAppsOAuthStatusResponse` is removed. It described the
10
+ legacy per-app OAuth connector, whose routes answer 410 since 3.6.26, but the
11
+ export going away is a break for anyone importing the type.
10
12
 
11
- - Add app groups, handler readiness and automatic erasure retry receipt contracts.
13
+ - Add `pendingEmail`, the email-change and session contracts, and search/paging fields on the owner user list.
14
+ - Remove `FidjApiAppsOAuthStatusResponse` with the legacy OAuth connector it described.
15
+ - Compile contracts without ambient consumer test globals so nested workspace builds remain consistent.
12
16
 
17
+ - Add the optional public app home URL to the public response contract.
18
+ - Add typed OIDC, organization/member/group/access and external-provider capability contracts.
19
+ - Correct owner user-list payloads and expose closing-app status.
20
+ - Add app groups, handler readiness and automatic erasure retry receipt contracts.
13
21
  - Connect generated app data export/erasure, durable retry state and scoped completion receipts.
14
-
15
22
  - Add shared-account password recovery and email verification integration.
16
-
17
23
  - Local scenario: include Fidj in privacy, distinguish platform membership, and connect Alex’s personal and Studio Notes owner journeys.
18
24
 
19
- All notable changes to this project will be documented in this file.
20
-
21
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
22
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
23
-
24
- ## [Unreleased]
25
-
26
25
  ### Local validation milestone (3.6.24)
27
26
 
28
27
  - Add app identity to consent responses and typed personal-app, export and erasure payloads.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  TypeScript API contracts for Fidj services — request/response interfaces for REST endpoints (API v3).
4
4
 
5
- > _Renamed from `fidj-api-contracts` at 1.0.0. The HTTP contract version (`/v3`) is unchanged and independent from this package's semver._
5
+ > _Renamed from `fidj-api-contracts` at 1.0.0. The API remains `/v3`; the current 3.6.x package versions align with the coordinated API work._
6
6
 
7
7
  ## Structure
8
8
 
@@ -30,9 +30,13 @@ import {FidjApiUsersCreateRequest, FidjApiConsentsResponse} from '@ofidj/contrac
30
30
  ```bash
31
31
  npm run build # Compile TypeScript
32
32
  npm run bp:style:fix # Lint + format
33
- npm run bp:bump # Version bump + git tag
33
+ npm test # Placeholder only; does not validate behavior
34
34
  ```
35
35
 
36
+ ## Validation
37
+
38
+ Follow [workspace TDD](../AGENTS.md): write a failing consumer/type fixture before changing a contract, implement until green, then refactor. Build this package and run affected API/SDK checks. The release-check script currently references a missing dependency-switch command; see the [release rules](../README.md#branches-and-releases).
39
+
36
40
  ## Account lifecycle
37
41
 
38
42
  `FidjApiResetPasswordRequest` and `FidjApiVerifyEmailRequest` describe the one-use password reset and explicit email confirmation payloads. Recovery operates on the shared account; consent and erasure remain scoped to each app.
@@ -47,8 +51,6 @@ Authenticated `PUT /me` password changes require `{currentPassword, password}`.
47
51
 
48
52
  Owner details include `deletionPending`. Owner user-list contracts now describe the actual limited profile/role objects and per-app consent summary, replacing the old string-only declarations. This is a coordinated development-contract correction.
49
53
 
50
- ## Identity and tenant beta
51
-
52
- `FidjApiOidcConfiguration`, `FidjApiOrganization`, `FidjApiOrganizationAccess`, `FidjOrganizationMember`, `FidjOrganizationGroup` and `FidjApiExternalProvider` describe the coordinated identity expansion. Organization members identify app contracts; roles and suspension are tenant-scoped. External capability flags distinguish linking/revoking a Fidj grant from provider-account deletion, which is unsupported.
54
+ ## Experimental types
53
55
 
54
- App-session details may include authoritative `subject`, `username` and `appId` for an OIDC access token. Shared-account deletion now requires the principal session and `{confirm: 'delete-account'}`. Ordinary app sessions cannot change the global profile or enumerate other memberships.
56
+ OIDC, organization and external-provider interfaces are development contracts, not evidence of implemented API routes. The workspace API has no OIDC provider or organization tenancy. Verify server behavior before using these types in an integration.
package/bpInfo.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.bpInfo = void 0;
4
- exports.bpInfo = { version: 'v3.6.24' };
4
+ exports.bpInfo = { version: 'v3.7.0' };
5
5
  //# sourceMappingURL=bpInfo.js.map
package/bpInfo.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bpInfo.js","sourceRoot":"","sources":["../src/bpInfo.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG,EAAC,OAAO,EAAE,SAAS,EAAC,CAAC"}
1
+ {"version":3,"file":"bpInfo.js","sourceRoot":"","sources":["../src/bpInfo.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG,EAAC,OAAO,EAAE,QAAQ,EAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ export interface FidjApiMeEmailChangeRequest {
2
+ email: string;
3
+ currentPassword: string;
4
+ }
5
+ export interface FidjApiMeEmailChangeResponse {
6
+ pendingEmail: string;
7
+ message: string;
8
+ }
9
+ export interface FidjApiMeSessionsResponse {
10
+ sessions: {
11
+ id: string;
12
+ app: string;
13
+ appId: string;
14
+ client_udid: string;
15
+ client_info: string;
16
+ createdAt: string;
17
+ endDate: string;
18
+ current: boolean;
19
+ }[];
20
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=FidjApiAppsOAuthStatusResponse.js.map
3
+ //# sourceMappingURL=FidjApiAccountSelfService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FidjApiAccountSelfService.js","sourceRoot":"","sources":["../../src/fidj-api/FidjApiAccountSelfService.ts"],"names":[],"mappings":""}
@@ -3,5 +3,10 @@ export interface FidjApiAppsPublicResponse {
3
3
  id: string;
4
4
  title: string;
5
5
  description?: string;
6
+ home?: string;
7
+ agreement?: {
8
+ version: string;
9
+ text: string;
10
+ };
6
11
  };
7
12
  }
@@ -1,4 +1,7 @@
1
1
  export interface FidjApiAppsUsersResponse {
2
+ total?: number;
3
+ page?: number;
4
+ pageSize?: number;
2
5
  users: {
3
6
  _id: string;
4
7
  owner: {
@@ -25,3 +28,26 @@ export interface FidjApiAppsUsersResponse {
25
28
  } | null;
26
29
  }[];
27
30
  }
31
+ export interface FidjApiAppsUserConsentResponse {
32
+ user: {
33
+ id: string;
34
+ name?: string;
35
+ email: string;
36
+ emailVerified: boolean;
37
+ };
38
+ consent: {
39
+ terms: boolean;
40
+ termsVersion: string | null;
41
+ termsAcceptedAt: string | null;
42
+ analytics: boolean;
43
+ communications: boolean;
44
+ optionalData: boolean;
45
+ };
46
+ history: {
47
+ type: string;
48
+ granted: boolean;
49
+ changedAt: string;
50
+ source?: string;
51
+ cguVersion?: string;
52
+ }[];
53
+ }
@@ -0,0 +1,53 @@
1
+ export type FidjApiLawfulBasis = 'consent' | 'contract' | 'legal_obligation' | 'vital_interests' | 'public_task' | 'legitimate_interests';
2
+ export type FidjApiPurposeControl = 'none' | 'consent_switch' | 'objection' | 'revoke' | 'leave_app' | 'link_unlink' | 'export_only';
3
+ export interface FidjApiPurpose {
4
+ purposeId: string;
5
+ version: number;
6
+ status: 'published' | 'withheld';
7
+ controllership: 'controller' | 'processor' | 'joint_controller';
8
+ name: string;
9
+ description: string;
10
+ controller: {
11
+ name: string;
12
+ contact: string;
13
+ privacyContact?: string;
14
+ dpo?: string | null;
15
+ };
16
+ dataCategories: string[];
17
+ lawfulBasis: FidjApiLawfulBasis;
18
+ basisEvidence: {
19
+ necessityStatement?: string | null;
20
+ legalReference?: string | null;
21
+ balancingTestRef?: string | null;
22
+ article9Condition?: string | null;
23
+ };
24
+ required: boolean;
25
+ defaultState: 'off' | null;
26
+ control: FidjApiPurposeControl;
27
+ retention: {
28
+ trigger: string;
29
+ days: number;
30
+ label: string;
31
+ };
32
+ withdrawalEffect: string;
33
+ objectionRight: boolean;
34
+ recipients: string[];
35
+ transfers: {
36
+ outsideEEA: boolean;
37
+ safeguard: string | null;
38
+ };
39
+ automatedDecision: boolean;
40
+ implementation: {
41
+ implemented: boolean;
42
+ verified?: boolean;
43
+ enforced: boolean;
44
+ code?: string;
45
+ gap?: string;
46
+ };
47
+ publishedAt?: string;
48
+ }
49
+ export interface FidjApiPurposesResponse {
50
+ schemaVersion: string;
51
+ purposes: FidjApiPurpose[];
52
+ }
53
+ export type FidjApiPurposeWriteRequest = FidjApiPurpose;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=FidjApiPurposes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FidjApiPurposes.js","sourceRoot":"","sources":["../../src/fidj-api/FidjApiPurposes.ts"],"names":[],"mappings":""}
@@ -1,4 +1,6 @@
1
1
  export interface FidjApiTokensCreateRequest {
2
+ termsAccepted?: boolean;
3
+ termsVersion?: string;
2
4
  grant_type: string;
3
5
  client_udid: string;
4
6
  client_info: string;
@@ -8,6 +8,7 @@ export interface FidjApiUsersMeDetailsResponse {
8
8
  username: string;
9
9
  name: string;
10
10
  emailVerified?: boolean;
11
+ pendingEmail?: string | null;
11
12
  appsOwned: string[];
12
13
  appsSubscribed: string[];
13
14
  };
@@ -3,5 +3,6 @@ export interface FidjApiUsersMeResponse {
3
3
  id: string;
4
4
  username: string;
5
5
  verified?: boolean;
6
+ pendingEmail?: string | null;
6
7
  };
7
8
  }
@@ -17,7 +17,6 @@ export * from './FidjApiAppsPublicResponse';
17
17
  export * from './FidjApiAppsDetailsResponse';
18
18
  export * from './FidjApiAppsUpdateRequest';
19
19
  export * from './FidjApiAppsUsersResponse';
20
- export * from './FidjApiAppsOAuthStatusResponse';
21
20
  export * from './FidjApiAppsMeDetailsResponse';
22
21
  export * from './FidjApiContractsListResponse';
23
22
  export * from './FidjApiContractsCreateRequest';
@@ -27,4 +26,6 @@ export * from './FidjApiTokensCreateResponse';
27
26
  export * from './FidjApiPrivacyResponse';
28
27
  export * from './FidjApiAccountRecovery';
29
28
  export * from './FidjApiGroups';
29
+ export * from './FidjApiPurposes';
30
30
  export * from "./identity";
31
+ export * from './FidjApiAccountSelfService';
package/fidj-api/index.js CHANGED
@@ -38,7 +38,6 @@ __exportStar(require("./FidjApiAppsPublicResponse"), exports);
38
38
  __exportStar(require("./FidjApiAppsDetailsResponse"), exports);
39
39
  __exportStar(require("./FidjApiAppsUpdateRequest"), exports);
40
40
  __exportStar(require("./FidjApiAppsUsersResponse"), exports);
41
- __exportStar(require("./FidjApiAppsOAuthStatusResponse"), exports);
42
41
  __exportStar(require("./FidjApiAppsMeDetailsResponse"), exports);
43
42
  // Contracts
44
43
  __exportStar(require("./FidjApiContractsListResponse"), exports);
@@ -50,5 +49,7 @@ __exportStar(require("./FidjApiTokensCreateResponse"), exports);
50
49
  __exportStar(require("./FidjApiPrivacyResponse"), exports);
51
50
  __exportStar(require("./FidjApiAccountRecovery"), exports);
52
51
  __exportStar(require("./FidjApiGroups"), exports);
52
+ __exportStar(require("./FidjApiPurposes"), exports);
53
53
  __exportStar(require("./identity"), exports);
54
+ __exportStar(require("./FidjApiAccountSelfService"), exports);
54
55
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fidj-api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,SAAS;AACT,0DAAwC;AACxC,yDAAuC;AAEvC,OAAO;AACP,6DAA2C;AAC3C,8DAA4C;AAE5C,QAAQ;AACR,8DAA4C;AAC5C,+DAA6C;AAC7C,2DAAyC;AACzC,kEAAgD;AAChD,gEAA8C;AAC9C,8DAA4C;AAE5C,kBAAkB;AAClB,4DAA0C;AAC1C,iEAA+C;AAC/C,mEAAiD;AAEjD,OAAO;AACP,6DAA2C;AAC3C,8DAA4C;AAC5C,8DAA4C;AAC5C,+DAA6C;AAC7C,6DAA2C;AAC3C,6DAA2C;AAC3C,mEAAiD;AACjD,iEAA+C;AAE/C,YAAY;AACZ,iEAA+C;AAC/C,kEAAgD;AAChD,kEAAgD;AAEhD,SAAS;AACT,+DAA6C;AAC7C,gEAA8C;AAE9C,2DAAyC;AAEzC,2DAAyC;AAEzC,kDAAgC;AAEhC,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fidj-api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,SAAS;AACT,0DAAwC;AACxC,yDAAuC;AAEvC,OAAO;AACP,6DAA2C;AAC3C,8DAA4C;AAE5C,QAAQ;AACR,8DAA4C;AAC5C,+DAA6C;AAC7C,2DAAyC;AACzC,kEAAgD;AAChD,gEAA8C;AAC9C,8DAA4C;AAE5C,kBAAkB;AAClB,4DAA0C;AAC1C,iEAA+C;AAC/C,mEAAiD;AAEjD,OAAO;AACP,6DAA2C;AAC3C,8DAA4C;AAC5C,8DAA4C;AAC5C,+DAA6C;AAC7C,6DAA2C;AAC3C,6DAA2C;AAC3C,iEAA+C;AAE/C,YAAY;AACZ,iEAA+C;AAC/C,kEAAgD;AAChD,kEAAgD;AAEhD,SAAS;AACT,+DAA6C;AAC7C,gEAA8C;AAE9C,2DAAyC;AAEzC,2DAAyC;AAEzC,kDAAgC;AAChC,oDAAkC;AAElC,6CAA2B;AAC3B,8DAA4C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ofidj/contracts",
3
- "version": "3.6.24",
3
+ "version": "3.7.1",
4
4
  "author": "contact@fidj.ovh",
5
5
  "description": "TypeScript API contracts for Fidj services - request/response interfaces for REST endpoints",
6
6
  "keywords": [
@@ -1,5 +0,0 @@
1
- export interface FidjApiAppsOAuthStatusResponse {
2
- valid: boolean;
3
- client_id?: string;
4
- redirect_uri?: string;
5
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"FidjApiAppsOAuthStatusResponse.js","sourceRoot":"","sources":["../../src/fidj-api/FidjApiAppsOAuthStatusResponse.ts"],"names":[],"mappings":""}