{"version":3,"file":"scimInfo.mjs","sources":["../../../../../../../../web/src/adminPortal/scim/scimInfo.ts"],"sourcesContent":["import { SCIMConnectionWithBearerToken, SCIMConnectionWithNextBearerToken } from '@stytch/core/public';\n\nexport type KnownSCIMIdp =\n  | 'okta'\n  | 'microsoft-entra'\n  | 'cyberark'\n  | 'jumpcloud'\n  | 'onelogin'\n  | 'pingfederate'\n  | 'rippling'\n  | 'generic';\nexport type ConnectionWithBearerTokenKey = keyof Pick<\n  SCIMConnectionWithBearerToken,\n  'bearer_token' | 'base_url' | 'display_name'\n>;\n\nexport type ConnectionWithNextBearerTokenKey = keyof Pick<SCIMConnectionWithNextBearerToken, 'next_bearer_token'>;\n\nexport type Field<T> =\n  | {\n      label: string;\n      value: string;\n      isCopyable?: boolean;\n    }\n  | {\n      label: string;\n      scimConnectionKey: T;\n      isCopyable?: boolean;\n    };\n\nexport type SCIMIdpInfo = {\n  displayName: string;\n  copyToIdpLabel: string;\n  copyToIdpFields: Field<ConnectionWithBearerTokenKey>[];\n  confirmLabel?: string;\n  confirmFields?: Field<never>[];\n};\n\nconst DEFAULT_COPY_TO_IDP_LABEL = 'Copy the SCIM Connection Settings to your IdP.';\nconst DEFAULT_CONFIRM_LABEL = 'Confirm the SCIM username format matches in your IdP.';\n\nexport const DEFAULT_BASE_URL_LABEL = 'SCIM Base URL';\nexport const DEFAULT_HEADER_BEARER_TOKEN_LABEL = 'HTTP Header Bearer Token';\n\nexport const scimIdpMap = {\n  okta: {\n    displayName: 'Okta',\n    copyToIdpLabel: DEFAULT_COPY_TO_IDP_LABEL,\n    confirmLabel: DEFAULT_CONFIRM_LABEL,\n    copyToIdpFields: [\n      {\n        label: 'Authentication Mode',\n        value: 'HTTP Header',\n      },\n      {\n        label: 'SCIM Connector base URL',\n        scimConnectionKey: 'base_url',\n        isCopyable: true,\n      },\n      {\n        label: 'HTTP Header Authorization: Bearer',\n        scimConnectionKey: 'bearer_token',\n        isCopyable: true,\n      },\n    ],\n    confirmFields: [\n      {\n        label: 'Application username format',\n        value: 'Email',\n      },\n      {\n        label: 'Unique Identifier field for users',\n        value: 'userName',\n      },\n    ],\n  },\n  'microsoft-entra': {\n    displayName: 'Entra',\n    copyToIdpLabel: 'Copy the Admin Credentials to your IdP.',\n    copyToIdpFields: [\n      {\n        label: 'Tenant URL',\n        scimConnectionKey: 'base_url',\n        isCopyable: true,\n      },\n      {\n        label: 'Secret Token',\n        scimConnectionKey: 'bearer_token',\n        isCopyable: true,\n      },\n    ],\n  },\n  cyberark: {\n    displayName: 'CyberArk',\n    copyToIdpLabel: 'Copy the Provisioning Details to your IdP.',\n    copyToIdpFields: [\n      {\n        label: 'SCIM Service URL',\n        scimConnectionKey: 'base_url',\n        isCopyable: true,\n      },\n      {\n        label: 'Bearer Token',\n        scimConnectionKey: 'bearer_token',\n        isCopyable: true,\n      },\n    ],\n  },\n  jumpcloud: {\n    displayName: 'JumpCloud',\n    copyToIdpLabel: 'Copy the Configuration Settings to your IdP.',\n    copyToIdpFields: [\n      {\n        label: 'Base URL',\n        scimConnectionKey: 'base_url',\n        isCopyable: true,\n      },\n      {\n        label: 'Token Key',\n        scimConnectionKey: 'bearer_token',\n        isCopyable: true,\n      },\n    ],\n  },\n  onelogin: {\n    displayName: 'OneLogin',\n    copyToIdpLabel: 'Copy the configuration to your IdP.',\n    copyToIdpFields: [\n      {\n        label: 'SCIM Username Format',\n        value: 'Email',\n      },\n      {\n        label: DEFAULT_BASE_URL_LABEL,\n        scimConnectionKey: 'base_url',\n        isCopyable: true,\n      },\n      {\n        label: 'SCIM Bearer Token',\n        scimConnectionKey: 'bearer_token',\n        isCopyable: true,\n      },\n    ],\n  },\n  pingfederate: {\n    displayName: 'Ping Federate',\n    copyToIdpLabel: 'Copy the Provisioning Target Information to your IdP.',\n    confirmLabel: DEFAULT_CONFIRM_LABEL,\n    copyToIdpFields: [\n      {\n        label: 'SCIM Version',\n        value: '2.0',\n      },\n      {\n        label: 'Authentication Method',\n        value: 'OAuth 2 Bearer Token',\n      },\n      {\n        label: 'SCIM URL',\n        scimConnectionKey: 'base_url',\n        isCopyable: true,\n      },\n      {\n        label: 'Access Token',\n        scimConnectionKey: 'bearer_token',\n        isCopyable: true,\n      },\n    ],\n    confirmFields: [\n      {\n        label: 'SCIM userName',\n        value: 'Email',\n      },\n    ],\n  },\n  rippling: {\n    displayName: 'Rippling',\n    copyToIdpLabel: 'Copy the configuration to your IdP.',\n    copyToIdpFields: [\n      {\n        label: 'SCIM Version',\n        value: '2.0',\n      },\n      {\n        label: DEFAULT_BASE_URL_LABEL,\n        scimConnectionKey: 'base_url',\n        isCopyable: true,\n      },\n      {\n        label: 'SCIM Authorization Method',\n        value: 'Bearer Token',\n      },\n      {\n        label: 'SCIM userName',\n        value: 'Email address',\n      },\n      {\n        label: 'Supported SCIM Attributes',\n        value: 'externalId, emails.primary, name.givenName, name.familyName',\n      },\n      {\n        label: 'Bearer Token',\n        scimConnectionKey: 'bearer_token',\n        isCopyable: true,\n      },\n    ],\n  },\n  generic: {\n    displayName: 'Generic',\n    copyToIdpLabel: DEFAULT_COPY_TO_IDP_LABEL,\n    confirmLabel: DEFAULT_CONFIRM_LABEL,\n    copyToIdpFields: [\n      {\n        label: DEFAULT_BASE_URL_LABEL,\n        scimConnectionKey: 'base_url',\n        isCopyable: true,\n      },\n      {\n        label: DEFAULT_HEADER_BEARER_TOKEN_LABEL,\n        scimConnectionKey: 'bearer_token',\n        isCopyable: true,\n      },\n    ],\n    confirmFields: [\n      {\n        label: 'SCIM userName Value',\n        value: 'Primary email address',\n      },\n    ],\n  },\n} as const satisfies Record<KnownSCIMIdp, SCIMIdpInfo>;\n\nexport const getSCIMIdpInfo = (idp: string): SCIMIdpInfo => scimIdpMap[idp as KnownSCIMIdp] ?? scimIdpMap['generic'];\n\nexport const getFieldBy = <T extends ConnectionWithBearerTokenKey>({\n  idp,\n  key,\n}: {\n  idp: string;\n  key: T;\n}): Field<T> | undefined => {\n  const { copyToIdpFields } = getSCIMIdpInfo(idp);\n  return copyToIdpFields.find(\n    (field): field is Field<T> => 'scimConnectionKey' in field && field.scimConnectionKey === key,\n  );\n};\n"],"names":["DEFAULT_COPY_TO_IDP_LABEL","DEFAULT_CONFIRM_LABEL","DEFAULT_BASE_URL_LABEL","DEFAULT_HEADER_BEARER_TOKEN_LABEL","scimIdpMap","okta","displayName","copyToIdpLabel","confirmLabel","copyToIdpFields","label","value","scimConnectionKey","isCopyable","confirmFields","cyberark","jumpcloud","onelogin","pingfederate","rippling","generic","getSCIMIdpInfo","idp","getFieldBy","key","find","field"],"mappings":"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"}