@feelflow/ffid-sdk 7.0.0 → 7.1.0

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.
@@ -1304,6 +1304,151 @@ interface FFIDLeaveOrganizationResponse {
1304
1304
  message: string;
1305
1305
  }
1306
1306
 
1307
+ /**
1308
+ * Types for the organization profile + public logo-wall APIs (#5485 / #5547).
1309
+ *
1310
+ * Mirrors:
1311
+ * - `GET/PUT /api/v1/organizations/ext/profile`
1312
+ * - `POST /api/v1/organizations/ext/profile/logo`
1313
+ * - `GET /api/v1/organizations/logo-wall`
1314
+ *
1315
+ * Industry / company-size / logo MIME+size values are copied from the
1316
+ * server SSOT (`src/lib/organizations/profile/constants.ts`) so consumers
1317
+ * can build forms without importing the platform package. Machine-checked by
1318
+ * `scripts/verify-sdk-constants-sync.ts`. Pixel dimensions (64–4096) are
1319
+ * **server-only** and surface as `INVALID_IMAGE`. Request fields use the
1320
+ * unions; response `industry` / `companySize` stay `string | null` so a
1321
+ * server-side code added before the next SDK release still type-checks.
1322
+ */
1323
+ /**
1324
+ * Industry codes for the listing profile (select options).
1325
+ * Append-only: existing published profiles keep referencing these values.
1326
+ */
1327
+ declare const FFID_INDUSTRY_CODES: readonly ["agriculture", "construction", "manufacturing", "it-software", "telecom", "media", "retail", "wholesale", "finance-insurance", "real-estate", "transport-logistics", "hospitality-food", "healthcare", "education", "professional-services", "marketing-advertising", "energy-utilities", "public-sector", "nonprofit", "other"];
1328
+ /** Industry code accepted by `upsertOrganizationProfile`. */
1329
+ type FFIDIndustryCode = (typeof FFID_INDUSTRY_CODES)[number];
1330
+ /** Company-size codes (employee-count ranges). */
1331
+ declare const FFID_COMPANY_SIZE_CODES: readonly ["1-10", "11-50", "51-200", "201-500", "501-1000", "1001+"];
1332
+ /** Company-size code accepted by `upsertOrganizationProfile`. */
1333
+ type FFIDCompanySizeCode = (typeof FFID_COMPANY_SIZE_CODES)[number];
1334
+ /** Max logo file size in MB (shown in client-side error messages). */
1335
+ declare const FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_MB = 2;
1336
+ /** Max logo file size in bytes (matches the storage bucket limit). */
1337
+ declare const FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_BYTES: number;
1338
+ /**
1339
+ * Allowed logo MIME types. SVG is excluded (magic-byte / dimension checks
1340
+ * cannot run, and it can carry script). Empty `file.type` is allowed through
1341
+ * so the server can sniff magic bytes.
1342
+ */
1343
+ declare const FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES: readonly ["image/png", "image/jpeg", "image/webp"];
1344
+ /** Allowed logo MIME type. */
1345
+ type FFIDAllowedLogoMimeType = (typeof FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES)[number];
1346
+ /**
1347
+ * Domain error codes from the profile GET/PUT and logo POST routes
1348
+ * (`CONSENTED_BY_NOT_MEMBER`, `MISSING_FILE`, …). Auth / `DATABASE_ERROR` /
1349
+ * `INTERNAL_ERROR` still pass through as `FFIDError.code: string`.
1350
+ * Logo-wall failures are `INTERNAL_ERROR` only (not listed here).
1351
+ * Branch on these constants instead of string literals.
1352
+ */
1353
+ declare const FFID_ORGANIZATION_PROFILE_ERROR_CODES: {
1354
+ readonly VALIDATION_ERROR: "VALIDATION_ERROR";
1355
+ readonly ORGANIZATION_NOT_FOUND: "ORGANIZATION_NOT_FOUND";
1356
+ readonly CONSENTED_BY_NOT_MEMBER: "CONSENTED_BY_NOT_MEMBER";
1357
+ readonly MISSING_FILE: "MISSING_FILE";
1358
+ readonly INVALID_FILE_TYPE: "INVALID_FILE_TYPE";
1359
+ readonly FILE_TOO_LARGE: "FILE_TOO_LARGE";
1360
+ readonly INVALID_IMAGE: "INVALID_IMAGE";
1361
+ readonly LOGO_UPLOAD_FAILED: "LOGO_UPLOAD_FAILED";
1362
+ };
1363
+ /** Union of organization-profile server error code literals. */
1364
+ type FFIDOrganizationProfileErrorCode = (typeof FFID_ORGANIZATION_PROFILE_ERROR_CODES)[keyof typeof FFID_ORGANIZATION_PROFILE_ERROR_CODES];
1365
+ /** Organization listing profile (camelCase, matches the ext/profile wire). */
1366
+ interface FFIDOrganizationProfile {
1367
+ organizationId: string;
1368
+ displayName: string | null;
1369
+ industry: string | null;
1370
+ companySize: string | null;
1371
+ websiteUrl: string | null;
1372
+ logoPath: string | null;
1373
+ /** Public URL derived from `logoPath` (`null` when no logo is stored). */
1374
+ logoUrl: string | null;
1375
+ listingConsentedAt: string | null;
1376
+ listingConsentVersion: string | null;
1377
+ listingConsentedBy: string | null;
1378
+ listingRevokedAt: string | null;
1379
+ /** True when consent is recorded and not revoked. */
1380
+ listingActive: boolean;
1381
+ createdAt: string;
1382
+ updatedAt: string;
1383
+ }
1384
+ /**
1385
+ * Response from `getOrganizationProfile` / `upsertOrganizationProfile`.
1386
+ * GET: `profile` is `null` (HTTP 200) when the org exists but has no row yet.
1387
+ * PUT upsert always returns a profile object (empty body still inserts a row).
1388
+ */
1389
+ interface FFIDOrganizationProfileResponse {
1390
+ organizationId: string;
1391
+ profile: FFIDOrganizationProfile | null;
1392
+ }
1393
+ /**
1394
+ * Listing-consent mutation.
1395
+ *
1396
+ * - `{ consented: true, consentVersion, consentedByUserId }` records consent
1397
+ * (`consentedByUserId` must be an active member of the target org; otherwise
1398
+ * the server returns {@link FFID_ORGANIZATION_PROFILE_ERROR_CODES.CONSENTED_BY_NOT_MEMBER}).
1399
+ * - `{ consented: false }` revokes (no-op if never consented).
1400
+ * - Omit the field to leave consent unchanged.
1401
+ */
1402
+ type FFIDListingConsentInput = {
1403
+ consented: true;
1404
+ consentVersion: string;
1405
+ consentedByUserId: string;
1406
+ } | {
1407
+ consented: false;
1408
+ consentVersion?: never;
1409
+ consentedByUserId?: never;
1410
+ };
1411
+ /**
1412
+ * PUT body fields (all optional partial update).
1413
+ * `null` clears `displayName` / `industry` / `companySize` / `websiteUrl`.
1414
+ * Consent is not nullable — omit to leave unchanged, or pass
1415
+ * `{ consented: false }` to revoke.
1416
+ */
1417
+ interface FFIDUpsertOrganizationProfileRequest {
1418
+ displayName?: string | null;
1419
+ industry?: FFIDIndustryCode | null;
1420
+ companySize?: FFIDCompanySizeCode | null;
1421
+ websiteUrl?: string | null;
1422
+ listingConsent?: FFIDListingConsentInput;
1423
+ }
1424
+ /** Params for `upsertOrganizationProfile` (params-object form). */
1425
+ interface FFIDUpsertOrganizationProfileParams extends FFIDUpsertOrganizationProfileRequest {
1426
+ organizationId: string;
1427
+ }
1428
+ /** Params for `uploadOrganizationLogo` (params-object form). */
1429
+ interface FFIDUploadOrganizationLogoParams {
1430
+ organizationId: string;
1431
+ /** Image blob (`File` in browsers; `Blob` is enough in Node 18+). */
1432
+ file: Blob;
1433
+ }
1434
+ /** Response from `uploadOrganizationLogo`. */
1435
+ interface FFIDOrganizationLogoUploadResponse {
1436
+ organizationId: string;
1437
+ logoPath: string;
1438
+ logoUrl: string;
1439
+ }
1440
+ /** One public logo-wall entry (public listing fields only; omits consent metadata). */
1441
+ interface FFIDLogoWallEntry {
1442
+ displayName: string | null;
1443
+ logoUrl: string;
1444
+ websiteUrl: string | null;
1445
+ }
1446
+ /** Response from `getPublicLogoWall`. */
1447
+ interface FFIDLogoWallResponse {
1448
+ entries: FFIDLogoWallEntry[];
1449
+ count: number;
1450
+ }
1451
+
1307
1452
  /**
1308
1453
  * User profile types (ext API: `GET` / `PUT /api/v1/users/ext/me`).
1309
1454
  *
@@ -2237,6 +2382,21 @@ declare function createFFIDClient(config: FFIDConfig): {
2237
2382
  organizationId: string;
2238
2383
  userId: string;
2239
2384
  }) => Promise<FFIDApiResponse<FFIDRemoveMemberResponse>>;
2385
+ getOrganizationProfile: {
2386
+ (organizationId: string): Promise<FFIDApiResponse<FFIDOrganizationProfileResponse>>;
2387
+ (params: {
2388
+ organizationId: string;
2389
+ }): Promise<FFIDApiResponse<FFIDOrganizationProfileResponse>>;
2390
+ };
2391
+ upsertOrganizationProfile: {
2392
+ (organizationId: string, payload?: FFIDUpsertOrganizationProfileRequest): Promise<FFIDApiResponse<FFIDOrganizationProfileResponse>>;
2393
+ (params: FFIDUpsertOrganizationProfileParams): Promise<FFIDApiResponse<FFIDOrganizationProfileResponse>>;
2394
+ };
2395
+ uploadOrganizationLogo: {
2396
+ (organizationId: string, file: Blob): Promise<FFIDApiResponse<FFIDOrganizationLogoUploadResponse>>;
2397
+ (params: FFIDUploadOrganizationLogoParams): Promise<FFIDApiResponse<FFIDOrganizationLogoUploadResponse>>;
2398
+ };
2399
+ getPublicLogoWall: () => Promise<FFIDApiResponse<FFIDLogoWallResponse>>;
2240
2400
  provisionUser: (params: FFIDProvisionUserParams) => Promise<FFIDApiResponse<FFIDProvisionUserResponse>>;
2241
2401
  sendProvisionWelcomeEmail: (params: FFIDProvisionWelcomeEmailParams) => Promise<FFIDApiResponse<FFIDProvisionWelcomeEmailResponse>>;
2242
2402
  provisionOrganization: (params: FFIDProvisionOrganizationParams) => Promise<FFIDApiResponse<FFIDProvisionOrganizationResponse>>;
@@ -2329,4 +2489,4 @@ declare function createFFIDClient(config: FFIDConfig): {
2329
2489
  /** Type of the FFID client */
2330
2490
  type FFIDClient = ReturnType<typeof createFFIDClient>;
2331
2491
 
2332
- export { FFID_CATALOG_ENVIRONMENTS as $, type FFIDPasswordResetVerifyResponse as A, type FFIDProfileCallOptions as B, type FFIDProvisionMemberPlan as C, type FFIDProvisionMemberPlanStatus as D, type FFIDProvisionMemberResult as E, type FFIDLogger as F, type FFIDProvisionMemberStatus as G, type FFIDProvisionOrganizationDryRun as H, type FFIDProvisionOrganizationMemberInput as I, type FFIDProvisionOrganizationOutcome as J, type FFIDProvisionOrganizationParams as K, type FFIDProvisionOrganizationResponse as L, type FFIDProvisionUserDryRun as M, type FFIDProvisionUserOutcome as N, type FFIDProvisionUserParams as O, type FFIDProvisionUserProfileInput as P, type FFIDProvisionUserResponse as Q, type FFIDProvisionedOrganization as R, type FFIDProvisionedUser as S, type FFIDPublishedPlan as T, type FFIDRemoveMemberResponse as U, type FFIDResetSessionResponse as V, type FFIDSubscription as W, type FFIDUpdateMemberRoleResponse as X, type FFIDUpdateUserProfileRequest as Y, type FFIDUser as Z, type FFIDUserProfile as _, type FFIDError as a, FFID_CATALOG_PUBLICATION_STATUSES as a0, type TokenData as a1, type TokenStore as a2, createFFIDClient as a3, createTokenStore as a4, type FFIDCacheAdapter as b, type FFIDVerifyAccessTokenOptions as c, type FFIDApiResponse as d, type FFIDOAuthUserInfo as e, type FFIDCatalogEnvironment as f, type FFIDBillingInterval as g, type FFIDTaxBehavior as h, type FFIDPublishedCatalog as i, type FFIDAddMemberParams as j, type FFIDAddMemberRequest as k, type FFIDAddMemberResponse as l, type FFIDAssignableMemberRole as m, type FFIDCacheConfig as n, type FFIDCatalogPublication as o, type FFIDCatalogPublicationStatus as p, type FFIDClient as q, type FFIDConfig as r, type FFIDListMembersResponse as s, type FFIDMemberRole as t, type FFIDOrganization as u, type FFIDOrganizationMember as v, type FFIDOtpSendResponse as w, type FFIDOtpVerifyResponse as x, type FFIDPasswordResetConfirmResponse as y, type FFIDPasswordResetResponse as z };
2492
+ export { type FFIDProvisionedOrganization as $, type FFIDOrganization as A, type FFIDOrganizationLogoUploadResponse as B, type FFIDOrganizationMember as C, type FFIDOrganizationProfile as D, type FFIDOrganizationProfileErrorCode as E, type FFIDLogger as F, type FFIDOrganizationProfileResponse as G, type FFIDOtpSendResponse as H, type FFIDOtpVerifyResponse as I, type FFIDPasswordResetConfirmResponse as J, type FFIDPasswordResetResponse as K, type FFIDPasswordResetVerifyResponse as L, type FFIDProfileCallOptions as M, type FFIDProvisionMemberPlan as N, type FFIDProvisionMemberPlanStatus as O, type FFIDProvisionMemberResult as P, type FFIDProvisionMemberStatus as Q, type FFIDProvisionOrganizationDryRun as R, type FFIDProvisionOrganizationMemberInput as S, type FFIDProvisionOrganizationOutcome as T, type FFIDProvisionOrganizationParams as U, type FFIDProvisionOrganizationResponse as V, type FFIDProvisionUserDryRun as W, type FFIDProvisionUserOutcome as X, type FFIDProvisionUserParams as Y, type FFIDProvisionUserProfileInput as Z, type FFIDProvisionUserResponse as _, type FFIDError as a, type FFIDProvisionedUser as a0, type FFIDPublishedPlan as a1, type FFIDRemoveMemberResponse as a2, type FFIDResetSessionResponse as a3, type FFIDSubscription as a4, type FFIDUpdateMemberRoleResponse as a5, type FFIDUpdateUserProfileRequest as a6, type FFIDUploadOrganizationLogoParams as a7, type FFIDUpsertOrganizationProfileParams as a8, type FFIDUpsertOrganizationProfileRequest as a9, type FFIDUser as aa, type FFIDUserProfile as ab, FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES as ac, FFID_CATALOG_ENVIRONMENTS as ad, FFID_CATALOG_PUBLICATION_STATUSES as ae, FFID_COMPANY_SIZE_CODES as af, FFID_INDUSTRY_CODES as ag, FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_BYTES as ah, FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_MB as ai, FFID_ORGANIZATION_PROFILE_ERROR_CODES as aj, type TokenData as ak, type TokenStore as al, createFFIDClient as am, createTokenStore as an, type FFIDCacheAdapter as b, type FFIDVerifyAccessTokenOptions as c, type FFIDApiResponse as d, type FFIDOAuthUserInfo as e, type FFIDCatalogEnvironment as f, type FFIDBillingInterval as g, type FFIDTaxBehavior as h, type FFIDPublishedCatalog as i, type FFIDAddMemberParams as j, type FFIDAddMemberRequest as k, type FFIDAddMemberResponse as l, type FFIDAllowedLogoMimeType as m, type FFIDAssignableMemberRole as n, type FFIDCacheConfig as o, type FFIDCatalogPublication as p, type FFIDCatalogPublicationStatus as q, type FFIDClient as r, type FFIDCompanySizeCode as s, type FFIDConfig as t, type FFIDIndustryCode as u, type FFIDListMembersResponse as v, type FFIDListingConsentInput as w, type FFIDLogoWallEntry as x, type FFIDLogoWallResponse as y, type FFIDMemberRole as z };
@@ -1304,6 +1304,151 @@ interface FFIDLeaveOrganizationResponse {
1304
1304
  message: string;
1305
1305
  }
1306
1306
 
1307
+ /**
1308
+ * Types for the organization profile + public logo-wall APIs (#5485 / #5547).
1309
+ *
1310
+ * Mirrors:
1311
+ * - `GET/PUT /api/v1/organizations/ext/profile`
1312
+ * - `POST /api/v1/organizations/ext/profile/logo`
1313
+ * - `GET /api/v1/organizations/logo-wall`
1314
+ *
1315
+ * Industry / company-size / logo MIME+size values are copied from the
1316
+ * server SSOT (`src/lib/organizations/profile/constants.ts`) so consumers
1317
+ * can build forms without importing the platform package. Machine-checked by
1318
+ * `scripts/verify-sdk-constants-sync.ts`. Pixel dimensions (64–4096) are
1319
+ * **server-only** and surface as `INVALID_IMAGE`. Request fields use the
1320
+ * unions; response `industry` / `companySize` stay `string | null` so a
1321
+ * server-side code added before the next SDK release still type-checks.
1322
+ */
1323
+ /**
1324
+ * Industry codes for the listing profile (select options).
1325
+ * Append-only: existing published profiles keep referencing these values.
1326
+ */
1327
+ declare const FFID_INDUSTRY_CODES: readonly ["agriculture", "construction", "manufacturing", "it-software", "telecom", "media", "retail", "wholesale", "finance-insurance", "real-estate", "transport-logistics", "hospitality-food", "healthcare", "education", "professional-services", "marketing-advertising", "energy-utilities", "public-sector", "nonprofit", "other"];
1328
+ /** Industry code accepted by `upsertOrganizationProfile`. */
1329
+ type FFIDIndustryCode = (typeof FFID_INDUSTRY_CODES)[number];
1330
+ /** Company-size codes (employee-count ranges). */
1331
+ declare const FFID_COMPANY_SIZE_CODES: readonly ["1-10", "11-50", "51-200", "201-500", "501-1000", "1001+"];
1332
+ /** Company-size code accepted by `upsertOrganizationProfile`. */
1333
+ type FFIDCompanySizeCode = (typeof FFID_COMPANY_SIZE_CODES)[number];
1334
+ /** Max logo file size in MB (shown in client-side error messages). */
1335
+ declare const FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_MB = 2;
1336
+ /** Max logo file size in bytes (matches the storage bucket limit). */
1337
+ declare const FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_BYTES: number;
1338
+ /**
1339
+ * Allowed logo MIME types. SVG is excluded (magic-byte / dimension checks
1340
+ * cannot run, and it can carry script). Empty `file.type` is allowed through
1341
+ * so the server can sniff magic bytes.
1342
+ */
1343
+ declare const FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES: readonly ["image/png", "image/jpeg", "image/webp"];
1344
+ /** Allowed logo MIME type. */
1345
+ type FFIDAllowedLogoMimeType = (typeof FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES)[number];
1346
+ /**
1347
+ * Domain error codes from the profile GET/PUT and logo POST routes
1348
+ * (`CONSENTED_BY_NOT_MEMBER`, `MISSING_FILE`, …). Auth / `DATABASE_ERROR` /
1349
+ * `INTERNAL_ERROR` still pass through as `FFIDError.code: string`.
1350
+ * Logo-wall failures are `INTERNAL_ERROR` only (not listed here).
1351
+ * Branch on these constants instead of string literals.
1352
+ */
1353
+ declare const FFID_ORGANIZATION_PROFILE_ERROR_CODES: {
1354
+ readonly VALIDATION_ERROR: "VALIDATION_ERROR";
1355
+ readonly ORGANIZATION_NOT_FOUND: "ORGANIZATION_NOT_FOUND";
1356
+ readonly CONSENTED_BY_NOT_MEMBER: "CONSENTED_BY_NOT_MEMBER";
1357
+ readonly MISSING_FILE: "MISSING_FILE";
1358
+ readonly INVALID_FILE_TYPE: "INVALID_FILE_TYPE";
1359
+ readonly FILE_TOO_LARGE: "FILE_TOO_LARGE";
1360
+ readonly INVALID_IMAGE: "INVALID_IMAGE";
1361
+ readonly LOGO_UPLOAD_FAILED: "LOGO_UPLOAD_FAILED";
1362
+ };
1363
+ /** Union of organization-profile server error code literals. */
1364
+ type FFIDOrganizationProfileErrorCode = (typeof FFID_ORGANIZATION_PROFILE_ERROR_CODES)[keyof typeof FFID_ORGANIZATION_PROFILE_ERROR_CODES];
1365
+ /** Organization listing profile (camelCase, matches the ext/profile wire). */
1366
+ interface FFIDOrganizationProfile {
1367
+ organizationId: string;
1368
+ displayName: string | null;
1369
+ industry: string | null;
1370
+ companySize: string | null;
1371
+ websiteUrl: string | null;
1372
+ logoPath: string | null;
1373
+ /** Public URL derived from `logoPath` (`null` when no logo is stored). */
1374
+ logoUrl: string | null;
1375
+ listingConsentedAt: string | null;
1376
+ listingConsentVersion: string | null;
1377
+ listingConsentedBy: string | null;
1378
+ listingRevokedAt: string | null;
1379
+ /** True when consent is recorded and not revoked. */
1380
+ listingActive: boolean;
1381
+ createdAt: string;
1382
+ updatedAt: string;
1383
+ }
1384
+ /**
1385
+ * Response from `getOrganizationProfile` / `upsertOrganizationProfile`.
1386
+ * GET: `profile` is `null` (HTTP 200) when the org exists but has no row yet.
1387
+ * PUT upsert always returns a profile object (empty body still inserts a row).
1388
+ */
1389
+ interface FFIDOrganizationProfileResponse {
1390
+ organizationId: string;
1391
+ profile: FFIDOrganizationProfile | null;
1392
+ }
1393
+ /**
1394
+ * Listing-consent mutation.
1395
+ *
1396
+ * - `{ consented: true, consentVersion, consentedByUserId }` records consent
1397
+ * (`consentedByUserId` must be an active member of the target org; otherwise
1398
+ * the server returns {@link FFID_ORGANIZATION_PROFILE_ERROR_CODES.CONSENTED_BY_NOT_MEMBER}).
1399
+ * - `{ consented: false }` revokes (no-op if never consented).
1400
+ * - Omit the field to leave consent unchanged.
1401
+ */
1402
+ type FFIDListingConsentInput = {
1403
+ consented: true;
1404
+ consentVersion: string;
1405
+ consentedByUserId: string;
1406
+ } | {
1407
+ consented: false;
1408
+ consentVersion?: never;
1409
+ consentedByUserId?: never;
1410
+ };
1411
+ /**
1412
+ * PUT body fields (all optional partial update).
1413
+ * `null` clears `displayName` / `industry` / `companySize` / `websiteUrl`.
1414
+ * Consent is not nullable — omit to leave unchanged, or pass
1415
+ * `{ consented: false }` to revoke.
1416
+ */
1417
+ interface FFIDUpsertOrganizationProfileRequest {
1418
+ displayName?: string | null;
1419
+ industry?: FFIDIndustryCode | null;
1420
+ companySize?: FFIDCompanySizeCode | null;
1421
+ websiteUrl?: string | null;
1422
+ listingConsent?: FFIDListingConsentInput;
1423
+ }
1424
+ /** Params for `upsertOrganizationProfile` (params-object form). */
1425
+ interface FFIDUpsertOrganizationProfileParams extends FFIDUpsertOrganizationProfileRequest {
1426
+ organizationId: string;
1427
+ }
1428
+ /** Params for `uploadOrganizationLogo` (params-object form). */
1429
+ interface FFIDUploadOrganizationLogoParams {
1430
+ organizationId: string;
1431
+ /** Image blob (`File` in browsers; `Blob` is enough in Node 18+). */
1432
+ file: Blob;
1433
+ }
1434
+ /** Response from `uploadOrganizationLogo`. */
1435
+ interface FFIDOrganizationLogoUploadResponse {
1436
+ organizationId: string;
1437
+ logoPath: string;
1438
+ logoUrl: string;
1439
+ }
1440
+ /** One public logo-wall entry (public listing fields only; omits consent metadata). */
1441
+ interface FFIDLogoWallEntry {
1442
+ displayName: string | null;
1443
+ logoUrl: string;
1444
+ websiteUrl: string | null;
1445
+ }
1446
+ /** Response from `getPublicLogoWall`. */
1447
+ interface FFIDLogoWallResponse {
1448
+ entries: FFIDLogoWallEntry[];
1449
+ count: number;
1450
+ }
1451
+
1307
1452
  /**
1308
1453
  * User profile types (ext API: `GET` / `PUT /api/v1/users/ext/me`).
1309
1454
  *
@@ -2237,6 +2382,21 @@ declare function createFFIDClient(config: FFIDConfig): {
2237
2382
  organizationId: string;
2238
2383
  userId: string;
2239
2384
  }) => Promise<FFIDApiResponse<FFIDRemoveMemberResponse>>;
2385
+ getOrganizationProfile: {
2386
+ (organizationId: string): Promise<FFIDApiResponse<FFIDOrganizationProfileResponse>>;
2387
+ (params: {
2388
+ organizationId: string;
2389
+ }): Promise<FFIDApiResponse<FFIDOrganizationProfileResponse>>;
2390
+ };
2391
+ upsertOrganizationProfile: {
2392
+ (organizationId: string, payload?: FFIDUpsertOrganizationProfileRequest): Promise<FFIDApiResponse<FFIDOrganizationProfileResponse>>;
2393
+ (params: FFIDUpsertOrganizationProfileParams): Promise<FFIDApiResponse<FFIDOrganizationProfileResponse>>;
2394
+ };
2395
+ uploadOrganizationLogo: {
2396
+ (organizationId: string, file: Blob): Promise<FFIDApiResponse<FFIDOrganizationLogoUploadResponse>>;
2397
+ (params: FFIDUploadOrganizationLogoParams): Promise<FFIDApiResponse<FFIDOrganizationLogoUploadResponse>>;
2398
+ };
2399
+ getPublicLogoWall: () => Promise<FFIDApiResponse<FFIDLogoWallResponse>>;
2240
2400
  provisionUser: (params: FFIDProvisionUserParams) => Promise<FFIDApiResponse<FFIDProvisionUserResponse>>;
2241
2401
  sendProvisionWelcomeEmail: (params: FFIDProvisionWelcomeEmailParams) => Promise<FFIDApiResponse<FFIDProvisionWelcomeEmailResponse>>;
2242
2402
  provisionOrganization: (params: FFIDProvisionOrganizationParams) => Promise<FFIDApiResponse<FFIDProvisionOrganizationResponse>>;
@@ -2329,4 +2489,4 @@ declare function createFFIDClient(config: FFIDConfig): {
2329
2489
  /** Type of the FFID client */
2330
2490
  type FFIDClient = ReturnType<typeof createFFIDClient>;
2331
2491
 
2332
- export { FFID_CATALOG_ENVIRONMENTS as $, type FFIDPasswordResetVerifyResponse as A, type FFIDProfileCallOptions as B, type FFIDProvisionMemberPlan as C, type FFIDProvisionMemberPlanStatus as D, type FFIDProvisionMemberResult as E, type FFIDLogger as F, type FFIDProvisionMemberStatus as G, type FFIDProvisionOrganizationDryRun as H, type FFIDProvisionOrganizationMemberInput as I, type FFIDProvisionOrganizationOutcome as J, type FFIDProvisionOrganizationParams as K, type FFIDProvisionOrganizationResponse as L, type FFIDProvisionUserDryRun as M, type FFIDProvisionUserOutcome as N, type FFIDProvisionUserParams as O, type FFIDProvisionUserProfileInput as P, type FFIDProvisionUserResponse as Q, type FFIDProvisionedOrganization as R, type FFIDProvisionedUser as S, type FFIDPublishedPlan as T, type FFIDRemoveMemberResponse as U, type FFIDResetSessionResponse as V, type FFIDSubscription as W, type FFIDUpdateMemberRoleResponse as X, type FFIDUpdateUserProfileRequest as Y, type FFIDUser as Z, type FFIDUserProfile as _, type FFIDError as a, FFID_CATALOG_PUBLICATION_STATUSES as a0, type TokenData as a1, type TokenStore as a2, createFFIDClient as a3, createTokenStore as a4, type FFIDCacheAdapter as b, type FFIDVerifyAccessTokenOptions as c, type FFIDApiResponse as d, type FFIDOAuthUserInfo as e, type FFIDCatalogEnvironment as f, type FFIDBillingInterval as g, type FFIDTaxBehavior as h, type FFIDPublishedCatalog as i, type FFIDAddMemberParams as j, type FFIDAddMemberRequest as k, type FFIDAddMemberResponse as l, type FFIDAssignableMemberRole as m, type FFIDCacheConfig as n, type FFIDCatalogPublication as o, type FFIDCatalogPublicationStatus as p, type FFIDClient as q, type FFIDConfig as r, type FFIDListMembersResponse as s, type FFIDMemberRole as t, type FFIDOrganization as u, type FFIDOrganizationMember as v, type FFIDOtpSendResponse as w, type FFIDOtpVerifyResponse as x, type FFIDPasswordResetConfirmResponse as y, type FFIDPasswordResetResponse as z };
2492
+ export { type FFIDProvisionedOrganization as $, type FFIDOrganization as A, type FFIDOrganizationLogoUploadResponse as B, type FFIDOrganizationMember as C, type FFIDOrganizationProfile as D, type FFIDOrganizationProfileErrorCode as E, type FFIDLogger as F, type FFIDOrganizationProfileResponse as G, type FFIDOtpSendResponse as H, type FFIDOtpVerifyResponse as I, type FFIDPasswordResetConfirmResponse as J, type FFIDPasswordResetResponse as K, type FFIDPasswordResetVerifyResponse as L, type FFIDProfileCallOptions as M, type FFIDProvisionMemberPlan as N, type FFIDProvisionMemberPlanStatus as O, type FFIDProvisionMemberResult as P, type FFIDProvisionMemberStatus as Q, type FFIDProvisionOrganizationDryRun as R, type FFIDProvisionOrganizationMemberInput as S, type FFIDProvisionOrganizationOutcome as T, type FFIDProvisionOrganizationParams as U, type FFIDProvisionOrganizationResponse as V, type FFIDProvisionUserDryRun as W, type FFIDProvisionUserOutcome as X, type FFIDProvisionUserParams as Y, type FFIDProvisionUserProfileInput as Z, type FFIDProvisionUserResponse as _, type FFIDError as a, type FFIDProvisionedUser as a0, type FFIDPublishedPlan as a1, type FFIDRemoveMemberResponse as a2, type FFIDResetSessionResponse as a3, type FFIDSubscription as a4, type FFIDUpdateMemberRoleResponse as a5, type FFIDUpdateUserProfileRequest as a6, type FFIDUploadOrganizationLogoParams as a7, type FFIDUpsertOrganizationProfileParams as a8, type FFIDUpsertOrganizationProfileRequest as a9, type FFIDUser as aa, type FFIDUserProfile as ab, FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES as ac, FFID_CATALOG_ENVIRONMENTS as ad, FFID_CATALOG_PUBLICATION_STATUSES as ae, FFID_COMPANY_SIZE_CODES as af, FFID_INDUSTRY_CODES as ag, FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_BYTES as ah, FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_MB as ai, FFID_ORGANIZATION_PROFILE_ERROR_CODES as aj, type TokenData as ak, type TokenStore as al, createFFIDClient as am, createTokenStore as an, type FFIDCacheAdapter as b, type FFIDVerifyAccessTokenOptions as c, type FFIDApiResponse as d, type FFIDOAuthUserInfo as e, type FFIDCatalogEnvironment as f, type FFIDBillingInterval as g, type FFIDTaxBehavior as h, type FFIDPublishedCatalog as i, type FFIDAddMemberParams as j, type FFIDAddMemberRequest as k, type FFIDAddMemberResponse as l, type FFIDAllowedLogoMimeType as m, type FFIDAssignableMemberRole as n, type FFIDCacheConfig as o, type FFIDCatalogPublication as p, type FFIDCatalogPublicationStatus as q, type FFIDClient as r, type FFIDCompanySizeCode as s, type FFIDConfig as t, type FFIDIndustryCode as u, type FFIDListMembersResponse as v, type FFIDListingConsentInput as w, type FFIDLogoWallEntry as x, type FFIDLogoWallResponse as y, type FFIDMemberRole as z };